A relational database and Power BI dashboard built on real NYC 311 service request data, with an automated Python and SQL pipeline behind it.
NYC's 311 line handles millions of service requests a year, everything from noise complaints to broken streetlights. Response times vary a lot by agency, borough, and complaint type, but that variation is buried in raw city data. This project turns it into something a decision maker could actually act on.
Replace this paragraph with your specific question once you've explored the data, for example: which agency misses its own response time the most, or which neighborhoods wait longest for the same complaint type.
A Python script calls the NYC Open Data (Socrata) API for 311 requests.
A scheduled GitHub Actions workflow runs that script weekly, no manual step required.
Data lands in a PostgreSQL star schema: one fact table, four dimension tables.
SQL with CTEs and window functions answers questions like agency ranking and month over month change.
Power BI connects to the database directly and models relationships, DAX measures, and the dashboard below.
Fill this in once you've run the analysis. A specific number beats a general claim, for example a percentage gap between the slowest and fastest agency, or a resolution-time trend over time.