Inspiration

I'm a chronic dropper of long-running series — Kingdom, Tower of God, One Piece, Romance of the Three Kingdoms, Star Wars Legends, the list goes on. My problem was never starting; it's returning. I forget exactly where I stopped, and every route back (wikis, Reddit, forums) is a spoiler minefield. KatchUp is the tool I wished existed at every one of those abandoned chapters: it remembers where you stopped, recaps only what you're allowed to know, and plans the shortest safe route back in.

What it does

KatchUp is a spoiler-safe catch-up companion: a Google ADK agent (Gemini 3.5 Flash on Vertex AI) fusing three knowledge planes:

  • The reader — reading telemetry (last chapter, rage-quits, time away) stored in Grafana Loki and queried at runtime through the official grafana/mcp-grafana MCP server.
  • The story — a spoiler-leveled canon store in BigQuery: every fact is tagged with the chapter it's revealed in, so recaps are provably safe (WHERE spoiler_level <= your_chapter).
  • The world — live Google Search grounding for real, ongoing series (release status, adaptations, cited sources).

A branded Streamlit frontend deploys on Cloud Run with Secret Manager and least-privilege IAM. Demo corpus: the public-domain Mahabharata, every fact written in my own words.

How I built it

Six days, end to end: repo scaffold + Grafana Cloud MCP handshake → ADK hello-world on Vertex → two data planes (BigQuery canon schema: arcs/chapters/facts/spoiler-levels; Loki telemetry seeder) → agent function-tools over both planes + MCP tool + search grounding → containerized branded UI → Cloud Run deploy with secrets and IAM.

Challenges I ran into

  1. The auth ladder. 403 (API disabled) → DefaultCredentialsError → service-account key creation blocked on free accounts → OAuth ADC. Each layer taught me that production identity is a design problem, not a setup step.
  2. Model registry churn. 1.x/2.x models sunset for new accounts; AI Studio stuck on a dead billing tier; I wrote a discovery script that tests every available model and landed on gemini-3.5-flash in global.
  3. MCP on Windows. ADK's McpToolset hung the dev UI; I replaced it with a raw MCP-client function tool (the pattern from my first Grafana handshake) — hang-proof, and it satisfies the runtime MCP requirement.
  4. Loki's ~5-day ingestion window silently dropped my "14 months ago" telemetry; I redesigned the demo telemetry around honest, recent windows.
  5. Cloud Run isn't me. The compute service account needed least-privilege grants (aiplatform.user, bigquery.user, bigquery.dataViewer) — my first real IAM design.

What I learned

A naked LLM hedges; tools + data make a product. Spoiler safety belongs in SQL, not in prompts. Local dev authenticates as you; production authenticates as a robot you must provision. And after six days of 404s, 429s and 403s: errors are just the platform teaching you its architecture.

What's next for KatchUp

When I win — and I plan to — here's where it goes: user accounts with a real sign-up flow, so telemetry becomes personal instead of seeded; richer canon ingestion (more series, more facts, cleaner spoiler-leveling); and better responses — tighter recaps, sharper pacing sense, and a TTS "recap podcast" mode for commutes.

Built With

Share this project:

Updates

Submission history