๐Ÿฆ Housing Finance ยท Power BI ยท Python ยท SQL

Mortgage Program Performance Dashboard & Reporting Automation

Built an automated data pipeline and live dashboard system for Connecticut Housing Finance Authority โ€” replacing a 3โ€“4 day manual reporting process with overnight automation and real-time leadership visibility.

40%
Reporting time cut
30%
Manual review reduced
10+
Live dashboards
15+
KPIs tracked
The Problem

CHFA's finance team was producing monthly reports by manually copying data from multiple systems into Excel. This took 3โ€“4 days every single month. By the time the report reached leadership, the numbers were already outdated.

On top of that, there was no way to catch errors automatically. If something looked off in the data, nobody would know until someone spotted it manually โ€” usually after the report had already gone out.

Leadership was making decisions about mortgage programs, housing market performance, and budget allocation based on information that was days old and occasionally wrong.

The Goal

Build a system where leadership could open a dashboard and see live, accurate numbers without waiting for anyone to manually pull data. Automate the overnight data refresh, catch errors before they reached any report, and cut the reporting cycle from days to hours.

My Role

I was the data analyst assigned to this project. I owned the full pipeline โ€” connecting the data sources, writing the SQL and Python to clean and transform the data, building the Power BI dashboards, and setting up the anomaly detection alerts. I also worked directly with the finance team and program managers to make sure the dashboards showed exactly what leadership needed to see, not just what was technically available.

The Team
๐Ÿ‘”
Finance Manager
Defined which KPIs and numbers leadership needed โ€” owned the reporting requirements
๐Ÿ’ป
IT Administrator
Provided database access and managed the technical infrastructure
๐Ÿ 
Mortgage Program Manager
Explained what the mortgage data meant and validated that the numbers made sense in context
Tools & What I Used Them For
SQL Data Extraction
Wrote queries against CHFA's mortgage database to pull approvals, program spend, and housing market data. Used CTEs and window functions to handle complex month-over-month comparisons and variance calculations.
Python โ€” Pandas & NumPy Data Cleaning
Automated the data cleaning step โ€” fixing missing values, standardizing date formats, deduplicating entries, and transforming raw database output into clean, report-ready tables. Ran overnight so data was always fresh by morning.
Scikit-learn Anomaly Detection
Built a pipeline that learned what "normal" looked like for each metric โ€” mortgage amounts, program spend, approval rates. When something came in outside normal range, it flagged automatically before reaching any report.
Power BI Dashboards
Built 10+ live dashboards showing mortgage approvals by month, cost variance by program, throughput, and housing market trends across Connecticut towns. Used DAX for custom measures and Power Query for data model transformations.
Claude API Automation
Used Claude API to automate recurring narrative reports that someone previously wrote manually each week โ€” pulling the latest numbers, formatting them, and generating the written summary automatically.
GitHub Copilot Dev Productivity
Used throughout the Python and SQL development to speed up writing repetitive patterns, catch syntax issues, and document code so other team members could understand and maintain it.
Outcomes
โšก
40% reduction in reporting time. What used to take 3โ€“4 days of manual work now ran automatically overnight. Reports were ready before the team started their morning.
๐ŸŽฏ
30% less manual review time. The anomaly detection caught data issues before they reached any report, which meant the team spent far less time hunting for errors after the fact.
๐Ÿ“Š
Leadership had live dashboards. Instead of waiting a week for stale numbers, they could open Power BI and see current mortgage performance, program spend, and housing market trends at any time.
๐Ÿ”„
Reporting process became repeatable. The pipeline was documented and automated so the process didn't depend on one person's manual effort every month.
What a Typical Day Looked Like
Morning
Check overnight data refresh โ€” did it run? Any anomaly flags? If yes, investigate before the finance team's day starts.
Mid-Morning
SQL queries or Python scripts for upcoming reports. Or working through a backlog of dashboard requests from the finance team.
Afternoon
Meetings with finance team or program managers. Understanding what they need next, validating numbers, getting context on anything that looked unusual in the data.
End of Day
Update dashboards, fix any data issues that surfaced during the day, document changes so the next refresh picks them up correctly.
โ† Back to Portfolio Next Project: Jabil โ†’