A portfolio project demonstrating financial reconciliation and variance analysis using SQL, dbt, and Python.
FinReconciler is a work-in-progress financial reconciliation pipeline that reconciles Accounts Payable (AP) invoices against General Ledger (GL) postings, identifies variance, and surfaces unmatched items for investigation.
Goal: Showcase SQL proficiency, scalable data architecture, and test automation for a portfolio.
Data: Uses realistic mock data generated with Polars that simulates real-world financial scenarios, including intentional mismatches and variance patterns to test reconciliation logic.
- Project folder structure
- Dependencies configured (DuckDB, Polars, Streamlit, Altair)
- Project documentation (CLAUDE.md, TASKS.md, skills.md)
- dbt setup
- Test data generation
- SQL models — staging layer
- SQL models — intermediate layer
- SQL models — marts layer
- dbt tests — staging level
- Streamlit dashboard
- Intermediate Models — Build transformation logic on top of the staging layer
- Mart Models — Build reconciliation and variance analysis models
- Streamlit Dashboard — Visualize reconciliation findings
| Component | Tech | Purpose |
|---|---|---|
| Database | DuckDB | Columnar OLAP for fast aggregations |
| Data Generation | Polars | Create realistic test data |
| Transformation | dbt + SQL | Data pipeline (staging → marts) |
| Frontend | Streamlit | Interactive dashboard |
| Visualization | Altair | Charts and graphs |
- Python 3.13+
- uv (dependency manager)
# Clone and navigate
git clone <repo>
cd finreconciler
# Install dependencies
uv syncfinreconciler/
├── finreconciler_dbt/ → dbt project (models, tests, macros)
├── scripts/ → Python scripts (data generation, init)
├── streamlit_app/ → Streamlit dashboard
├── data/ → Raw data and seeds
└── docs/ → Documentation
- CLAUDE.md — Project manual and guidelines
- TASKS.md — Task backlog and templates
- skills.md — Claude Code capabilities
This is a learning project for portfolio purposes. It will be updated regularly as features are added.