How mohammedakramosama/smart-contract-rag-assistant works
Smart Contract Assistant is a document-grounded contract analysis application. Users upload a contract, which the API ingests into a searchable vector store; they can then ask questions or request a structured summary, with chat answers guarded and cited. The Gradio UI is documented as a separate frontend, but its API calls are not visible in the sampled source, so that relationship is shown as unverified. Evaluation and health checks are separate capabilities. Unsampled utility modules are included where the source index identifies them, without assuming they are wired into the main pipeline.
Main entry points: llm.py Model factories · retrieval.py RAG retrieval · main.py FastAPI application · routes_chat.py Chat and reset
Components 21
User interfaces
- Gradio UI
frontend/gradio_app.py
API routing
- FastAPI application
app/main.py - Health endpoint
app/api/routes_health.py - Upload endpoint
app/api/routes_upload.py - Chat and reset
app/api/routes_chat.py
Document indexing
- PDF ingestion
app/pipelines/ingestion.py - Document parsers
app/utils/file_parsers.py - Text splitting
app/utils/text_splitter.py - Chroma vector store
app/pipelines/ingestion.py
Contract analysis
- RAG retrieval
app/pipelines/retrieval.py - Contract summary
app/pipelines/summarization.py - Response evaluation
app/pipelines/evaluation.py - Answer guardrails
app/utils/guardrails.py - Citation formatting
app/utils/citations.py
Models and operations
- Model factories
app/core/llm.py - Settings
app/core/config.py - Logging
app/core/logging.py
Other components
- Contract user
- Gemini
- Ollama embeddings
- Evaluation caller
Connections 25
- Contract user → Gradio UI: uses
README.md - Contract user → FastAPI application: calls API
README.md - Gradio UI → FastAPI application: API calls
- FastAPI application → Health endpoint: mounts routes
app/main.py - FastAPI application → Upload endpoint: mounts routes
app/main.py - FastAPI application → Chat and reset: mounts routes
app/main.py - Upload endpoint → PDF ingestion: ingests file
app/api/routes_upload.py - PDF ingestion → Chroma vector store: writes chunks
app/pipelines/ingestion.py - PDF ingestion → Model factories: gets embeddings
app/pipelines/ingestion.py - Model factories → Ollama embeddings: creates embeddings
app/core/llm.py - Chat and reset → RAG retrieval: answers questions
app/api/routes_chat.py - Chat and reset → Contract summary: requests summary
app/api/routes_chat.py - RAG retrieval → Chroma vector store: searches chunks
app/pipelines/retrieval.py - RAG retrieval → Answer guardrails: checks answers
app/pipelines/retrieval.py - RAG retrieval → Citation formatting: formats sources
app/pipelines/retrieval.py - RAG retrieval → Model factories: gets model
app/pipelines/retrieval.py - Contract summary → Chroma vector store: searches excerpts
app/pipelines/summarization.py - Contract summary → Model factories: gets model
app/pipelines/summarization.py - Model factories → Gemini: creates chat model
app/core/llm.py - Model factories → Settings: reads settings
app/core/llm.py - Health endpoint → Settings: reads settings
app/api/routes_health.py - Evaluation caller → Response evaluation: evaluates response
README.md - Response evaluation → Model factories: uses model
app/pipelines/evaluation.py - Evaluation caller → Document parsers: uses parser
- Evaluation caller → Text splitting: uses splitter