Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,45 @@

# Internal RFP Analyst

## Agentic RAG for Cross-Corpus RFP Analysis

Tool-orchestrated Agentic RAG for requirement extraction, internal case-study matching, evidence-backed proposal generation, and post-generation grounding.

Internal RFP Analyst is a Python 3.11+ Streamlit application for analyzing uploaded target documents against an internal case-study corpus. It combines PDF ingestion, ChromaDB retrieval, a LangGraph-based orchestration runtime, deterministic specialized tools, prompt compaction, LLM synthesis, and post-generation verification with optional bounded repair.

The repository is structured as a reproducible single-user demonstration. It includes tests, evaluation runners, and deployment guidance, but it is not presented as a production-scale multi-tenant service.

## Highlights

- `:page_facing_up:` Uploaded PDFs and generated sample PDFs are kept as separate corpora.
- `:compass:` LangGraph orchestration routes search, comparison, proposal, and RFP-analysis flows.
- `:mag:` Retrieval is scope-aware across uploaded, sample, or all indexed documents.
- `:shield:` Grounding verification and bounded repair reduce unsupported claims.
- `:test_tube:` The repo includes unit/integration tests, offline smoke evals, and real KB evals.

## Tools Used

- `LangGraph` for orchestration and graph-based runtime flow
- `LangChain` for retrieval plumbing, document handling, and provider integrations
- `ChromaDB` for local vector storage
- `FastEmbed` for local embeddings
- `Streamlit` for the application UI
- `PyMuPDF` and `fpdf2` for PDF loading and synthetic PDF generation
- `Pytest` and `streamlit.testing.v1.AppTest` for regression coverage

## Tech Stack

| Layer | Technology |
| --- | --- |
| Language | Python 3.11 |
| UI | Streamlit |
| Orchestration | LangGraph |
| Retrieval | LangChain + ChromaDB |
| Embeddings | FastEmbed |
| Document Processing | PyMuPDF, fpdf2 |
| Configuration | `.env`, Streamlit Secrets |
| Testing | pytest, compile checks, evaluation runners |

## Project Overview

Internal RFP analysis needs more than document search. A user may need to treat one uploaded document as the target requirements, search internal case studies separately, identify missing details needed for a proposal, compare prior work, and generate a cited response. A basic retrieve-and-generate workflow tends to blend those roles into one context window and makes it easy to confuse target requirements with internal examples.
Expand Down
Loading