| # === Core LLM === | |
| openai>=1.40.0 | |
| pydantic>=2.7.0 | |
| tenacity>=8.2.3 # retry logic for API calls | |
| # === Document processing === | |
| pdfplumber>=0.11.0 # text-based PDFs | |
| pymupdf>=1.24.0 # fast PDF rendering + fallback text | |
| Pillow>=10.3.0 # image handling for GPT-4o vision | |
| pdf2image>=1.17.0 # convert PDF pages to images for vision | |
| # === Backend === | |
| fastapi>=0.111.0 | |
| uvicorn[standard]>=0.30.0 | |
| python-multipart>=0.0.9 # file uploads | |
| slowapi>=0.1.9 # rate limiting | |
| # === Frontend === | |
| streamlit>=1.35.0 | |
| requests>=2.32.0 | |
| # === Data + eval === | |
| pandas>=2.2.0 | |
| numpy>=1.26.0 | |
| rapidfuzz>=3.9.0 # fuzzy matching for eval | |
| scikit-learn>=1.5.0 # precision/recall/f1 | |
| datasets>=2.19.0 # HuggingFace datasets (SROIE/CORD) | |
| # === SEC filings (v2) === | |
| sec-edgar-downloader>=5.0.0 | |
| beautifulsoup4>=4.12.0 | |
| lxml>=5.2.0 | |
| # === Observability === | |
| python-dotenv>=1.0.1 | |
| loguru>=0.7.2 | |
| # === Dev / test === | |
| pytest>=8.2.0 | |
| pytest-cov>=5.0.0 | |
| pytest-asyncio>=0.23.0 | |
| httpx>=0.27.0 # async test client for FastAPI | |
| ruff>=0.4.0 | |
| black>=24.4.0 | |