The missing half of 15a. A proposal shipping is only good news if the person who proposed it doesn't pay for it — so this screen exists to make the promise visible before anything moves: every field shown, every mapping named, the one lossy case surfaced rather than buried. The screen is the diff, not a progress bar.
18aField-by-field remap. Four states carry it: exact, renamed (matched on values, not labels), upgraded (a text field becoming a real log), and kept — your invented field survives as a custom field on the official type. Grading scales are the only genuinely lossy mapping, so they get their own block and a manual override.
Two calls. Migration is offered, never imposed — a borrower who downloaded someone's community type six months ago has their own habits, and a silent upgrade is a betrayal. And the 30-day reversal needs a real snapshot on disk, which is the only part of this with engineering cost worth naming.
Five features, seven screens. The import is the one that matters: it turns the app's worst problem — a shelf that costs work before it gives pleasure — into ninety seconds, using the catalogue of the one competitor we were never going to beat. The other four each attach to a meter: receipts and the value chart to the subscription, the disposal sheet to the introduction fee, the instant lane to the buyback referral. The through-line is every number carries its source, and where there is no source we show nothing rather than a confident guess.
17aWhere the import starts. Discogs is given the whole card because it's the one that will carry the launch; the honest part is the second row — what comes across, and what doesn't.
17bRunning. Three counters, because a collector wants to know the match quality, not just the progress. Ambiguous pressings queue rather than block — they still count and still show.
17cThe payoff, and the most important ninety seconds in the product. It ends by pointing at the one thing Discogs can't do — put the watches next to the records.
17dA price receipt. A range rather than a number, the sales behind it, and a source that has no match saying so out loud. This screen is the credibility argument in one view.
17eValue over time — the chart nobody else can draw, because nobody else holds the whole shelf. Unsourced types are shown as held, not quietly averaged in.
17fThe mixed disposal sheet: five objects, three types, one act. The "who sees this" block restates D29 in the place where the user is actually deciding, and the fee is flat and per-introduction.
17gThe instant lane. The app tells you not to bother listing a €14 game and shows what the alternative actually costs in weeks. Honesty here is what makes the whole sell feature trustworthy.
Three things I'd want your call on. The import needs a real answer on scope — four connectors is a quarter of work, one (Discogs) is a fortnight and covers the launch market. The €2 flat introduction fee in 17f is a placeholder: flat keeps it honest but caps upside on a €340 watch, so a banded fee may be fairer. And 17g assumes a buyback partner exists with an API — worth a phone call before it goes in the plan.
A wishlist is a collection of objects you don't own — same types, same fields, one flag. That one flag buys three things at once: a shareable hunt list, a reason for a for-sale search index, and the shape of lending from someone else's shelf. Not-yours reads as a dashed edge and no drop shadow everywhere it appears — the cheapest possible rule, and it holds from a 44px thumb to a full row.
16aThe wishlist itself. Priority and a price cap per object, and the one line that matters: three of twelve are for sale right now. Nothing here touches value, insurance or stats.
16bShared, seen by someone else — matched against their shelf. They learn what you want; they learn nothing about what you have. Owned rows get actions, the rest stay dashed and inert.
16cSearching what people will sell. The infra note is the point: the index holds offers, not shelves — an object enters when its owner marks it available and leaves when they don't.
16dThe hit. Fires only on print, grade and cap together — near misses stay silent, or the alert becomes noise and gets switched off in a week.
16eThe library idea, sketched not built: a reservation is a queued lend, so it reuses the handshake and adds only a waiting line. Marked not built on the screen itself.
Two things I'd want your call on. First: does a wishlist live inside the Shelf tab as a collection with a flag, or is it its own destination? I've built it as a collection, which keeps the tab bar at five. Second: 16c means publishing a for-sale index — that's the first piece of shared infrastructure in the app, and it's hard to take back once people are searching it.
Yes — and 14c already sets it up, because a custom type is a proposal that hasn't been sent. Two things make this work rather than become a dead suggestion box: you send the shape and never the shelf, and adopting someone's draft counts for more than voting on it.
15aThe offer, the public board, and the four-step ladder from Proposed to Shipped. Closed proposals say why — cassettes became a format option on Vinyl rather than a type.
The line I'd hold to: when a proposal ships, the proposer's objects migrate into the real type with every value intact. A contribution that costs you your own data is a tax, and nobody pays it twice.
Read off the real YAML — each row uses that type's own spine labels, its mark, its gradient, its grading scale and its two most-quoted fields. Then your two questions: mixed collections (yes) and no matching type (three routes).
14aFourteen rows, one shape — a stamp and a Porsche in the same 70px. Only the three bulk hobbies show ×N, and they're exactly the three that can't be lent as a single object.
14bMixed collections — the collection has no type, every object carries its own. Sorting falls back to the six shared fields; stats group by type, because averaging a Porsche and a stamp is a lie.
14cNo type fits — borrow the nearest, build your own field by field, or own it as a bare Thing. Custom types are YAML we haven't written yet, so a popular one becomes the next shipped type.
Sneakers is the type to design against for 14c: its own YAML says there's no usable provider, so every sneaker is entered by hand. Whatever the no-match flow becomes, one whole type lives in it permanently.
Worth saying plainly: configurability isn't a substitute for choosing. Most people never open settings, so whatever ships underneath is their bar forever. So both — a one-tap personality question that lands you on a sensible arrangement, and a real editor buried in settings for the few who care. E stays the default under all of it.
13aThe question, asked once — three profiles matching your three audiences, each showing the bar it produces. Plus the four rules that stop this from fragmenting the app.
13bThe editor — four slots, a bench of spares, and two welded positions: Shelf first, shutter centre. Muscle memory in a record shop beats anyone's preference.
The one genuinely new idea in here: the bar can drift on its own. Three loans in a month and Activity offers itself — once, dismissible, never again. That covers the people who'd benefit from a different bar but would never go looking for one.
Shelf and Scan are fixed. Seven candidates for the other three, each scored against your three audiences — hardcore, hobbyist, and the person who just wants to know what they have. A tab has to pay off for at least two of them.
12aThe pool, then three assembled bars — D the hunter's bar (Wants), E Find promoted into the bar, F the social read (People + Insights). Scroll for the audience verdicts.
Only E passes all three audiences. D locks out the casual owner; F is the most enjoyable but bets the bar on a social network that doesn't exist yet.
You're right about Lent, Stats and Me. The test I used: a tab earns its slot by being somewhere you go, not something you read. Stats is a read, Me is a drawer, and Lent is a state objects are in — not a place. Three ways out, with where each exile lands.
11aAll three side by side — A two tabs and a shutter, B Shelf · Out · Market, C no bar at all. My vote is on the screen; scroll it.
Say a letter and I'll rebuild the affected screens on it — the shelf gains a stats card or a pull-down, and the lending log gets renamed and widened to hold borrowed objects too.
Two holes in this app: the shop with no signal, and the things on your shelves that aren't yours.
10aNo signal, still working — a record-shop basement is the worst network and the place you need the app most. The barcode read; only the lookup failed, so four objects save with what you know and the questions queue.
10bBorrowed, not owned — the lending log's missing half. Dashed borders instead of solid, never in your totals, never sellable. Two years with Anne's Coltrane is the entry you'd rather not read.
The gap list I can see is empty. What's left isn't drawing — it's two decisions: which sell business (A / B / C), and whether the nudge system ships. Both want your judgement, not another screen.
Three screens the board owed, plus three the repo's TODO asks for by name: B1 (our own chrome instead of the system's), B4 (what the 3D object is actually for), and the deep-link arrival navigation.md describes but nothing draws.
9aCapturing the scan — 24 angles on a ring, 18 filled, and a coach line that says which way to walk. Eighteen is already enough, so “Good enough” is a real button, not a compromise.
9bB4, answered — the object is an inspection tool. Condition claims pin to the spot on the sleeve they describe, and the listing reuses the same object read-only. This is the case for fixing the 3D (D3) rather than re-platforming it (E2).
9cInsurance export — the one place money stops being optional, because someone else has to read it. Three valuation bases with three different totals, and the disclaimer sits on page one.
9dA shelf with two owners — both see everything, but every object belongs to exactly one of you. That tag is dead weight until the day it isn't: the split is drawn from it, and only the nine joint buys need a conversation.
9eB1 · chrome — five states of the bars in the house style: big title, scrolled, over the dark stage, inside a modal (Close, not Back), and the bottom bar with its round presenting shutter.
9fAn incoming link — collections://item/malibu?tab=market arriving as a sheet over the tab you were on. Close returns you, not the app's idea of home.
Still open: the marketplace depth (A / B / C), the nudge system, and part F's pressure test — one dense playlist screen and one magic-link sheet — which is the real test of whether this aesthetic belongs to a family or just to this app.
The gaps I flagged, plus three the log doesn't cover yet: what happens when a loan closes, who a borrower is across years, and the first hour with 482 objects already on your shelves.
8aD24 received — the link opened by someone with no app. Spinnable scan, asking price, offer button; Tom's note and what he paid never travelled.
8bD5 promote — the graded coin leaves the pile. ×12 becomes ×11 and one real item, stated in three steps so nothing feels lost.
8cThe return handshake — closing a loan asks the one question that matters (did it come back intact) and shows exactly what gets written to history.
8dA person, over years — every loan Jeff has ever had, his return rate, and an honest one-liner. The lending log turned inside out.
8eFirst hour — bring the list you already have. Nothing imported is marked confirmed, which is what makes 128 records survivable (D11).
8fAfter a sale — sold items leave the shelf and stay in the archive, so a scan in a shop can still tell you that you once owned this.
Next candidates, all unwritten in the log: the 3D capture flow itself (guided turntable pass), an insurance/valuation export, and what a collection looks like when two people share it.
7The rest of the open log — D14, D3/D15/D20, D24/D25, D5
One change reaches back into earlier turns: per D14 the swatch row is no longer an editor on the detail screen — it shows the current pressing and the picker moved into Edit, where Cancel means something. Every earlier item screenshot inherits that.
7aD14 — the display case. Actions only: Share, Edit, Lend, Sell. Drag the sleeve; the swatch is now a read-out, not a control.
7bD14 — the form it opens. Cancel / Save, spine on top, disc colour as a real choice field. The swatches work here.
7cD3 + D15 + D20 — Details rebuilt in four blocks: fixed spine, type fields with their types, logged events showing only the latest, and a structured tracklist with a runtime.
7dD24 + D25 — two payloads stated as two different acts, the include list, and the card itself. paid is off by default and says so in red.
7eD5 — a quantity-mode collection. Counts instead of rows, no lending, no selling, and the promote-to-item escape hatch spelled out at the bottom.
That closes every decision in the log that had a screen owing. Remaining gaps I can see: the promote-a-coin-to-its-own-item flow (D5), what a shared card looks like received by someone without the app (D24), and the pro/B2B desk under the D5 rules.
6Nudges — the review queue earns its own notifications
Yes — and the review queue is exactly what makes it safe, because it means every nudge can name a real unfinished object instead of begging you to come back. One rule: no specific thing to finish, no notification. No streaks, no daily goals, nothing when the queue is empty. That's the difference between a nudge and a slot machine.
6aFour nudges that earned their send — nameless photos, a three-week UNVERIFIED, a loan that became an adoption, and one milestone. Scroll for the rules and the tone control.
6bOptions gains a Nudges row, sitting with the other things you can switch off. Tap it to reach 6a.
The lending nudge is the one I'd ship first — it's the only one that's about losing something, and D15's event log already gives you the dates it needs. Tone options are Dry / Plain / Off; "Dry" is what you're reading.
Your instinct is right that it isn't the same kind of thing: barcode and photo are answers to what am I pointing at, while lookup is what happens to the shot afterwards — which is also why it carries a privacy question your other two modes don't. All three live in the app now; the Tweaks panel switches the crate screen between them.
5aThree tabs — as built. Best discovery: nobody can miss it. But it puts a network decision on the same row as two lens choices, and a car owner has to know not to tap it.
5bTwo tabs, lookup as a switch in the photo bar — honest about what it is, states the privacy consequence in words, and it's sticky. Costs you a glance to find it the first time.
5cTwo tabs, per-shot offer — every unidentified thumbnail wears IDENTIFY?. Discovery arrives at the moment it's useful, and it's opt-in per object, so the car photo simply never gets tapped. More taps if you want it on everything.
My pick: 5c as the default with 5b's switch living in Options for people who want it always-on — it gets you discovery without a tab, and per-object consent is the version that survives D13's "we may answer two days later". 5a is the one I'd drop: it's the only variant where a privacy choice is disguised as a camera mode.
4Built from the decision log — D9–D13, D22, D26, D7
Content drawn from the awkward types: comics (barcode, four printings, series/writer/publisher relations), LEGO (set number), watches (no identifier at all). Note I couldn't read the-collection from this session — no local-file access surfaced — so these follow the docs, not the Swift.
4aD9 + D12 — three add modes, and ADD TO is now a control you correct before raising the phone. Live: tap Photo.
4bD12 + D11 — photo-first for watches: the shutter is the add button, crate mode stays open, the strip fills with items that already exist in a needs-details state.
4cD11 — the review queue crate mode owes you. UNVERIFIED and NEEDS DETAILS are different flags, and each row says why it isn't confirmed.
4dD22 — the record-shop answer, unprompted: you already own Saga #1, but the 2nd printing, so this is a different item. Related rows come from the type's related: key — series, writer, publisher.
4eD13 — enrichment answering two days late. Suggested values sit above a locked block of what you typed; the sheet can't offer to overwrite it.
4fD26 + D18/D21 — tokens plus free text, and every result names what matched: a note, a brand, a single track. That's the payoff for indexing everything.
4gD7, for you to judge — the mark at tile size, then SF Symbols in the house style at 22px and 16px. Verdict at the bottom of the screen.
Still open from the log and not yet designed: D14 (detail as display case + its Edit form), D24/D25 (share card, two payloads, the paid privacy default), D3/D15/D20 (spine vs fields, event rows, structured lists), D5 (quantity types locked out of lending and selling). Say which and I'll take it next.
The style is now written down as a system in Design System — palette, type, surfaces, sticker rules, the object hero, six principles. Two of those principles come straight from your feedback: money is optional and an account is optional. Both are switches in 2h, and 2g shows the whole app with selling off.
2aItem detail now has tabs, and the disc is modelled behind the sleeve. Pick the pressing colour — splatter, marbled, coke-bottle, picture disc. Drag it in 1a.
2bDetails tab — everything the record knows about itself, including your own notes and where it physically sits.
2cHistory tab — acquisition, scans and every loan on one thread. This is the "keep an eye on it" feature.
2dStats, Collection tab — decades, genres, oldest piece, completeness, and what's missing from your catalogue. Not a euro in sight.
2eCreating a collection, step 2 — typed custom fields. Key, label and type (text / number / yes-no / list / date / photo / link / money).
2fScan, "Look it up" mode — no barcode needed; it matches the cover, box or silhouette against the web.
2gSelling switched off — the value banner becomes a count, the Market tab and Sell button disappear. Nothing else moves.
2hOptions — account optional and offline by default, selling as a switch, pro mode, per-type fields, language.
2iPro mode — same screens, palette rotated −52°. You always know which hat you're wearing. Compare with 1m.
2jPro mode on the shelf — hue shift applies app-wide, not just to dealer screens.
Try next: "open the design system as a page I can hand to a developer" · "make pro mode a real toggle inside 1a" · "add figurine + sneaker material swatches like the vinyl ones" · "design the sharing link a non-user sees"
iPhone 15 (393×852), English. Direction: collector zine — heavy display type, hard black outlines, sticker chips, one saturated colour per collection. Delicious Library's warmth without the fake wood. 1a is live: tap through it. Everything else is the same component frozen on one screen.
1aWorking prototype — tap the shelf, open Malibu, drag the 3D sleeve, lend it, scan, stats.
1bItem detail — the sleeve as a thin box: printed spine, dot-pattern front carrying artist / album / year / format, and an open right edge showing the disc colour through the gap. Special editions sparkle when you tap them.
1cOut of the house — the sharing log. What, to whom, since when, and why you let it go.
1dLend sheet — the "why" field is required by design; it's what makes the log worth reading later.
1eCollection view — the shelf. Sleeve-first grid, record peeking out, status stickers on the artwork.
1fStats — value over time, where the money sits, and a plain-language read on your lending habits.
1gScan — you flagged auto-fill as a risk, so the scan proposes matches and you confirm. Nothing saves silently.
1hAdd form — AUTO chips mark what came from Discogs; condition and price are always yours to type.
1iNew collection type — picking a type picks the field set, per your spec.
1jEmpty state — first run, before there's anything to be proud of.
1·sellThree depths for the sell side — pick one, or stage them A → B → C
1kA — Watch & link out. No transactions, no liability, ships day one. Price alerts are the hook.
1lB — C2C listing. Your 3D scan is the listing. Offers inbox, ratings, commission on sales.
1mC — Pro / B2B desk. Verified shops bid on bundles. Fewer, bigger transactions; dark chrome to signal "pro mode".
Try next: "make 1e a list view with prices" · "push 1b further on the 3D — full-screen viewer" · "drop the marketplace, keep 1k" · "show me the iPad split view" · "translate everything to French"