From zero to a 6-agent multi-agent system on Google's Agent Development Kit that pulls live market, clinical, competitive, and regulatory intelligence from 8 free public APIs — and synthesizes it into a board-ready Launch / Delay / Gather-Evidence / Do-Not-Launch recommendation. All inside VS Code or Antigravity.
A fully operational pharmaceutical commercial-strategy AI system — the same multi-agent architecture pattern used in enterprise decision-intelligence tools, built on Google ADK's deterministic orchestration primitives.
Every package pinned, every API contract verified live against current documentation. No "latest" — that breaks production systems and silently breaks AI-assisted ones even faster.
Understand the blueprint before you build. Every prompt in Phase 3-5 maps to one box in this diagram.
How a drug candidate becomes a board recommendation — 6 stages every run travels through.
ParallelAgent) beats an LLM-driven router: no routing logic to get wrong, no risk of an agent being skipped, and the four API-bound calls run at the same time instead of stacking latency.26 files across 6 modules. Each Build-phase prompt below creates one module completely, gated by a smoke test before the next module is allowed to begin.
Copy each prompt, paste it into VS Code (Cursor, Antigravity, Windsurf, or Claude Code), and let the AI build each layer. Complete each phase to unlock the next. The Gates are not decorative — skipping one is exactly how six agents' worth of debugging gets created later.
settings.py — not a hunt through 8 tool files. And if every tool returns a different response shape, every agent instruction has to special-case it. One shared contract removes that entirely.python tools/smoke_test_all.py prints PASS for all 8 tools. If you're tempted to skip ahead because "it'll probably work," that's exactly the instinct this Gate exists to override.nextPageToken, NOT page numbers. An absent nextPageToken means you're on the last page — not an error. An empty studies: [] array is a valid "zero matching trials" result.esearchresult.count is a STRING, cast it explicitly.response[0] is metadata, response[1] is the actual data rows. A naive response["results"] access silently breaks. Also semicolon-join multiple country codes into ONE request — never loop one-country-per-call. "value" can be JSON null — filter it out.?$filter=contains(IndicatorName,'diabetes')) — never guess codes. SpatialDim returns ISO3 codes (IND, BRA), not country names — use the static lookup dict from Phase 2, don't call yet another API for this.feedparser never raises on malformed XML — it sets a .bozo flag instead. Check it, log a warning if set, but STILL use .entries (feedparser is lenient and often extracts usable entries even from slightly malformed feeds). Don't raise on bozo=1.LlmAgent with a model, a description (for ADK's own routing/discovery), an instruction string (the actual behavior contract — explicit about which tool to call and how to branch on its status), a tools=[...] list, and an output_key (the exact session-state variable name downstream agents will read).{state_variable} name in these agents' instructions doesn't EXACTLY match the output_key string from Phase 4, the template silently fails to resolve. No crash, no error — the agent just never "sees" the upstream data. Triple-check spelling against Phase 4 before moving on.adk run / adk web CLI tooling looks for a variable named exactly root_agent in the target module. Name it anything else and the CLI simply won't find your pipeline — no helpful error, it just won't discover it.You've built a deterministic, auditable, 6-agent enterprise system — not a chatbot. Head to "All Prompts" to grab any single phase again, "Knowledge Check" to test your understanding, or "Deploy" for the run-it cheat sheet.
Every prompt from the build, in one place. Jump to any phase, copy, and paste straight into VS Code or Antigravity — no need to scroll back through "Build It."
10 questions on the architecture decisions and API gotchas that actually matter — the kind of thing that separates "it ran once" from "I understand why it works."
The cheat sheet for actually running your finished simulator — locally, in the browser, or as a one-off CLI report.
Interactive terminal session. You type the drug/indication/countries, the full 6-agent pipeline runs, and the dossier prints to your terminal.
Opens a local browser UI where you can inspect each agent's individual tool calls and state writes — the best way to debug a specific agent's behavior visually.
Runs your Phase 7 main.py — input validation included — and saves the dossier to output/executive_dossier_<drug_name>_<timestamp>.md automatically.
python -c "import google.adk" succeeds with no errorpython tools/smoke_test_all.py prints 8/8 PASS