Architecture
Overview
The Deep Research Assistant is a governed AI research runtime built on Google ADK 2.0. It implements a staged epistemic pipeline: intent β scope β research perspectives β question graph β search plans β retrieved sources β evidence extraction β claim construction β contradiction analysis β coverage analysis β outline β section drafts β independent verification β approval β final report.
Unlike monolithic chatbot approaches, the systemβs fundamental unit of quality is a supported, qualified, and traceable claim β not a polished paragraph.
Workflow Topology
The workflow is a 30-node ADK 2.0 Workflow graph with branching edges for approval gates, iterative loops, and repair cycles.
START
β scope_classify (Research Director)
β perspective_generate (Perspective Planner)
β question_graph_build (Question Architect)
β approve_plan [Gate A] ββ scope_classify (reject)
β scheduler_select (Frontier Scheduler)
β search_plan_create (Query Planner)
β source_retrieve (Web Search)
β source_policy_apply (Dedup + Classify + Filter)
β evidence_extract (Evidence Curator)
β claims_construct (Claim Builder)
β knowledge_organize (Knowledge Organizer)
β contradictions_search (Counter-Evidence Agent)
β coverage_calculate (Info-Gain Metrics)
β moderator (Research Moderator)
β interventions_apply (User Interventions)
β stop_evaluate ββ scheduler_select (continue loop)
β outline_build (Outline Architect)
β approve_outline [Gate C] ββ outline_build (reject)
β draft_generate (Section Writer)
β verify_draft (Verification Agent)
β repair_draft ββ verify_draft (repair loop)
β final_gate_check [Gate D]
β render_output Component Architecture
Agent Roster (14 LLM Agents)
| Agent | Responsibility | Model |
|---|---|---|
| Research Director | Scope interpretation, mode selection | gemini-3-flash-preview |
| Perspective Planner | Generate research lenses, budget allocation | gemini-3-flash-preview |
| Question Architect | Question graph generation, follow-ups | gemini-3-flash-preview |
| Research Moderator | Stagnation detection, frontier rebalancing | gemini-3-flash-preview |
| Query Planner | Search query decomposition (10 strategies) | gemini-3-flash-preview |
| Source Appraiser | Claim-relative source authority assessment | gemini-3-flash-preview |
| Evidence Curator | Exact excerpt extraction, qualifier preservation | gemini-3-flash-preview |
| Claim Builder | Atomic claim construction, epistemic status | gemini-3-flash-preview |
| Counter-Evidence Agent | Contradiction search, independence checks | gemini-3-flash-preview |
| Knowledge Organizer | Conceptual hierarchy, concept map projection | gemini-3-flash-preview |
| Outline Architect | Report structure from validated claims | gemini-3-flash-preview |
| Section Writer | Prose from claims only, blocked-if-missing | gemini-3-flash-preview |
| Verification Agent | Citation entailment, cross-section consistency | gemini-3-flash-preview |
| Executive Synthesizer | Concise executive synthesis | gemini-3-flash-preview |
Deterministic Nodes (16 FunctionNodes)
| Node | Responsibility |
|---|---|
| scheduler_select | Priority-based frontier selection |
| source_policy_apply | Deduplication, classification, domain filtering |
| coverage_calculate | Information-gain metrics (IG_t formula) |
| stop_evaluate | Multi-condition stopping (budget, coverage, IG, deadlines) |
| contradictions_search | Claim pair comparison, resolution tracking |
| confidence_score | Authority Γ independence Γ freshness Γ corroboration |
| cluster_sources | Publisher/domain independence clustering |
| verify_draft_citations | Keyword-overlap entailment heuristics |
| repair_loop | Max 2 repair passes for blocking findings |
| budget_track | Perspective-level budget enforcement |
| scope_change_apply | Mid-run topic/perspective modifications |
Data Model
Core Entities
ResearchRun
βββ ResearchObjective (title, primary_question, decision_to_support)
βββ ResearchScope (included/excluded topics, constraints, risk_level)
βββ Perspective[] (name, purpose, required_questions, budget_weight)
βββ ResearchQuestion[] (text, type, priority, parent/child edges)
βββ SearchPlan[] (queries, source mix, stop conditions)
βββ SourceRecord[] (canonical_uri, authority_class, independence_cluster)
βββ EvidenceFragment[] (exact_excerpt, normalized_statement, confidence)
βββ Claim[] (text, atomic_form, epistemic_status, evidence_ids)
βββ Contradiction[] (claim_ids, type, resolution_status)
βββ OutlineSection[] (title, required_claim_ids, minimum_evidence)
βββ SectionDraft[] (content, cited_claim_ids)
βββ VerificationFinding[] (type, severity, claim_id)
βββ ApprovalDecision[] (gate, status, decided_at)
βββ ResearchMetrics (coverage, confidence, cost, latency) Trust Boundaries
- User β API: OAuth / API key authentication
- API β Workflow: Run-scoped identity propagation
- Agent β Tools: Policy engine evaluates
{principal, action, stage, risk}β{allow, deny, confirm} - Evidence β Claims: Data/instruction channel separation (prompt injection defense)
- Claims β Report: Citation entailment verification before rendering
- Report β Publication: Approval Gate D for external distribution
Model Routing
| Tier | Use | Model |
|---|---|---|
| Fast | Query expansion, classification, extraction | gemini-3-flash-preview |
| Reasoning | Scope, questions, claims, contradictions | gemini-3-flash-preview |
| Verification | Citation entailment, causal overreach | gemini-3-flash-preview (distinct prompt) |
The verifier uses a distinct system prompt and lower temperature from the section writer to enforce the independence rule.