← All posts
Product · June 3, 2026 · 6 min read

An operations dashboard for QuickBooks PO automation that runs on your laptop

SideQuest v0.15.22 ships a self-contained dashboard. One command generates it. The HTML file lives on your laptop. Thirteen metrics, none of which QuickBooks Online surfaces on its own.

A distributor running SideQuest processes anywhere from ten to a hundred POs a day. You can see what landed today by listing drafts in Claude. You can see what got submitted by browsing Estimates in QuickBooks. What you cannot see, until now, is the second-order stuff that decides whether the automation is paying off: how the matcher's accuracy is trending, which customer part numbers keep showing up unmatched, how much labor cost you've recovered this period, whether the projected month-end volume will blow through your license quota.

The dashboard answers all of that in one place.

What's on it

POs processedThroughput KPI for the period
Auto-clean rateWhat share submitted without you touching them
Submitted $ valueTotal dollars on submitted estimates
AR open balanceLive from QuickBooks if AR is configured
This period vs priorReal comparison vs the equivalent prior window
Auto-clean trend30-day sparkline of daily match rate
Month-end forecastProjection from current pace; flags quota overage
Customer concentrationTop customer's share, with risk framing
Oldest draft in reviewBacklog hygiene in one number
Pipeline funnelParsed → drafted → submitted → discarded
Match qualityThree-color bar plus top review reasons
Top unmatched partsThe single best ROI section
Recent activityLast ten events with timestamps

QuickBooks Online has a reporting layer. It runs against transactions, which means none of the upstream stuff lives there. Your auto-clean rate is invisible to QBO because QBO never sees the drafts you discarded. Your customer part numbers that keep failing the matcher are invisible to QBO because QBO has no concept of an inbound PO that didn't become an Estimate. Your time saved is invisible because the alternative was a human typing line items, and QBO can't measure that.

SideQuest sees all of it. The data sits in two local SQLite files: an append-only usage log and the drafts store. The dashboard pulls from both, computes the rollups, and bakes the result into an HTML file.

The three sections that get used most

Top unmatched part numbers. If one customer puts RTX-9921-A on every PO and your QB catalog uses 9921A, the matcher fails on that part every time. Five POs a month means five drafts that need manual SKU assignment. Add a cross-reference once and the next five process clean. The dashboard ranks the customer part numbers that have failed more than once across the period, with the description and the count. Each row is a one-time fix that compounds.

Customer concentration. A distributor with one customer accounting for 60% of submitted volume is a different business than a distributor with thirty customers each contributing 3%. The math takes ten seconds; nobody does it because the report doesn't sit anywhere obvious. Now it does. Above 50% the section paints itself red and labels it "single-customer risk." Below 30% it goes green.

Month-end forecast. POs MTD divided by days elapsed, multiplied by days in the month. The projection ignores seasonality, which is fine because seasonality matters less than knowing today whether you're about to blow past your SideQuest quota. If the projection exceeds your tier's quota, a red banner suggests planning the tier upgrade before the month rolls over.

How to open it

Once the connector is installed, one command:

sidequest dashboard

The HTML file lands at ~/.qb-distributor-mcp/dashboard.html and your default browser opens to it. Re-run the command to refresh. Pass --period 7d for a tighter view, --no-open to skip the browser launch (useful if you're piping the file into an email).

The page is offline-safe. No JavaScript fetches, no external CSS, no fonts loaded from a CDN. You can move the file to a USB stick and open it on a machine that's never seen the internet. The raw underlying data sits in a collapsed JSON block at the bottom so a customer's accountant can copy it into a spreadsheet for further analysis.

What's not on it yet

Estimate-to-invoice conversion. Closing the loop on "did the estimates I shipped actually invoice" requires joining QuickBooks Invoice records back to their source Estimates via LinkedTxn. That's a real piece of reporting infrastructure. Queued for v0.15.23.

AR aging deltas. "$12,400 moved into the 30+ day bucket this week" needs yesterday's AR snapshot on disk. There's no historical store yet. The current AR section shows the present-tense aging bucket totals; the comparison-to-prior is the v0.15.23 add.

True time-series forecasting. The month-end projection uses a single ratio. Real forecasting (account for seasonality, day-of-week effects, ramp-up) needs ARIMA or similar. Worth doing if customers ask for it. Most who've asked were happy with the single-ratio version once they saw it.

One more thing

The auto-clean trend sparkline shows the thing nobody usually has visibility into: whether the matcher is getting better. A rising line means SideQuest's auto-learning loop is paying off — every time you resolve an unmatched line manually, the next instance of that part-number auto-matches. A flat line means you've already taught it the customer mappings it needs. A falling line means catalog drift or a brand-new customer that hasn't been mapped yet.

That sparkline answers a question distributors have been asking us for months: "How do I know SideQuest is learning?" Now you can see it.

Already running SideQuest? ~/.qb-distributor-mcp/venv/bin/pip install --force-reinstall ~/Desktop/sidequest-deploy/sidequest-connector-v0.15.22.zip, restart Claude Desktop, then sidequest dashboard.

Not yet? Five-minute quick-start →