Overview
THATSIT! is a marketplace for collectors that I co-founded, with over 400,000 cards and 2 million listings, launching in December 2026.
For a marketplace like this to work, every listing has to be linked to the right card. Asking sellers to search a catalogue of hundreds of thousands of near-identical cards by hand is slow and error-prone.
My job was to take a vision model and turn it into a dependable tool: a service that looks at a listing’s image and finds the card it shows.
How it works
Simplified architecture.
My role
As co-founder and Technical Product Lead I own the matching service and the product around it.
- Python matching service
- Image embeddings with DINOv2
- Vector search with Qdrant
- FastAPI interface for the rest of the platform
- Containerised deployment
- Product vision, roadmap and launch planning
- Sprint planning and retrospectives
- Budget, including AI and cloud running costs
How I approached it
Search instead of classify
With hundreds of thousands of cards, the problem is closer to search than to classification. Embeddings let the service compare a listing against the whole catalogue and return the closest matches.
Treat the model as one part of a service
A good model isn’t a product yet. It needs a clean API, predictable behaviour and a deployment that the rest of the platform can rely on.
Keep running costs in view
AI and cloud costs grow with every listing. I track them as part of the product, not as an afterthought.
Key decisions
- A pre-trained vision modelDINOv2 provides strong general-purpose image embeddings, which avoids training a custom model from scratch.
- A dedicated vector databaseQdrant handles fast similarity search across the full catalogue.
- A separate Python serviceMatching runs in its own container behind FastAPI, so the app and Swift backend use it like any other API.
Outcome
The marketplace has an AI matching service deployed that links listings to the right card, running in containers alongside the React Native app and the Swift backend.
What I learned
The interesting problems in applied AI are often not about the model. They are about data, interfaces, cost and how the rest of the system behaves when the model isn’t sure.