Overview
MyTops is a place to store what you want to watch, read, play, and eat — across every topic, in one collection. Films, series, anime, books, games, restaurants.
The premise came from a recurring evening: sitting down with my partner and spending half an hour deciding what to watch. Not for lack of ideas — the ideas arrive constantly, just never at that moment. They show up mid-commute, mid-conversation, mid-something-else, and by the time they’re needed they’re gone. The same loop repeats for where to eat and what to play.
Every topic already has its own app. That’s the problem: the collection is shattered across six of them, and each one eventually fails you the same way — the thing you want to save isn’t in its catalogue, so it can’t be saved at all. A collection that can’t hold your item is a broken collection.
The obvious fix — index the whole internet across every topic — is both impossible and not advisable. So MyTops inverts it: index only what people actually ask for. The database is a proof of concept for a catalogue built on demand by generative AI, growing one query at a time.
Challenge
No catalogue covers six unrelated topics. There is no dataset you can license that spans anime and restaurants and board games with equal quality. Stitching six vertical providers together means six integrations, six failure modes, six sets of terms — and still no answer for the item none of them carry.
Every topic has its own metadata. A film is a director, a runtime, a year. A restaurant is a cuisine, a location, a price band. A book is an author and an ISBN. A single generic item table flattens all of that into uselessness, so each topic needs its own schema and its own validation — which is exactly what makes a generic scraper insufficient.
A cache miss costs seconds of wall clock. Searching the web, fetching pages, and extracting structure is not instant. A friend who knows what the app is doing will wait. A stranger who doesn’t will assume it’s broken and leave.
It has to stay free. Free for the end user is a product commitment, which makes token cost an architectural constraint rather than a line item. Every design decision about when to call a model is also a decision about whether the project can survive its own users.
Solution
MyTops treats the database as a cache of human curiosity. Nothing is pre-indexed; everything that exists is there because somebody asked for it.
- DB-first lookup — every query hits Postgres before anything else. On a hit, the response is a normal database read, with no AI in the path at all. This is the overwhelming majority of requests once a topic has any history.
- AI research on a miss — when the item isn’t there, the pipeline runs: search and fetch through Tavily, extraction by the Claude API into the target topic’s schema, validation against that schema, then insert with a confidence score attached to the record.
- Optimistic happy path — there is no human in the write path. Waiting on review would defeat the point: the user asked for this item now. Instead, entries land immediately and users can flag anything false or wrong, which routes it to admin review. Confidence scoring plus flagging replaces gatekeeping.
- The miss becomes everyone’s hit — a structured entry created for one user is permanent and shared. The catalogue is written by its own traffic, and the cost of any given item is paid exactly once.
- Per-topic schemas — films, series, anime, books, games, and restaurants each define their own metadata and their own validation rules, so extraction targets a real shape rather than a generic bag of fields.
- Cross-topic lists — favourites and todo lists span every topic, which is the whole reason the thing exists: one place for what you want to watch, read, play, and eat.
- Sign in with Google, GitHub, or email — Supabase Auth, no bespoke credential handling.
- Supabase Edge Functions (Deno) for the pipeline, pg_cron + pg_net for background work, React 19 + TypeScript + Vite with Tailwind and shadcn/ui on the front end, deployed to Cloudflare Pages.
Outcome
- The core thesis holds. A usable cross-topic catalogue can be grown from zero by demand alone — no licensing deal, no bulk ingest, no scraping the world in advance. Ask for something that isn’t there and it exists a few seconds later, structured and permanent.
- Live and open since December 2025 — anyone can sign up and use it, free. Real usage today is me and a small group of friends, so there are no meaningful numbers to report, and pretending otherwise would misrepresent what this is.
- Latency is the honest weak point. A miss takes seconds. That’s acceptable for users who understand what’s happening behind it and unacceptable for anyone who doesn’t.
- Cost is managed by constraint, not yet by efficiency. Token spend is self-funded, so usage limits are in place to cap the downside. What’s missing is the cheaper path: bulk import of obviously-popular items, and batch expansion on a hit (found a film — pull that director’s filmography while you’re there). Without those, every query is a fresh model call, and the limits do the work that better strategy should.
- Fully open source — github.com/Zartof23/mytops.