How choeyunbeom/finscope works
finscope ingests public-company filings, chunks and indexes them, then answers a user query through a LangGraph retrieval, analysis, and citation-review workflow. Insufficiently supported analyses can be rewritten and retried. The API coordinates ingestion and graph execution; the README also documents a Streamlit UI and optional Langfuse tracing. The graph follows the sampled API, ingestion, retrieval, and orchestration code plus documented capabilities; unsampled implementations are represented only at their supported paths.
Main entry points: ingest.py Ingestion coordinator · graph.py Workflow graph · main.py Analysis API · hybrid_retriever.py Hybrid search
Components 23
Filing ingestion
- Ingestion coordinator
src/ingestion/ingest.py - SEC EDGAR loader
src/ingestion/sec_edgar.py - Companies House loader
src/ingestion/companies_house.py - Document model
src/ingestion/base.py - Filing chunker
src/retrieval/chunker.py - Filing indexer
src/ingestion/indexer.py
Search and retrieval
- ChromaDB index
- Hybrid search
src/retrieval/hybrid_retriever.py
Analysis agents
- Retriever agent
src/agents/retriever.py - Workflow graph
src/agents/graph.py - Risk growth competitor
src/agents/analyzer.py - Citation critic
src/agents/critic.py - Query rewriter
src/agents/query_rewriter.py - Agent output schemas
src/agents/schemas.py
User interface
- Analysis API
src/api/main.py - Streamlit UI
ui/app.py
Other components
- Analyst
- Ollama embeddings
- Langfuse tracing
monitoring/langfuse_config.py - SEC EDGAR
- Companies House
- Groq LLM
- Cited analysis
Connections 28
- Analyst → Analysis API: submits query
README.md - Analysis API → Ingestion coordinator: starts ingestion
src/api/main.py - Analysis API → Workflow graph: invokes analysis
src/api/main.py - Analysis API → Langfuse tracing: traces analysis
src/api/main.py - Analysis API → Cited analysis: returns report
src/api/main.py - Ingestion coordinator → SEC EDGAR loader: loads SEC filings
src/ingestion/ingest.py - Ingestion coordinator → Companies House loader: loads accounts
src/ingestion/ingest.py - SEC EDGAR loader → SEC EDGAR: fetches filings
README.md - Companies House loader → Companies House: fetches accounts
README.md - Ingestion coordinator → Filing chunker: chunks documents
src/ingestion/ingest.py - Ingestion coordinator → Filing indexer: indexes chunks
src/ingestion/ingest.py - Ingestion coordinator → Document model: uses document model
src/ingestion/ingest.py - Filing indexer → ChromaDB index: writes chunks
src/ingestion/indexer.py - Workflow graph → Retriever agent: dispatches retrieval
src/agents/graph.py - Workflow graph → Risk growth competitor: dispatches analysis
src/agents/graph.py - Workflow graph → Citation critic: dispatches review
src/agents/graph.py - Workflow graph → Query rewriter: dispatches retry
src/agents/graph.py - Retriever agent → ChromaDB index: loads chunks
src/agents/retriever.py - Retriever agent → Hybrid search: searches query
src/agents/retriever.py - Hybrid search → ChromaDB index: queries vectors
src/retrieval/hybrid_retriever.py - Hybrid search → Ollama embeddings: requests embeddings
src/retrieval/hybrid_retriever.py - Risk growth competitor → Agent output schemas: validates output
src/agents/analyzer.py - Citation critic → Agent output schemas: validates verdict
src/agents/critic.py - Query rewriter → Agent output schemas: validates query
src/agents/query_rewriter.py - Citation critic → Groq LLM: requests review
src/agents/critic.py - Query rewriter → Groq LLM: rewrites query
src/agents/query_rewriter.py - Workflow graph → Cited analysis: completes workflow
README.md - Streamlit UI → Analysis API: uses analysis endpoint