Halloran
urgentBoiler not firing
1h 30mNorthgas
Ideas, Experiments, Working builds
Most of a small business runs on steps that only exist in someone’s head and an inbox. That isn’t just slow — it’s invisible, so nothing about it can be measured, handed over or improved. Below are four of those weeks: the old way as it really looks, and a working version of the new one you can drive.


Four working prototypes
These are working prototypes, not products. The interactions are real — drive them. The businesses and names are invented, and every figure is computed from the demo in front of you rather than from a client result.
Tomorrow’s jobs go out on a printed sheet. It cannot add up, so an overbooked day only shows at 4pm.
What gets built
Where the AI is
Suggests the order to visit a run of jobs, and flags the clashes a dispatcher would only spot by reading the whole board — a long job squeezed before a hard finish time, two urgent calls in opposite directions.
It never assigns anyone. A dispatcher knows who is having a bad week and which customer asks for Marta; the board proposes, a person decides.

Fenwick Heating · 3 engineers
Monday, 4:10pm
The sheet prints at five. Nothing on it knows that Sean cannot legally touch three of tomorrow’s seven jobs, or that sending him north and back costs 45 minutes each way — so both get found out tomorrow, on the day, with a customer waiting.
Try it — assign all seven, then try to put the boiler job on Sean and watch what happens.
You’re looking at the better way — a working prototype. Tap around; it really works.
Fenwick Heating · day sheet
Tue 12 — 7 jobs
| Customer | Job | Who | ||
|---|---|---|---|---|
| Halloran1412 Delancey St | Boiler not firinggas | North | 1h 30m | |
| Pryce830 Woodgate Ave | Radiator cold at top | North | 45m | |
| Iwu88 Carling St | Annual tune-upgas | Central | 1h | |
| Bramall2 Kiln Ct | Leak under sink | Central | 40m | |
| Okonjo51 Farrier Ln | Thermostat replacement | South | 35m | |
| Vance705 Tolbury Dr | New radiator, rough-in | South | 2h | |
| Dunn2914 Spellow Rd | No hot watergas | North | 1h 15m |
Write whoever you like in the last column. Nothing adds up, travel between areas isn’t counted, and paper won’t tell you Sean isn’t licensed for gas.
Assigned
0/7
Driving
0m
nothing placed yet
Past shift end
0m
Not licensed
0
Not assigned7
Pull one down to dragTap a job, then an engineer
Press Space to pick up, left and right arrows to choose, Space to drop, Escape to cancel.
Tap a job, then tap the row it should go to — or pull it down onto them. With a keyboard, focus a job and press space. The hatched blocks are driving, counted from each engineer’s base. The red line is the end of their shift.
The same job, both ways
5 steps instead of 8.
On the sheet
8steps
On the board
5steps
What it changes
vs sheet order−2h 40m
of driving the board can take out of the same seven jobs — with nobody on a gas job they cannot legally do
The sheet sends vans across town for 2h 40m and puts 1 job on an engineer who cannot legally do it. The board’s best day keeps everyone in their own area. Build yours above and these figures become yours.
Same seven jobs. The board counts the travel, knows how long a shift is, and will not let a gas job land on an engineer who isn't registered.
This one took an afternoon. The version your staff use on a Tuesday takes longer — that is the half worth paying for.
Run a heating, plumbing or electrical business? Tell me which part of this looked like your week and I’ll tell you what a real one involves.
Tell me about your weekReply within one business day. No pitch deck, no sequence.

Northbank Studio · 1 designer
Tuesday, first coffee
One of these is a client cancelling their retainer. It is calm, polite, has no deadline and uses none of the words that catch the eye — so sorted by arrival it sits below a newsletter about fonts, and gets read on Thursday.
Try it — open Daniel Okafor's message and see what the system refuses to do with it.
You’re looking at the better way — a working prototype. Tap around; it really works.
Northbank Studio · inbox
12 unread
Getting an error page. Is this your end or ours?
Our finance team says they have no record of this. Can you resend with the PO number on it? We can’t pay it otherwise.
We’ve been passed your name twice now. Rough scope is identity plus a one-page site, budget is real but not huge. Do you have March capacity?
The one with the red packaging. Marketing prefers the blue. No rush.
Attached is your statement. $340 outstanding, due in 30 days.
Plus: our favorite portfolio sites of the month.
Do we need a separate license if we use the template for client-facing documents? Legal is asking.
Sent this twice now. We need the final assets to go to print on Friday and I’m getting nervous.
Last chance for 30% off delegate passes.
After the board review we’ve decided to bring the work in house from the end of next quarter. I’d rather talk it through than do this over email — are you around Thursday?
In your part of town next week. Would be good to catch up properly.
Your annual plan renews on the 19th. No action needed.
Newest first, every line the same weight. The one that ends a retainer looks exactly like the one about fonts.
Read all 12:8 drafts ready1 for you3 no reply
Ranked by what the message says, not when it arrived. Every reply is yours to edit or throw away before it goes.
The same job, both ways
5 steps either way — it is how they end that differs.
In the inbox
5steps
In the queue
5steps
What it changes
vs newest first#4
The message that ends a retainer, ranked by what it says. Sorted by arrival it is #10 of 12.
By time, the retainer cancellation is #10 of 12 — below the newsletters. By what it says, it is #4. That reordering is the entire product — and the one it refuses to answer is why you would trust the other eleven.
Same twelve messages. One of them ends a retainer, and the inbox has no way to say so.
This one took an afternoon. The version your staff use on a Tuesday takes longer — that is the half worth paying for.
Running a studio or agency where the inbox is the bottleneck? Tell me which part of this looked like your week and I’ll tell you what a real one involves.
Tell me about your weekReply within one business day. No pitch deck, no sequence.

