Lab 03 / the badge system you ruled
Counted from the modules rather than estimated. Customers carry three statuses, enquiries six, quotations five, bookings six. Nineteen distinct labels, and they all appear in registers that sit one click apart, so they have to belong to one another.
Nineteen separate badge designs is a legend nobody learns and a maintenance job nobody wants. So the badge is built from two independent dimensions instead: fill says whether a clock is running, colour says whose move it is. Five marks, learned once, and every one of the nineteen reads exactly.
01 / the two dimensions
Fill inherits the rule you already adopted, solid for settled and hatched for open, and extends it with an outline for records where no clock is running at all. Colour is doing one job only, and it is the job an operator actually asks a register.
The rule you ruled in Lab 01, carried into every badge on the platform. Legible in a screenshot, in a print, and to eyes that do not separate hues.
Five dispositions, and every status on the platform belongs to exactly one. An operator who learns these five can read a status they have never seen before.
Every other split I tried collapsed. Grouping by record type gives four families that mean nothing to a reader. Grouping by good and bad puts "Sent" nowhere. Grouping by lifecycle position makes "Active" and "Confirmed" look identical when one is a relationship and the other is a contract. Whose move it is, is the only question that survives all nineteen and it is the question an agent actually has.
02 / all nineteen
Deep azure for ours, ochre for theirs, forest for won, brick for ended, graphite for resting. Five hues at low saturation, chosen so that a register with forty rows of badges does not look like a christmas tree, and so that a booking that is genuinely on fire can still shout above them later. The bright end of every hue is deliberately unspent, because severity, drift and breach still need somewhere louder to live.
03 / the control
This is what a screenshot, a printed report and a colour-blind reader get. Fill still carries the whole "is a clock running" dimension, so the sheet does not collapse, but "Sent" and "Qualifying" become indistinguishable without reading them. That gap is exactly what colour is buying, and it is worth knowing the size of it.
04 / the real test
Thirty-one pixel rows, unchanged from R1. The badge sits in a 17 pixel box so the row height never moves. E, Q and B have collapsed from three columns into one, because the funnel bar carries the shape and the mono numerals carry the exactness. That is two columns of width recovered, spent on making the register readable rather than longer.
| Customer | Type | Status | Last booking | Enquiry · quote · booking | Total spend | Outstanding | RSS | Agent | |
|---|---|---|---|---|---|---|---|---|---|
| Sterling Capital GroupCCN-1001 | Corporate | Active | 24 Jul 2026 | 57·53·47 | 2,453,870 | 386,720 | 9 Over-growth | Sarah Mitchell | |
| Crestview PartnersCCN-1004 | Corporate | Inactive | 22 Jul 2025 | 38·30·25 | 1,560,000 | 0 | 6 Typical | Sarah Mitchell | |
| Aurora Travel PartnersACN-3001 | Agency | Active | 23 Sep 2025 | 23·18·15 | 940,075 | 0 | 7 Strong | Emily Rodriguez | |
| Mr. Jonathan PierceICN-2007 | Individual | Active | 12 Jul 2026 | 24·18·14 | 803,465 | 56,870 | 8 Strong | James Carter | |
| *** M***** H*****ICN-2044 | *** | Withheld | *** | *** | *** | *** | *** | *** | |
| Globe OTA HoldingsACN-3009 | Agency | Prospect | 13 Jan 2026 | 22·13·8 | 58,900 | 0 | 6 Typical | Sarah Mitchell | |
| Northgate EquityCCN-1031 | Corporate | Active | 04 Jul 2026 | 9·9·7 | 46,987 | 6,090 | 7 Strong | Jessica Thompson | |
| Silverline LogisticsCCN-1040 | Corporate | Inactive | 10 Feb 2025 | 10·5·4 | 38,676 | 0 | 4 Developing | Olivia Bennett | |
| Ms. Jennifer CarterICN-2011 | Individual | Inactive | 08 Jul 2025 | 6·4·2 | 28,900 | 0 | 4 Developing | Sarah Mitchell | |
| Brooks Travel CoACN-3006 | Agency | Blacklisted | 02 Apr 2025 | 18·11·4 | 22,400 | 195 | 5 Developing | Nour Haddad | |
| Ms. Leila SaabICN-2019 | Individual | Active | 18 Dec 2025 | 9·4·4 | 10,573 | 0 | 5 Typical | Nour Haddad | |
| Vertex Trading FZECCN-1019 | Corporate | Prospect | 12 Jun 2026 | 3·3·1 | AED 25,700 | AED 17,160 | 3 At risk | Sarah Mitchell | |
| 12 of 43 shown | 219·168·131 | 5,970,846 | 449,875 |
One, badges do not cost row height: the row is still thirty-one pixels. Two, the register now scans on colour, which is what you wanted, and the eight Active and Inactive customers separate at a glance without reading a word. Three, the private row is a problem the badge system just solved by accident. It used to read three asterisks in a status column, which looks like broken data. Now it reads "Withheld" in a dimmed resting badge, which looks deliberate.
05 / the funnel as a platform primitive
You ruled it a primitive, so here is the whole family. The rule that keeps it honest: the first segment is always the whole, so the bar is a share of what came in and never of the widest bar on screen. Two funnels in different rows are directly comparable, which is the entire point.
52 pixels wide, 8 tall, fits a 31 pixel row. The default.
The same customer count, a collapsing shape. This is the read the three bare numbers never gave you.
Never nought per cent. An empty outline and three zeros, and the row sorts last in both directions.
A 4 of 4 must not read like a 38 of 40. The numerals are always beside the bar for exactly this.
Stacked on a customer profile or an enquiry overview, where there is room to label each stage.
2,224 · 1,533 · 1,079 across the whole book. The same grammar at the top of the platform.
Quoted to issued to delivered on a booking. Raised to in progress to resolved on the service desk. Invoiced to received to settled on a customer balance. Searched to attached to sold on the marketplace. Every one of those is three stages that narrow, and every one of them is currently three unrelated numbers on a row.
What I need from you