Demo Case Study: From 3 Messy CSV Exports to a Live Operations Dashboard
Demonstration project. "BlueWrench Plumbing Co." is a fictional company and every record in this project is synthetic, generated to mirror the real exports we see from SMB tools. We never present demo work as client work — this page exists so you can judge the output before you hire us. Every file referenced below is in this folder; you can open, run and audit all of it.
Before
BlueWrench (fictional, ~$900K/yr, 6 technicians) runs its business out of three tools that don't talk to each other. Its "reporting" is a monthly copy-paste session into a spreadsheet. The raw exports look like this:
| File | Rows | Problems |
|---|---|---|
data/jobs.csv |
1,814 | 5 different date formats, 20+ spellings of 4 service types (Repair, REPAIR, repair, Repairs…), technicians in mixed case, blank cities, currency as $1,234.56 / 1234.56 / $1234 |
data/invoices.csv |
1,710 | Duplicate exported rows, mixed date formats, inconsistent payment-method labels, trailing whitespace |
data/leads.csv |
1,507 | 6 lead sources spelled 30 ways (Adwords, google, GoogleAds…), statuses like Closed - won / booked / went with competitor, missing values |
Questions the owner could not answer without an afternoon of spreadsheet work: Which service line actually makes the money? Are we collecting what we invoice? Which lead source is worth the ad spend? Who's sitting on 90-day-old unpaid invoices?
After
One self-contained HTML file — dashboard.html — that opens in any browser,
no login, no software to install, works offline, and can be rebuilt from fresh
exports in one command.
- KPI row with period-over-period deltas and trend sparklines
- Revenue by service line, monthly, reconciled to invoiced totals
- Invoiced vs collected — the cash-flow gap, visible per month
- Lead funnel and per-source win rates — Repeat customers close at ~75%; Facebook leads at ~18%. That is an ad-budget decision made visible.
- A/R aging — ~$40K sitting 90+ days past due. For a real company, this single chart typically pays for the project.
- Date-range filtering, hover tooltips, a table view for every chart, and light/dark themes. Accessible: colorblind-validated palette, keyboard-focusable marks, values never locked behind color or hover.
Process (what we'd do for you)
- Scope (human): 20-minute call or async form — which questions must the dashboard answer, which tools hold the data.
- Ingest & clean (AI agents): parsers for each export; dates, currencies and category spellings normalized; duplicates dropped; totals reconciled against source (
build_dashboard.py— readable, auditable). - Build (AI agents): dashboard designed against a documented visualization standard (validated color palette, single-axis rule, table fallbacks).
- QA (human): a data engineer checks numbers against the raw exports, reviews definitions ("does 'revenue' mean invoiced or collected?"), and signs off.
- Deliver: the HTML file plus the rebuild pipeline. For live sources (QuickBooks, Jobber, HubSpot, Google Sheets) we schedule automatic refreshes.
Elapsed working time for this demo, end to end: under one day. That speed is the point — AI agents do the heavy lifting, a human owns the scope and the QA, and the fixed price reflects it.
Files in this folder
dashboard.html— the deliverable. Open it in a browser.data/*.csv— the messy synthetic inputsgenerate_data.py— how the synthetic mess was created (so you can verify nothing is hand-tuned)build_dashboard.py— the clean-and-aggregate pipelinedashboard_template.html— presentation layer, data injected at build time
Built by Modular Enrichment. AI-assisted delivery, human-QA'd — openly.