Autonomous multi-agent system that searches the public web and private enterprise archives to generate verified, cited executive dossiers.
Features • Architecture • Quick Start • Interfaces • Verification • Repository Structure
Most LLM research tools fail in corporate settings for two reasons: they hallucinate numerical claims, and they cannot cross-reference public web intelligence with private internal documentation.
OmniResearch runs an autonomous multi-agent state machine that plans investigative tracks, collects evidence from hybrid sources, audits every critical factual assertion against primary text excerpts, and exports formatted dossiers to Markdown, PDF, and DOCX.
- Multi-agent state machine. Divides research between four focused agents: Planner, Researcher, Verifier, and Writer.
- Zero-cost web search. Runs out of the box using DuckDuckGo search and clean web scraping without requiring paid search API keys. Supports Tavily and Exa adapters when configured.
- Hybrid retrieval. Ingests local corporate files (.pdf, .docx, .csv, .md) alongside live web queries.
- Automated claim verification. Matches numbers, statistics, and critical assertions against source snippets, assigning an empirical confidence score from 0 to 100%.
- Model-agnostic LLM client. Connects to Google Gemini, OpenAI, Anthropic Claude, or local Ollama instances (Llama 3.3, DeepSeek, Qwen) for air-gapped security.
- Multi-format deliverables. Exports structured dossiers to Markdown, Word (.docx), and PDF with numbered source citations.
- Dual interfaces. Provides a Streamlit web workstation and a Rich CLI for terminal workflows.
flowchart TD
User([User / Corporate Analyst]) --> Input{Input Gateway}
Input -->|Web UI| WebUI[Streamlit Workspace]
Input -->|Terminal| CLI[Typer + Rich CLI]
subgraph Agent_Orchestrator [OmniResearch State Machine]
Planner[1. Planner Agent]
Planner -->|Decomposed Hypotheses| Researcher[2. Researcher Agent]
subgraph Hybrid_Retrieval [Hybrid Retrieval Hub]
DDG[DuckDuckGo Free Search]
Tavily[Tavily / Exa API]
DocReader[Internal Docs: PDF / DOCX / CSV]
end
Researcher <--> Hybrid_Retrieval
Researcher -->|Raw Insights & Citations| Verifier[3. Fact-Checker Agent]
Verifier -->|Cross-Source Match & Confidence Audit| Verifier
Verifier -->|Verified Ground Truth| Writer[4. Executive Writer Agent]
end
WebUI <--> Agent_Orchestrator
CLI <--> Agent_Orchestrator
Writer --> Exporters[Export Engine]
Exporters --> Markdown[Markdown Dossier]
Exporters --> PDF[Executive PDF Report]
Exporters --> DOCX[Corporate Word Document]
git clone https://github.com/davinmaritza/omniresearch.git
cd omniresearch
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"Copy the example environment file:
cp .env.example .envConfigure your preferred model provider in .env (Gemini, OpenAI, Anthropic, or local Ollama):
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key_here
SEARCH_PROVIDER=duckduckgoIf no API keys are provided, OmniResearch runs with its built-in offline heuristic engine and DuckDuckGo search so you can test the entire pipeline immediately.
Launch the interactive workstation:
python -m omniresearch.cli web
# or: streamlit run src/omniresearch/web.pyThe web dashboard provides drag-and-drop document upload, live agent status telemetry, a searchable fact-check table, and 1-click downloads for Markdown, PDF, and DOCX files.
Run deep research directly from the command line:
# Research a market topic
python -m omniresearch.cli run "AI Chip Market Competitors: Nvidia vs AMD vs Custom Silicon 2026"
# Research with private local documents
python -m omniresearch.cli run "Q3 Performance Review" --docs ./data/internal_q3.pdf --export md,pdf,docx --out ./reportsTo audit system readiness and configured providers:
python -m omniresearch.cli checkUnverified figures are liabilities in business decisions. OmniResearch routes all candidate evidence through the Verifier Agent before synthesis:
- Named entity and metric extraction. Isolates numerical claims, dates, and market metrics.
- Ground-truth cross-matching. Traces claims back to raw snippet chunks or document pages.
- Confidence score assignment:
- High (>= 85%): Direct corroboration in primary evidence.
- Moderate (70% - 84%): Inferred from secondary corroboration.
- Unverified (< 70%): Flagged in the appendix table for manual analyst review.
omniresearch/
├── src/
│ └── omniresearch/
│ ├── cli.py # Typer + Rich CLI entrypoint
│ ├── web.py # Streamlit visual dashboard
│ ├── config.py # Configuration and settings schema
│ ├── core/
│ │ ├── state.py # Pydantic state models and schemas
│ │ ├── graph.py # Multi-agent state machine workflow
│ │ └── llm.py # Multi-provider LLM client adapter
│ ├── agents/
│ │ ├── planner.py # Sub-query decomposition agent
│ │ ├── researcher.py # Hybrid web and document retrieval agent
│ │ ├── verifier.py # Fact-checking and confidence scoring agent
│ │ └── writer.py # Executive dossier synthesis agent
│ ├── tools/
│ │ ├── search.py # DuckDuckGo, Tavily, and Exa search adapters
│ │ ├── document.py # PDF, DOCX, and CSV document parsers
│ │ └── scraper.py # HTML text extraction utility
│ └── exporters/
│ ├── markdown.py # Markdown report exporter
│ ├── pdf.py # ReportLab PDF generator
│ └── docx.py # Word document generator
├── tests/
│ └── test_pipeline.py # End-to-end integration test suite
├── docs/ # Architecture and enterprise documentation
├── pyproject.toml # Project manifest and dependencies
└── LICENSE # Apache-2.0 License
Run the test suite with pytest:
pytest -vApache License 2.0. See LICENSE for details.