Project 3 · Budget against actual
Two systems that describe the same thing and disagree.
Projects 1 and 2 each read a single source. Most real work is not that. It is a budget and a payroll that ought to reconcile, share no usable key, count in different units, and measure populations that are not the same — where the job is not to produce a number but to work out which number the question actually wants.
Runs entirely in your browser against a cached snapshot of two City of Chicago datasets. Nothing is uploaded, nothing is stored, and no language model is involved — every figure below is computed from the data each time the page loads.
Loading the snapshot…
Source · before anything else
Two datasets, one publisher, no shared key.
Both are published by the City of Chicago. Neither was built to be joined to the other, which is the ordinary situation and the reason this stage exists.
Loading…
Stage 01 · Extract
What each side actually contains.
The budget describes funded positions. The payroll describes money that moved. Those are different things, and most of the difficulty downstream comes from that sentence being easy to skip past.
Loading…
Stage 02 · Land
The join returns nothing, and says so quietly.
This is the failure worth seeing. An inner join on the obvious keys matches zero rows — and produces an empty chart rather than an error, which is how it survives review.
Loading…
Stage 03 · Model
Deciding what a position is, and what headcount means.
Two definitions have to be pinned down before any comparison is meaningful, and neither is given by the data. Both are stated here and used consistently below.
Loading…
Stage 04 · Build
Budget beside actual, department by department.
With the join made and the units settled, the comparison is finally possible — and the most important column is the one saying how much of each department the comparison covers.
Loading…
Ask · across every stage
Including one we decline to answer.
The question this data is most often asked is the one it cannot support. Saying so is more useful than a number that would be quoted in a budget hearing.
Loading…
If this is your problem
Two systems, one number, and a meeting on Thursday.
Every organisation has a pair of systems that disagree and a report that has to reconcile them anyway. The work is rarely the join. It is knowing which of the two is answering the question you were actually asked, and being able to show why.
Tell us what's stuck — the first consultation is free, or book a time directly.