Marlow Dental · 2 chairs
Tuesday, 9:40am
Both cancellations came in this morning and there are six people on the waiting list who would take them. Nothing joins those two lists together except somebody finding a spare half hour to call around, which on a Tuesday nobody has.
Try it — offer the 10:00 cancellation and see who is actually eligible for it.
You’re looking at the better way — a working prototype. Tap around; it really works.
Marlow Dental · Tuesday
2h 45m unfilled
Diary
To ring
The gaps are on the left and the people who would take them are on the right. Nothing joins the two up except someone finding a spare half hour to call around.
Chair booked
56%
Open time
2h 45m
4 gaps
Waiting list
6
want in sooner
Booked today
0
from the list
Pick a gap and it offers only the people who actually fit it — long enough, free at that time, able to come at short notice — longest waiting first.
The same job, both ways
4 steps instead of 5.
In the book
5steps
On the schedule
4steps
What it changes
vs the day as it arrived2h 45m
of empty chair the waiting list can fill today — 4 people who fit, offered in one tap each
Those are what offering every gap would do. Offer one above and the figures become your bookings instead.
Same day, same waiting list. The difference is whether anything joins the two together while there is still time to call someone.
This one took an afternoon. The version your staff use on a Tuesday takes longer — that is the half worth paying for.
Run a practice that loses appointments to cancellations? Tell me which part of this looked like your week and I’ll tell you what a real one involves.
Tell me about your weekReply within one business day. No pitch deck, no sequence.

Ash & Oak · 3 stylists
Thursday, mid-afternoon
She asked three questions — how much, how long, and when can you fit me in. The price list answers one. The honest reply is “let me check and call you back”, and a good share of those calls back never happen.
Try it — let it read her message, then watch what it refuses to decide.
You’re looking at the better way — a working prototype. Tap around; it really works.
Ash & Oak · price list
Updated March
Stylists
Rae (color) · Mo · Xan (color)
Today’s enquiry
Hi — after something a bit lighter for summer, roots are growing out and the ends are pretty fried. Not sure what that needs. Free most afternoons?
“Let me check with the stylists and call you back.”
Every price here is right. It just cannot tell you how long the whole thing takes, who is trained for it, or when they are next free — which is what the client actually asked.
Hi — after something a bit lighter for summer, roots are growing out and the ends are pretty fried. Not sure what that needs. Free most afternoons?
Services
Tap what they need — or let it read the message first.
Price, time, who is trained for it and when they are free — all from the same taps, while the client is still on the phone.
The same job, both ways
5 steps either way — it is how they end that differs.
Off the wall
5steps
On the quote
5steps
What it changes
vs the price list3 of 3
questions answered on the call, against the 1 of 3 the price list can manage
The list answers the price and nothing else. Read her message and the quote comes back as $158, 2h 35m, with a colorist free at 12:30 PM — the two answers that decide whether she books. Try it above.
Same prices either way. The difference is being able to answer while they are still on the phone.
This one took an afternoon. The version your staff use on a Tuesday takes longer — that is the half worth paying for.
Run a salon, clinic or shop that quotes over the phone? Tell me which part of this looked like your week and I’ll tell you what a real one involves.
Tell me about your weekReply within one business day. No pitch deck, no sequence.
From idea to reality
Fast enough to argue with on Tuesday, grounded enough that the rules in it are the rules of your trade.
The printed sheet, the inbox, the paper diary, the laminated price list — the real week, before any screen. Most wasted work is a confident answer to a problem described wrong.
A gas job cannot land on an unlicensed engineer. A 90-minute treatment cannot go in a 60-minute gap. The system knows its trade, because that is the part that takes the time.
Something you can drive, measured against the way it works today — then the version your staff use on a Tuesday, which is the half worth paying for.
The other demo
The four things above are not screenshots or videos. They are four working applications, running in your browser, on the same page, at the same time — and you can drive all of them.
If a page that sells one person’s time can carry four working products, the question is not whether the thing you want can be built. It is what it is worth building.
Four apps, four interaction models
Spatial drag with live recalculation, a review queue, a scheduling grid, and multi-select that reprices as you tap. Not one demo wearing four hats.
No libraries doing the hard part
The fling physics, the drag-and-drop, the scroll-driven motion on this page — hand-written. The spring integrator is sixty lines of code when you own it.
Every rule is real
A gas job cannot land on an unlicensed engineer. A 90-minute treatment cannot go in a 60-minute gap. The systems know their trade, because that is the part that takes the time.
It still reads with JavaScript off
Every exhibit renders server-side, so the whole page is there without a line of JS running. Dragging needs it; reading does not. Also true at 320px, with reduced motion, and on a five-year-old phone.
Have a workflow like this?
A prototype takes an afternoon. Finishing something — shipping it, maintaining it, keeping it live through store reviews and policy changes for years — is the expensive half, and it is the half worth hiring for.
Reply within one business day. No pitch deck, no sequence.