# aianytime/agentic-rag-with-fde-mindset architecture

> Architecture diagram of the GitHub repository aianytime/agentic-rag-with-fde-mindset, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aianytime/agentic-rag-with-fde-mindset
- Repository: https://github.com/aianytime/agentic-rag-with-fde-mindset

## Overview

This is a policy and contract intelligence application: users ask questions over a synthetic corpus of Medicaid agreements, Medicare guidance, and federal regulations. The agent plans constrained searches, retrieves and grades evidence, checks document coverage, synthesizes and verifies an answer, and can escalate rather than return an unsafe result. CLI and Streamlit provide user entry points; naive RAG and golden-set evaluation support comparison. Source excerpts are partial, so links for unsampled integrations are included only where the README documents them.

Main entry points: [`agentic_rag/loop.py`](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/loop.py) (Agent Loop), [`agentic_rag/cli.py`](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/cli.py) (CLI), [`agentic_rag/baseline.py`](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/baseline.py) (Naive RAG), [`agentic_rag/llm.py`](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/llm.py) (Model Gateway)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User Experience"]
  node_cli["CLI<br/>[cli.py]"]
  node_ui["Stakeholder UI<br/>[app.py]"]
end

subgraph group_corpus["Corpus Pipeline"]
  node_corpus_source["Policy Corpus"]
  node_builder["Corpus Builder<br/>[build_corpus.py]"]
  node_ingest["Clause Ingestion<br/>[ingest.py]"]
  node_qdrant[("Qdrant Index")]
end

subgraph group_agent["Agent Runtime"]
  node_loop["Agent Loop<br/>[loop.py]"]
  node_harness["Tool Harness<br/>[harness.py]"]
  node_retrieve["Hybrid Retrieval<br/>[retrieve.py]"]
  node_baseline["Naive RAG<br/>[baseline.py]"]
  node_llm["Model Gateway<br/>[llm.py]"]
end

subgraph group_state["Memory and Audit"]
  node_memory[("Conversation Memory<br/>[memory.py]")]
  node_observability["Run Observability<br/>[observability.py]"]
  node_ledger["JSONL Ledger"]
end

subgraph group_quality["Evaluation"]
  node_evals["Golden Evaluations<br/>[evals.py]"]
end

node_user(("Questioner"))
node_model_service{{"OpenAI-compatible API"}}
node_phoenix{{"Phoenix Tracing"}}
node_human(("Human Reviewer"))

node_user -->|"asks via"| node_cli
node_user -->|"asks via"| node_ui
node_cli -->|"runs agent"| node_loop
node_cli -->|"runs baseline"| node_baseline
node_cli -->|"starts ingest"| node_ingest
node_cli -->|"runs evals"| node_evals
node_ui -->|"asks agent"| node_loop
node_ui -->|"runs baseline"| node_baseline
node_builder -->|"writes documents"| node_corpus_source
node_ingest -->|"reads documents"| node_corpus_source
node_ingest -->|"requests embeddings"| node_llm
node_llm -->|"calls model"| node_model_service
node_ingest -->|"writes chunks"| node_qdrant
node_loop -->|"dispatches tools"| node_harness
node_loop -->|"plans grades writes"| node_llm
node_loop -->|"uses context"| node_memory
node_harness -->|"runs search"| node_retrieve
node_harness -->|"scans coverage"| node_qdrant
node_retrieve -->|"embeds query"| node_llm
node_retrieve -->|"queries index"| node_qdrant
node_baseline -->|"gets top-k"| node_retrieve
node_baseline -->|"writes answer"| node_llm
node_cli -->|"reads and updates"| node_memory
node_loop -->|"records run"| node_observability
node_baseline -->|"records run"| node_observability
node_llm -->|"meters calls"| node_observability
node_observability -->|"writes records"| node_ledger
node_observability -.->|"exports traces"| node_phoenix
node_evals -->|"scores baseline"| node_baseline
node_evals -->|"scores agent"| node_loop
node_loop -->|"escalates cases"| node_human

