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-grafanaMCP 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
- 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.
- 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-flashinglobal. - 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.
- Loki's ~5-day ingestion window silently dropped my "14 months ago" telemetry; I redesigned the demo telemetry around honest, recent windows.
- 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
- agent-development-kit
- ai-agent
- bigquery
- cloud-run
- docker
- gemini
- generative-ai
- google-cloud
- grafana
- grafana-loki
- iam
- mcp
- python
- secret-manager
- sql
- streamlit
- telemetry
- vertex-ai
Log in or sign up for Devpost to join the conversation.