Project Story
Inspiration
Football is global, but virality is intensely local. A clip exploding in Mexico or South Africa rarely reaches a fan in Japan until it's old news. Independent sports journalists, creators, and even someone who just wants a good story for tomorrow's coffee break have no fast way to see what the whole world is reacting to — and why. We wanted an agent that does the cross-country, cross-language scouting for you and hands back something you can actually publish or talk about.
What it does
You describe what you want in plain language (any language). SoccerScope then:
- runs a semantic vector search across pre-analyzed football YouTube videos from many countries;
- reads each video's audience sentiment from comment analysis;
- surfaces cross-border moments — for example, a clip from another country that name-drops your home team; and
- writes it up in the format you pick — a Report, ready-to-post SNS/X drafts, or a shareable Web page — in English or Japanese, switchable from the top-right toggle.
The result: a journalist gets a sourced angle in seconds, an influencer gets posts to ship, and anyone gets a strong conversation starter.
How we built it
- Agent: Google's Agent Development Kit (ADK) orchestrating Gemini (
gemini-3.1-flash-lite). - Retrieval: a single custom tool embeds the query with
gemini-embedding-001(768-dim, L2-normalized) and runs MongoDB Atlas$vectorSearch. The 768-dim vector is passed by code straight to the database and never round-trips through the LLM. - Partner MCP integration: every database read goes through the official MongoDB MCP server (
find/count/collection-schema, andaggregatefor vector search) — this is the partner "superpower" wired in via MCP. - UI + serving: a custom single-page front end (EN/JA toggle, free-form prompt, output-format selector) calls a thin FastAPI backend that runs the ADK
Runner, packaged in a Python + Node container and deployed to Google Cloud Run.
Challenges we ran into
- Our first design asked the LLM to copy a 768-number vector into the next tool call. It was slow and the JSON kept breaking. We re-architected so code, not the model, carries the vector.
- The MongoDB MCP server needs Node 20+/22; Node 18 failed quietly. Passing env into the MCP subprocess wiped
PATHuntil we merged the full environment. - The nastiest bug: vector search actually worked, but the agent kept apologizing that data was "unavailable." The MCP stdio connection raised a
BrokenResourceErrorwhile closing — after a successful call — and our error handler turned a good result into an error. We now tolerate that teardown noise once a result is in hand. - Free-tier Atlas allows only three search indexes, and a deploy picked up the wrong service-account identity. Real-world friction, all of it.
Accomplishments that we're proud of
- A genuine cross-border discovery from real data, not a hallucination: a South African video reading out Japan's national team, with ~28.7M views — exactly the kind of moment this tool exists to find.
- Clean separation of concerns: the LLM reasons and writes; vectors and queries stay in code and the database via MCP. Fast and stable.
- One agent, three publish-ready outputs, two languages, behind a UI a non-developer can actually use.
What we learned
- Keep large, structured payloads (like embedding vectors) out of the LLM — let it orchestrate, not transcribe.
- MCP is a clean contract for giving an agent real superpowers, but the stdio lifecycle and the host environment (Node version, PATH, network egress) matter as much as the happy path.
- Honest "no strong signal here" beats invented buzz; we engineered the prompt to refuse to fabricate videos, stats, or quotes.
What's next for SoccerScope
- Daily auto-refresh through the World Cup: a scheduled Cloud Run Job re-ingests and re-embeds new videos every day.
- Creator/channel-level rollups for a B2B angle (brand ↔ creator fit and brand safety), reusing the same vector + MCP core.
- More countries and languages, and richer brand-safety signals derived from comment sentiment.
- System integration with the existing YouTuber service site TubuSaku
Log in or sign up for Devpost to join the conversation.