Option A: Financial Statement Extraction Tool
Upload a financial statement PDF → get a structured, analyst-ready Excel workbook with all Income Statement line items extracted, validated, and color-coded.
- Push this repo to GitHub
- Go to render.com → New → Web Service
- Connect your GitHub repo
- Set Root Directory to
backend - Set Build Command:
pip install -r requirements.txt - Set Start Command:
uvicorn main:app --host 0.0.0.0 --port $PORT - Add Environment Variable:
- Key:
ANTHROPIC_API_KEY - Value:
sk-ant-...(your Anthropic key)
- Key:
- Deploy → copy the URL (e.g.,
https://finstat-backend.onrender.com)
- Go to vercel.com → New Project
- Import the same GitHub repo
- Set Root Directory to
frontend - Add Environment Variable:
- Key:
VITE_API_URL - Value:
https://finstat-backend.onrender.com(your Render URL from step 1)
- Key:
- Deploy → you'll get a public URL
User Browser (Vercel)
│ PDF upload
▼
FastAPI Backend (Render)
├── pdfplumber → extract text + tables from PDF
├── Section detector → find income statement pages
├── Claude claude-sonnet-4-6 → extract line items as structured JSON
├── Rule engine → arithmetic cross-checks
└── openpyxl → generate formatted Excel workbook
│
▼
.xlsx file download
| Layer | Technology |
|---|---|
| Frontend | React + Vite + Tailwind (Vercel) |
| Backend | FastAPI + Python 3.11 (Render) |
| PDF Parsing | pdfplumber |
| LLM | Anthropic claude-sonnet-4-6 |
| Output | openpyxl |
- Income Statement tab — 20 canonical line items × N years, color-coded by confidence, with source labels and page references
- Extraction Metadata tab — full audit trail
- How to Read This tab — legend and guide
- Cold start: First request ~15–30s after idle
- Max PDF: ~10MB recommended (20MB hard limit)
- 1 concurrent request
- Results not persisted — download immediately
# Backend
cd backend
pip install -r requirements.txt
ANTHROPIC_API_KEY=sk-ant-... uvicorn main:app --reload
# Frontend (separate terminal)
cd frontend
npm install
VITE_API_URL=http://localhost:8000 npm run dev