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.

LessLate version 1.3.0: the Set screen, the Today tab with one scheduled reminder, and the new routine editor.

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.

Role

Founder and product designer

Timeline

July 2026 to present

Team

Independent product work with AI coding agents

Platform

iOS

Role

Founder and product designer

Timeline

July 2026 to present

Team

Independent product work with AI coding agents

Platform

iOS

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.

An armed reminder with the leave time and a map of the starting area, beside the Set screen showing that another reminder is still running.

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.

Version 1.1 setup with three Pressure cards beside the simplified version 1.3.0 Set screen.

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.

The Today tab with one scheduled reminder beside the new routine editor with weekday selection.

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.