Product details
The run history above, and the two-click wizard that makes a new one
The first mockup is the saved run history — every comparison that's ever been kicked off in this project, with its drift count and a copy-able ID. The second is the wizard that starts a new one: literally pick a plan from the dropdown, click Continue, and run. The cards below walk through what the drift numbers mean, why some runs are 0, how the wizard reuses everything from the plan, and where Compare fits alongside CDC and Reconcile.
The run history above
The first mockup is every comparison that's been kicked off in this project, newest at the top. Each row pairs a plan with a date, a copy-able run hash, a drift count, and a green COMPLETED pill. The eye goes straight to the drift column — most of the screen is gray zeros, and the amber numbers (6, 47, 557, 52, 104, 22) are the days a plan was diverging. The 557 is loud enough to be the reason someone opens this tab.
What 'drift' actually means
Drift is the count of rows that don't agree between source and target after Cupcake matched them by primary key. A row is drift if the target's missing it, the source's missing it, or the same key has different column values on the two sides. A zero in the DRIFT column means every row that was supposed to be on the target was there, with the right values. The amber count is a focused to-do list — there's exactly that many rows to look at.
Step 1 — Pick a plan
The second mockup is the wizard. Step 1 is a single dropdown — pick the saved Plan you want to verify. Each entry in the dropdown shows the plan name on the left and the masked source → target flow on the right, so the right one is unambiguous even when two plans share a name. The hovered entry (INVENTORY Prod → Dev in the screenshot) is the one that'd run if you clicked Continue right now.
Step 2 — Run and read the receipt
Continue and the job starts. Cupcake walks every table pair in the plan, reads rows on both sides using the column mappings you already set up, and writes back the drift count plus a per-table breakdown. The receipt lands in the history above with a fresh timestamp, a hash, and a status pill — the team can paste the hash into a ticket and anyone can find the exact run.
Why Compare reuses the plan and doesn't ask for anything else
Every other tool that wants to know 'are these rows the same?' would otherwise have to re-specify the table pairs, the keys, the column mappings, the filters. Plans already hold all of that. So Compare just borrows. The wizard is two clicks (pick plan, click run) precisely because Plans took care of everything else.
Where Compare fits next to CDC and Reconcile
CDC streams keep the target close to the source by replaying changes — but a stream can be 'running' and still be quietly behind. Compare is the periodic ground truth: run it overnight, look at the drift in the morning, and if the number is loud, run Reconcile to close the gap. The three pages are the same trio of questions in different cadences: is it caught up (CDC), did it stay caught up (Compare), and if not, fix it (Reconcile).
No new configuration
Compare reuses the Plan. Same table pairs, same column mappings, same filters — nothing to re-pick. Pick the plan from the dropdown, click Continue, and the run is on its way.
A receipt for every run
Each comparison saves a timestamp, the source → target flow it ran against, the drift count, and a short hash. The row history above is the single source of truth for 'when did we last verify, and was it clean?' — paste the hash into a ticket and anyone on the team can find the exact run.
Drift you can scan at coffee speed
The DRIFT column on the run history is the whole story in one number. Zeros mean the rows agree. The amber numbers — 6, 47, 557, 52 — are the days a plan needs a closer look. The 557 spike has a date next to it, and the receipt tells you whether the next day's run cleared it.