GameAtlas
LiveAn AI advisor that checks a real catalogue before it recommends a game to you
Role
- Solo — product, frontend, backend, infrastructure
Timeline
- 2025 — present
Built with
- Next.js 15, TypeScript, Supabase, Vercel AI SDK, TanStack Query, shadcn/ui, Playwright, Stripe
Links

The problem
A language model will name games confidently, including ones that do not exist, are not on PC, or shipped after its training data ended. On a recommender that is not a cosmetic bug — a wrong game name looks exactly like a right one, and the entire value of the product is that its advice can be trusted.
The second problem arrived with the first users: every reply costs money, and a conversational app backed by a paid model has no natural ceiling.
What I built
Two ways in — quick picks from a couple of games you already love, or a longer conversation that builds the recommendations around your answers — plus a third for the games already sitting unplayed in a library you own.
Either way the advisor searches a real catalogue before it recommends, and tells you that it did. A reply carries how many searches it ran and how many games it weighed, and it lists what it assumed about you so any of it can be struck out and the picks rebuilt.
Around that sits the part that makes a recommendation actionable rather than merely interesting: live prices across storefronts, a hardware check that accepts your specs three ways ranked by how far each can be trusted, and a watchlist for the games that have not shipped yet.
What it will not do is fill a gap. The profile says how many of its nine signals it actually holds; a price it could not fetch says so rather than showing a stale one.




What it changed
Each figure below was read out of the repository, not estimated.
- 3
- test layers — unit, end-to-end, and model evalsVitest, Playwright, evals suite
- 4
- external APIs integrated — IGDB, RAWG, CheapShark, Twitch authadvisor tool layer
- 573
- commitsgit rev-list --count HEAD, Aj6650/game-genie main, 2026-09-08
Decisions worth explaining
01
An unverified recommendation is the whole product failing quietly
A language model will name games confidently, including ones that do not exist, are not on PC, or shipped after its training data ended. So the advisor searches IGDB before it recommends, and when those credentials are absent the tool list comes back empty and the app says outright that recommendations are unverified rather than pretending otherwise. Degrading loudly was the point: a wrong game name looks exactly like a right one.
02
Every reply costs money, so something has to bound it
A conversational app backed by a paid model has no natural ceiling — one user, one loop, and the bill is unbounded. The most recent work on this project is entirely about that: capping how many catalogue calls a single reply may make and how long it may run, pinning cheaper models to the jobs that do not need a good one, backing off when IGDB rate-limits instead of failing the search, and recording what a reply actually costs so that the question of what would reduce it has an answer other than a guess.
03
Taking the ads back out
I added AdSense, then removed it from every layer it had reached and replaced it with a support ask that appears on earned attention rather than on arrival. It was the right call on a product whose entire value is trustworthy recommendations — an advisor carrying ads invites exactly the question you least want asked about its advice.
What’s next
Cutting the first-run walkthrough down to the few steps that actually matter, and putting the AI behind an account so the cost of a reply is attached to someone.
See it for yourself
Every screenshot above is the running product rather than a mockup, and the fastest way to judge any of this is to go and ask the advisor for a game.
Built with
- Next.js 15·
- TypeScript·
- Supabase·
- Vercel AI SDK·
- TanStack Query·
- shadcn/ui·
- Playwright·
- Stripe