Case Study · Power BI · PostgreSQL · API Pipeline
CRM Analytics Dashboard — From Scattered Data to Real-Time Sales Visibility
A business-facing CRM dashboard designed to track sales, appointments, conversions, and department performance — built with Power BI connected to PostgreSQL via a live API data pipeline.
Power BI
PostgreSQL
REST API
Python ETL
~60% Reporting Time Saved
The Problem
The client — a mid-sized service business with a CRM system — had no clear, centralized view of what was happening with their sales funnel. Teams depended on scattered reports, manual follow-ups, and weekly Excel sheets that took hours to compile.
- Sales team had no live view of appointments, conversions, or deal status
- Management needed 2–3 hours of manual work every Friday just to compile the weekly report
- Department performance was tracked in separate files with no unified view
- Revenue tracking was inconsistent — different people used different formulas
The Solution
I built a complete reporting pipeline: a Python script extracts CRM data from the API, cleans and loads it into PostgreSQL, and Power BI connects to the database for a fully automated, always-current dashboard.
- Python script runs on schedule — pulls data from CRM API, handles pagination and auth
- Data is cleaned, transformed, and loaded into a structured PostgreSQL database
- Power BI connects directly to PostgreSQL via DirectQuery for real-time updates
- DAX measures handle all business-logic calculations consistently
- Role-level security ensures sales reps only see their own data
What Was Built
- Executive overview page — total revenue, appointments, conversion rate, MoM growth
- Sales funnel — stage-by-stage breakdown from lead to close
- Department performance — individual and team-level KPIs side by side
- Appointment calendar view — daily/weekly booking trends
- Drillthrough pages — click any KPI to see the underlying records
Tech Stack
- Power BI Desktop + Service — Dashboard design and cloud publishing
- DAX — Revenue, conversion %, MoM growth, and custom KPI calculations
- PostgreSQL — Central analytics database with star schema design
- Python (pandas, requests, psycopg2) — API extraction and ETL pipeline
- REST API — CRM data extraction with OAuth authentication
Results
~60% reduction in manual reporting effort
What used to take 2–3 hours every Friday now happens automatically. The dashboard is always current — no manual work required.
Management can now check performance at any time from their phone or laptop. Sales reps see their own numbers in real time. Department heads have a single source of truth for KPIs.