Independent iOS app
2026
LessLate
An iPhone app that helps people follow through when it is time to leave. A living case study of product decisions, testing and release iterations.

Set, Today and Routines in version 1.3.0. Screens in this case study are simulator captures rebuilt from versioned source on 6 October 2026. Device testing is described separately in the text.
Overview
A product idea from changing work schedules
LessLate grew from my work in traffic management. Sites changed across the country, and roadwork permit schedules set the times our team needed to be ready. Departure times varied from day to day, often with early starts.
I had not struggled with lateness before, but working backwards from an arrival time and a changing journey, again and again, became mentally demanding. I also saw missed alarms delay colleagues and affect the wider team.
That shaped the first product hypothesis: reduce the effort of working out when to leave, and help people follow through at that time. My own experience was the starting point for an MVP. Wider demand still needs testing.
LessLate lets someone set a leave time, or calculate one from an arrival time and destination. It sounds an alarm, then checks whether they have left their starting area and can remind them again if they have not.
Version 1.1 became the first public release on 17 September 2026, and 1.3.0 followed on 30 September. This is a living case study. The journal below holds the detailed release history.
You can also visit the LessLate website.
My role
Leading the product and an AI assisted build
I led product direction, interface and copy decisions, release scope and testing on my own iPhone. I also made the acceptance call on each device test.
I directed implementation through Codex and Claude Code. Shared project rules kept one agent editing at a time, with another reviewing the changes. The agents also helped write and maintain the project log under my direction.
Working this way brought design decisions into direct contact with permissions, location accuracy, alarm behaviour and App Store release constraints. A screen could look finished while the behaviour behind it still needed work.
Brand through the experience
My graphic design background shaped how I approached the brand. I wanted language, interactions and feedback to create a consistent feeling of support during daily use.
The MVP prioritised clear setup and an explicit action. I used a supportive tone, neutral cancellation states and progress feedback intended to recognise confirmed departures. Motion was part of that feedback direction. These choices establish an initial experience that I can refine as I learn how people use the product.
Key decisions
Making the app honest about what it knows
Turn a changing problem into a rule
Changing sites and start times had to become requirements a phone could check. The central one was the completion rule: a reminder is complete when the person has left, not when the alarm is stopped. Stopping an alarm acknowledges it, and LessLate keeps checking unless the person cancels. A cancellation is recorded as a neutral ending.
Leaving then needed a definition. Early tests narrowed the boundary from 150 metres to 50. Departure is confirmed only after two consecutive location readings, each accurate to 25 metres or better, beyond the 50 metre starting area. If location is poor or unavailable, the departure stays unconfirmed rather than being guessed. The rule favours certainty over speed.
Test the behaviour, not only the screen
In a September device test, an alarm set for a specific time was not heard. The project log identified the Lock Screen countdown as a suspected contributor, although the cause was not proven. I removed the countdown and used a separate Live Activity showing a fixed leave time. A later device test confirmed the alarm sounding at its committed time.
The first attempt at that fix compiled but could not arm an alarm on the phone. It was fixed and never uploaded.
In another test, automatic departure confirmation did not happen after a walk beyond the boundary, while a manual retry worked. The cause was a location session that was not kept across launches. After the fix, background and force quit tests on 22 September were accepted.
Record the call
Some choices were between two reasonable directions. In 1.1, routines stayed as templates because an Arrive by journey has to be measured again each time. A two screen onboarding was built, reviewed and removed in favour of asking for each permission when it is needed.
Before 1.3.0, the project log recorded a release blocker, where preparation notifications could fire after a reminder was cancelled, and its fix.
Explain limits when they matter
The interface explains when another manual reminder is already running. It also uses “Unlock Pro” because the product does not offer a free trial. These details help the person understand what will happen before they act.

Left: an armed reminder with its leave time and starting area. Right: the Set screen explains why another manual reminder cannot be set.
Evolution
Simpler setup, then automatic routines
Version 1.1 showed three “Pressure” cards alongside the time and starting location controls. In the 1.2 TestFlight iteration, I replaced them with one “Repeat reminders” row. I kept the main action within reach and changed its label to show the exact time being set. Destination selection gained a map confirmation, and a time that has already passed disables the action with an explanation.
These changes were meant to reduce decisions during setup. They reached the public app in 1.3.0. Their effect on setup completion has not been measured.

Setup in version 1.1 (left) and the simplified Set screen in version 1.3.0 (right).
The v1.1 and v1.3 setup captures have different scroll positions, so compare visible controls and wording rather than counting screens or taps.
Routines also changed direction. In 1.1 they were templates applied by hand. Version 1.3.0 introduced weekly Leave by routines that ring on selected days, and Today became the place to see what is scheduled and in progress.
Product today
Set, Today and Routines
Version 1.3.0 organises the experience into three tabs:
Set: choose a leave time. Arrive by planning adds a destination and an arrival time.
Today: see reminders that are scheduled, in progress or recorded earlier that day.
Routines: choose days and a time for regular Leave by reminders.
Once a reminder is armed, the app shows the leave time and starting area. After the alarm is stopped, it keeps checking and can repeat reminders until departure is confirmed. The person can also cancel.

Today with one scheduled reminder (left) and weekly routine configuration (right).
Learning
What I have learned and what comes next
Building LessLate taught me to separate what has been tested from what I expect to be true. Accepted device tests, including background departure detection and several routine journeys running at once, cover specific conditions and development builds. They do not establish performance for every person or environment.
How I run and improve the product
LessLate is run by one person, and its working record is the project log. It records decisions and failed checks with their dates, alongside the device tests I accepted, and marks checks not yet run as pending. For failures, it keeps what was observed separate from what was suspected, as it did for the missed alarm.
What comes next
LessLate is now publicly available, but I have not yet established demand, repeat use or retention. My next step is to test the product with a wider group of people and use that evidence to decide what to improve.
One early tester questioned the ongoing value of a subscription and suggested a more tangible reward for successful departures. It is a single perspective. I am using it to frame questions about pricing and rewards, alongside work on first use guidance.
The marketing rollout will test whether I can reach the intended audience and turn interest into repeated use.
The journal below records releases, iterations, evidence and changes in direction as the work continues.
Product Journal
Milestones from the Product Journal, newest first.
·
Version 1.3.0
LessLate 1.3.0: Today and weekly routines
Weekly Leave by routines and a Today tab changed how people set up regular journeys and see what is happening.
·
Version 1.2.0
LessLate 1.2.0: simplifying setup in TestFlight
A TestFlight iteration simplified repeat reminder controls, made the action explicit, and added checks for time and destination selection.
·
Version 1.1
LessLate 1.1: the first public release
The first public release brought the alarm and departure loop to the App Store, with arrival planning, saved trip templates and a Lock Screen display.


