Client story · Lowry Transit · 2025
The fare answer sat next to the pause
Lowry’s fare screen scrolled the price away with the map. Dwell clustering put the pause on that moving region, after the fare was already chosen. Pinning the price cut support contacts 17%.
−17%support contacts
- Capture
- Model
- Insight
- Interface
- Test
- Hold
Summary
Lowry Transit’s fare screen redrew the zone map as people moved it. The selected price lived inside the map and left the viewport. Riders paused, then wrote to support with a question the screen had already answered. Marco Voss, in fare systems, was reading notes that all said the same thing: which zone am I buying. They had already tapped it.
Pointer pauses, map drags, and the support tag for that screen were aligned to the same fare session. Dwell was clustered on the layout. The long pause sat on the map, after a price had been chosen, and it separated sessions that continued from sessions that became a contact. The hesitation heatmap is a tight cluster in the upper middle, on the zone map, not on the pay control.
The selected fare now stays in a fixed row. The map moves under it. Pay stays where it was. No second paragraph was added. Over three weeks of fare sessions, support contacts from that screen fell 17%. Completed selections rose 9%. The model’s useful output was a coordinate. The interface change was keeping that coordinate’s answer still.
A pause that looked like confusion about price
Support notes made the fare look hard. The notes asked which zone was being bought, in the language of people who did not trust the number. A reasonable product response would have been more explanation. Marco did not want that. People are on a platform. A paragraph is not a fare.
The question we took was colder. After a zone is tapped, where does the pointer rest, and does that rest predict a contact? If the pause is on the pay control, the price is the problem. If the pause is on the map after the price has scrolled away, the price is missing, not difficult. Those are different interfaces.
Pauses, drags, and the note that followed
A fare session started at the zone tap and ended at pay, abandon, or a support contact tagged to that screen. We stored pointer pauses, map drag distance, whether the price row was inside the viewport at the moment of the pause, and the support tag. Viewport membership was the feature the later design would have to change, so it had to be in the log before we argued about it.
Notes were sampled, not ingested whole. A reader coded whether the note was asking for the fare the screen had already chosen. Other complaints, delays, accessibility of stations, refunds, stayed out. The sample was the check on the tag, because tags are applied quickly and they drift.
A pause is not a pause
Dwell was clustered only after a fare tap. Map pans with no selection were excluded. People browse the network without buying, and their reading time would have painted the map hot for a reason that has nothing to do with payment. Pauses under the threshold we used for a true stop were dropped. A moving finger is not hesitation.
Contacts were joined on the session. Notes about other lines, written in the same hour by the same account, were removed before the count. One rider can have a fare question and a delay complaint. Only the fare question was allowed to indict the fare screen. Sessions that paid inside a few seconds of the tap, with no pause, were kept as the contrast class: the path that did not need help.
Dwell, clustered on the layout
The model did not try to predict revenue. It separated a pause that continued into payment from a pause that became a contact. Location on the layout was the feature that split them. Time-on-page alone did not. Two people can spend the same seconds and be doing different things, and only one of those things is “the number left.”
The cluster sat on the moving map, in the upper middle of the screen, after the price had already been chosen. Pay was quiet. That is the opposite of a hard-fare story. The heatmap shows it without a chart: a tight band of heat on the map, and emptiness on the control. Leah’s line in the room was the model’s line. The pause is a missing label, not a hard fare.
The coordinate
The hesitation heatmap is the coordinate made visible. Heat gathers where the zone map sits. The pay control does not. Once you trust the join between pause and contact, the picture is an instruction: keep the answer inside that hot region, or stop letting that region move the answer away.
A payment screen with the fare pinned
The blueprint is a payment screen, not a marketing page. Zone 2 and £4.80 sit in a fixed block. The map is an empty grid region under it, and it carries the tension, because that is where people paused. Pay £4.80 is the call to action on the same unit, unheated, because it was never the problem. Before, the price lived inside the map and scrolled. After, the map moves and the price does not. No explanatory paragraph was added. The platform constraint held.
- Quiet
- Low
- Warm
- Hot
- Tension
Payment blueprint for Lowry Transit. The fare stays fixed. Tension sits on the map, where people paused after the price scrolled away.
No paragraph
Marco offered the pin and refused the essay. Leah agreed, with a condition that became the test: if support notes for that screen do not fall, the pin is not the fix. A fixed price that people still write in about would have meant we had pinned the wrong fact.
Contacts down, completions up
The fixed fare ran against the scrolling one for three weeks of fare sessions. Support contacts from that screen were primary. Completed selection was the hold. We wanted fewer notes and more finished payments, together. Fewer notes because people gave up would have been a worse product.
Contacts fell 17%. Selections completed 9% more often. The useful output of the model was a coordinate. The change that shipped was keeping that coordinate’s answer still.
| Control | Price inside the scrolling map |
|---|---|
| Variant | Price fixed above the map |
| Sample | 3 weeks of fare sessions |
| Primary | −17% support contacts from that screen |
| Held | +9% selections completed |