Independent product, 2026
Built for the other side of the card table.
A collector and vendor workspace with AI card identification, pricing, inventory and a customer-facing QR storefront.
- Role
- Product design and full-stack implementation across the collector, vendor and event workflows.
- Stack
- Next.js, TypeScript, OpenAI vision, Supabase, PostgreSQL, Stripe
- Status
- Hosted application
Sign-in and camera features work best in the full app.
Context
At a card show, a seller needs to find a card, check a price and complete a sale while talking to a buyer. listed.cards connects that fast in-person workflow to collection management, pricing data and a public digital table.
What I did
- Built collection discovery, card detail views and a Show Table Mode with quick repricing, sale recording and undo.
- Implemented an AI scanning pipeline that extracts card identity, matches catalogue records, enriches prices and supports manual correction.
- Built a modular pricing pipeline, subscription-based feature access, public QR storefronts and card-show event workflows.
Engineering decisions
The buyer sees a different data contract.
Public storefront responses allow only buyer-facing fields. Seller floor prices, acquisition costs, profit and private notes are excluded at the data layer.
Pricing is a pipeline.
Adapters normalize results from manual overrides and external sources. Plan permissions filter available adapters, while confidence and currency remain part of the result.
A scanner needs an escape hatch.
Vision can miss a set number or confuse similar artwork. Structured extraction, catalogue matching and manual overrides keep identification recoverable.
Scope
External pricing and payment services have their own availability and account requirements. The portfolio review did not transact a sale or charge a payment.
Reviewed the pricing engine and vision route, and explored the signed-in catalogue, vendor table and public storefront. Screens show actual application views.