# botextractai/ai-crewai-multi-agent architecture

> Architecture diagram of the GitHub repository botextractai/ai-crewai-multi-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-24). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/botextractai/ai-crewai-multi-agent
- Repository: https://github.com/botextractai/ai-crewai-multi-agent

## Overview

This repository is a command-line example that produces a public-company financial analysis from SEC filings. The workflow starts with a ticker in `main.py`, runs a sequential research-then-analysis crew, and lets both agents query recent 10-K and 10-Q filings. The SEC tools download and parse filing HTML, then retrieve relevant text with embeddings and FAISS. The README also describes ratio, growth, valuation, and cash-flow analysis. Agent and task configuration paths are visible in the tree, but their contents were not sampled, so their detailed prompts and wiring are not inferred.

Main entry points: [`crew.py`](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py) (Crew builder), [`tools/sec_tools.py`](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py) (SEC search tools), [`main.py`](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/main.py) (CLI entry), [`config/agents.yaml`](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/config/agents.yaml) (Agent definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime entry"]
  node_main["CLI entry<br/>[main.py]"]
  node_report["Financial analysis"]
end

subgraph group_crew["Analysis crew"]
  node_crew_builder["Crew builder<br/>[crew.py]"]
  node_agent_config["Agent definitions<br/>[agents.yaml]"]
  node_task_config["Task definitions<br/>[tasks.yaml]"]
  node_research_task["Research task<br/>[crew.py]"]
  node_researcher["Company researcher<br/>[crew.py]"]
  node_analysis_task["Analysis task<br/>[crew.py]"]
  node_analyst["Company analyst<br/>[crew.py]"]
end

subgraph group_retrieval["SEC retrieval"]
  node_sec_tools["SEC search tools<br/>[sec_tools.py]"]
  node_filing["Filing HTML<br/>[sec_tools.py]"]
  node_html_parser["HTML partitioning<br/>[sec_tools.py]"]
  node_text_chunks["Text chunking<br/>[sec_tools.py]"]
  node_faiss[("FAISS retrieval index<br/>[sec_tools.py]")]
end

node_user(("Analyst"))
node_sec_api["SEC filings API"]
node_embeddings["OpenAI embeddings"]
node_openai["OpenAI language model"]

node_user -->|"sets ticker"| node_main
node_main -->|"starts crew"| node_crew_builder
node_crew_builder -->|"loads"| node_agent_config
node_crew_builder -->|"loads"| node_task_config
node_crew_builder -->|"registers"| node_research_task
node_crew_builder -->|"registers"| node_analysis_task
node_research_task -->|"assigned to"| node_researcher
node_analysis_task -->|"assigned to"| node_analyst
node_researcher -->|"invokes"| node_sec_tools
node_analyst -->|"invokes"| node_sec_tools
node_sec_tools -->|"queries filings"| node_sec_api
node_sec_tools -->|"downloads"| node_filing
node_filing -->|"parsed by"| node_html_parser
node_html_parser -->|"provides text"| node_text_chunks
node_text_chunks -->|"embedded by"| node_embeddings
node_text_chunks -->|"indexed in"| node_faiss
node_embeddings -->|"supports search"| node_faiss
node_sec_tools -->|"retrieves passages"| node_faiss
node_research_task -->|"passes output"| node_analysis_task
node_crew_builder -->|"configures model"| node_openai
node_crew_builder -->|"returns result"| node_report
node_main -->|"receives result"| node_report

click node_main "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/main.py"
click node_crew_builder "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py"
click node_agent_config "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/config/agents.yaml"
click node_task_config "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/config/tasks.yaml"
click node_research_task "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py"
click node_researcher "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py"
click node_analysis_task "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py"
click node_analyst "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py"
click node_sec_tools "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py"
click node_filing "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py"
click node_html_parser "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py"
click node_text_chunks "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py"
click node_faiss "https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.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_main,node_report toneBlue
class node_crew_builder,node_agent_config,node_task_config,node_research_task,node_researcher,node_analysis_task,node_analyst toneAmber
class node_sec_tools,node_filing,node_html_parser,node_text_chunks,node_faiss,node_sec_api toneMint
class node_user,node_embeddings,node_openai toneIndigo
```

## Components

### Runtime entry

- [CLI entry](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/main.py): `main.py`
- **Financial analysis**

### Analysis crew

- [Crew builder](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py): `crew.py`
- [Agent definitions](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/config/agents.yaml): `config/agents.yaml`
- [Task definitions](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/config/tasks.yaml): `config/tasks.yaml`
- [Research task](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py): `crew.py`
- [Company researcher](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py): `crew.py`
- [Analysis task](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py): `crew.py`
- [Company analyst](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/crew.py): `crew.py`

### SEC retrieval

- [SEC search tools](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py): `tools/sec_tools.py`
- [Filing HTML](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py): `tools/sec_tools.py`
- [HTML partitioning](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py): `tools/sec_tools.py`
- [Text chunking](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py): `tools/sec_tools.py`
- [FAISS retrieval index](https://github.com/botextractai/ai-crewai-multi-agent/blob/main/tools/sec_tools.py): `tools/sec_tools.py`

### Other components

- **Analyst**
- **SEC filings API**
- **OpenAI embeddings**
- **OpenAI language model**

## Connections

- Analyst → CLI entry: sets ticker
- CLI entry → Crew builder: starts crew
- Crew builder → Agent definitions: loads
- Crew builder → Task definitions: loads
- Crew builder → Research task: registers
- Crew builder → Analysis task: registers
- Research task → Company researcher: assigned to
- Analysis task → Company analyst: assigned to
- Company researcher → SEC search tools: invokes
- Company analyst → SEC search tools: invokes
- SEC search tools → SEC filings API: queries filings
- SEC search tools → Filing HTML: downloads
- Filing HTML → HTML partitioning: parsed by
- HTML partitioning → Text chunking: provides text
- Text chunking → OpenAI embeddings: embedded by
- Text chunking → FAISS retrieval index: indexed in
- OpenAI embeddings → FAISS retrieval index: supports search
- SEC search tools → FAISS retrieval index: retrieves passages
- Research task → Analysis task: passes output
- Crew builder → OpenAI language model: configures model
- Crew builder → Financial analysis: returns result
- CLI entry → Financial analysis: receives result
