The platforms were not built for UK collectors.
The gap wasn't "another marketplace." It was a marketplace where the UK is the default, not a shipping option — and where the local shop is part of the network rather than collateral damage.
On sizing: the European TCG market is roughly $1.3–1.5bn — not the "multi-billion" figure that gets thrown around. There is no clean public figure for the UK alone, and I wrote that constraint into the research doc so no deck could quietly inflate it later.
A shop owner told me I had the wrong problem.
The original bet was local game shops as a supply channel — get shops listing singles, and the marketplace has inventory on day one. Clean story. Three claims took it apart.
"a lot of these brands main issues aren't selling, its sourcing."
"our site doesn't solve the main issue that getting that product is still near impossible."
"a lot of these other game stores use singles as loss leaders to get people in the door."
I didn't accept them and I didn't dismiss them. I went and checked all three.
For hot sealed product, true and worse than he implied — Asmodee UK has frozen new independent accounts and capped existing shops while adding supermarket chains. One Cardiff retailer took ~£6,000 from one series and ~£1,000 from the next, because he sold out in hours. That's an upstream allocation problem no peer-to-peer platform can design around. For singles, it's false: there the grind is selling through at margin.
Industry-wide, singles are the high-margin profit centre — roughly 45% against 15–20% on sealed. The actual loss leaders are sealed boxes and events. His instinct about the mechanism was right; he had the two swapped. And that's the uncomfortable finding: my product was on the wrong side of it. A UK singles marketplace risks amplifying the exact price transparency that squeezed those shops in the first place.
It was PucaTrade — dead in 2021, killed by an uncapped synthetic currency plus a sender–taker imbalance. Its surviving competitor, Cardsphere, used real cashable currency. That validated a call I'd already made — no trade credit, no platform points — and turned a hunch into a documented reason.
Shops are the supply channel. "We help you sell."
Collectors are the core. Shops bring trust, buylist intake and footfall. Seed a few cities deep, not the whole UK shallow.
Honest about sample size: this was one vendor, and he volunteered that he isn't a typical shop. I wrote it up as n=1 with that caveat attached, because the value wasn't statistical — it was that one well-chosen conversation, pressure-tested against cited sources, killed a strategy three weeks of desk research had left standing.
Three users. Three dashboards.
The buyer's home is discovery — sets, trending cards, price movement. The seller's is throughput — what's listed, what sold, what needs posting today. The shop's is the counter — buylist submissions, in-store trades, footfall. Same design language, three genuinely different jobs.
Selling that doesn't cost an evening
Three routes in, because "list a card" means three things: one card with photos and condition; a bulk lot at a single price; a scan-a-stack flow for volume. Bulk got a first-class path rather than a checkbox, because "bulk is nobody's priority" was a research finding.
Buy orders instead of endless watching
Name your price and condition; the platform matches you against future listings inside a time-boxed exclusive window. It turns "check every day" into "tell us once."
One gutter per screen, enforced in code.
Every screen picks one of two geometries. List and form screens put their inset on the scroller, so content contributes nothing. Card screens put no padding on the scroller and let each card carry its own margin. The shell component owns that choice and publishes it as a CSS variable the breadcrumb and page title inherit.
It lives in code because the alternative doesn't hold. Written in a document, "screens are inset 16px" survives about a fortnight. Owned by the component, a screen physically cannot get it half-right — and when someone reaches for the wrong one, rows run to the screen edge while cards stay inset. Visible immediately.
Faithfully building a design that no longer existed.
I designed in a fast, throwaway prototype — in-browser, no build step, instant feedback — and built the real thing in Next.js and TypeScript. Two repositories. A normal setup. What I hadn't reckoned with is how fast they come apart.
Commits the prototype was ahead
Of its 82 files, touched
Pass to find it, once measured
"the previous two attempts at this were guesses from a description and both missed. Rendering the prototype's same screen side by side found it in one pass. Do that first."
Reconciling them turned up things neither a design review nor a code review would have caught alone:
The actual artefacts, live.
These are the documents the decisions were made in, embedded as they were written. Scroll them, open them, disagree with them.
Talk to the shop first, not third.
Desk research tells you the shape of a market. It does not tell you that you're solving the wrong problem for the people you planned to build on.
Treat prototype-to-production drift as a scheduled job.
Drift isn't a failure of discipline, it's a property of having two artefacts. Reconciling weekly would have caught the filter bug in an hour, not after it shipped.
Decide the geometry contract on day one.
Every screen designed before it existed needed revisiting. The ones after it cost a fraction as much.
Write down why, at the time.
54 logged decisions with their reasoning. Months later it's the difference between "why is this blue?" and a two-line answer — and it's what caught a fee figure appearing in the UI that had never been agreed.
The interface is complete across 92 screens on both breakpoints and runs as a production Next.js application. The domain model and API layer exist and are wired for a subset of flows; connecting the rest is scoped work rather than an open question. Pricing and fees are deliberately unsettled — the research established what competitors charge; what Cardconomy charges is a decision I've kept open rather than guessed at.







