Inspiration

Research is broken. Not the reading part - the planning part. When you get a topic to research, the hardest work is invisible: figuring out what to read, tracking what's already covered, spotting what's missing, and deciding what to chase next. That planning work lives entirely in your head, and no tool really helps with it. I wanted to build something that actually does the heavy lifting - not just summarizes documents, but plans, investigates, judges its own work, and acts.

What it does

Scout is an autonomous multi-agent research system. You give it a topic and an email. It:

  • Plans : a Planner agent breaks the topic into 4–6 focused research angles (background, evidence, counterarguments, practical implications)
  • Researches : parallel Researcher agents search the web and score every source using a hybrid credibility system (LLM judgment + rule-based domain classification)
  • Judges : a Judge agent merges findings into a persistent knowledge map, flags gaps, and recommends next actions
  • Expands autonomously : without being asked, Scout identifies its weakest gap and researches it on its own
  • Delivers : tasks pushed to Notion, a Google Doc briefing auto-generated, a summary email sent with the doc link
  • Repeats : Cloud Scheduler triggers Scout daily, re-running and expanding the knowledge map with no human input

How I built it

Scout uses Google ADK 2.7.1 to orchestrate three specialized agents - Planner, Researcher, and Judge - each with its own prompt, tools, and responsibility. Gemini 3.5 Flash via Vertex AI powers all three agents. Firestore acts as the central persistent state store, allowing the knowledge map to accumulate across runs rather than starting from scratch. The FastAPI backend runs on Cloud Run, with an async job pattern (returning job IDs immediately, running the pipeline in the background) to handle Cloud Run's request timeout limits. Cloud Scheduler triggers autonomous daily re-runs. Notion, Google Docs, and Gmail integrations are wired in via their respective APIs, firing automatically at the end of every pipeline run.

Challenges I ran into

  • Multi-agent state management : ADK agents don't share memory; Firestore as a shared ledger was the solution
  • Cloud Run timeout vs pipeline duration : a full run takes 4–5 minutes; async job pattern with immediate job ID response solved this
  • Gemini's built-in search grounding is not available on the free tier for Gemini 3.5 Flash : switched to DDGS with a custom credibility scoring layer, which ultimately gave more control over the pipeline
  • Concurrent researcher agents triggered rate limits : capping at 2 concurrent with retry logic and backoff resolved this
  • OAuth tokens on Cloud Run : token.pickle persistence across ephemeral container instances required careful handling

Accomplishments that I am proud of

  • The autonomous gap expansion : Scout researches its own weakest angle unprompted. That's the moment it stops being a chatbot and becomes an agent
  • The hybrid credibility scoring system : LLM judgment combined with rule-based domain classification produces defensible, consistent scores
  • The full cross-app autonomous chain : one trigger produces a Notion board update, a Google Doc, and an email, with zero manual steps in between
  • A genuinely useful tool : Scout has already produced research briefings I've actually used

What I learned

"Autonomous" is a spectrum. Scout is autonomous after the trigger. Making it genuinely event-driven required Cloud Scheduler - that one addition is what pushes it from a very good research chatbot to a real agent. State management is everything in multi-agent systems. And the gap between flagging a problem and acting on it is the difference between an assistant and an agent.

What's next for Scout

  • Secret Manager for proper credentials handling
  • Cross-topic pattern detection - flagging when the same source appears across multiple research projects with conflicting claims
  • A "devil's advocate" agent pass that actively searches for sources contradicting the strongest claim in the knowledge map

Built With

Share this project:

Updates

Submission history