click node_cli "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/cli.py"
click node_ui "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/ui/app.py"
click node_corpus_source "https://github.com/aianytime/agentic-rag-with-fde-mindset/tree/main/agentic_rag/corpus"
click node_builder "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/build_corpus.py"
click node_ingest "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/ingest.py"
click node_loop "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/loop.py"
click node_harness "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/harness.py"
click node_retrieve "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/retrieve.py"
click node_baseline "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/baseline.py"
click node_llm "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/llm.py"
click node_memory "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/memory.py"
click node_observability "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/observability.py"
click node_evals "https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/evals.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_ui,node_human toneBlue
class node_corpus_source,node_builder,node_ingest,node_qdrant toneAmber
class node_loop,node_harness,node_retrieve,node_baseline,node_llm,node_model_service toneMint
class node_memory,node_observability,node_ledger toneRose
class node_evals,node_user,node_phoenix toneIndigo
```

## Components

### User Experience

- [CLI](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/cli.py): `agentic_rag/cli.py`
- [Stakeholder UI](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/ui/app.py): `ui/app.py`

### Corpus Pipeline

- [Policy Corpus](https://github.com/aianytime/agentic-rag-with-fde-mindset/tree/main/agentic_rag/corpus): `agentic_rag/corpus`
- [Corpus Builder](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/build_corpus.py): `agentic_rag/build_corpus.py`
- [Clause Ingestion](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/ingest.py): `agentic_rag/ingest.py`
- **Qdrant Index**

### Agent Runtime

- [Agent Loop](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/loop.py): `agentic_rag/loop.py`
- [Tool Harness](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/harness.py): `agentic_rag/harness.py`
- [Hybrid Retrieval](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/retrieve.py): `agentic_rag/retrieve.py`
- [Naive RAG](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/baseline.py): `agentic_rag/baseline.py`
- [Model Gateway](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/llm.py): `agentic_rag/llm.py`

### Memory and Audit

- [Conversation Memory](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/memory.py): `agentic_rag/memory.py`
- [Run Observability](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/observability.py): `agentic_rag/observability.py`
- **JSONL Ledger**

### Evaluation

- [Golden Evaluations](https://github.com/aianytime/agentic-rag-with-fde-mindset/blob/main/agentic_rag/evals.py): `agentic_rag/evals.py`

### Other components

- **Questioner**
- **OpenAI-compatible API**
- **Phoenix Tracing**
- **Human Reviewer**

## Connections

- Questioner → CLI: asks via
- Questioner → Stakeholder UI: asks via
- CLI → Agent Loop: runs agent
- CLI → Naive RAG: runs baseline
- CLI → Clause Ingestion: starts ingest
- CLI → Golden Evaluations: runs evals
- Stakeholder UI → Agent Loop: asks agent
- Stakeholder UI → Naive RAG: runs baseline
- Corpus Builder → Policy Corpus: writes documents
- Clause Ingestion → Policy Corpus: reads documents
- Clause Ingestion → Model Gateway: requests embeddings
- Model Gateway → OpenAI-compatible API: calls model
- Clause Ingestion → Qdrant Index: writes chunks
- Agent Loop → Tool Harness: dispatches tools
- Agent Loop → Model Gateway: plans grades writes
- Agent Loop → Conversation Memory: uses context
- Tool Harness → Hybrid Retrieval: runs search
- Tool Harness → Qdrant Index: scans coverage
- Hybrid Retrieval → Model Gateway: embeds query
- Hybrid Retrieval → Qdrant Index: queries index
- Naive RAG → Hybrid Retrieval: gets top-k
- Naive RAG → Model Gateway: writes answer
- CLI → Conversation Memory: reads and updates
- Agent Loop → Run Observability: records run
- Naive RAG → Run Observability: records run
- Model Gateway → Run Observability: meters calls
- Run Observability → JSONL Ledger: writes records
- Run Observability → Phoenix Tracing: exports traces
- Golden Evaluations → Naive RAG: scores baseline
- Golden Evaluations → Agent Loop: scores agent
- Agent Loop → Human Reviewer: escalates cases
