Inspiration

I'm addicted to my phone, and I'm not afraid to admit it. Billion-dollar corporations hire some of the smartest people in the world to engineer addiction, and the result is modern-day social media. Instagram, TikTok, and X were all taking time out of my day, hijacking my mind, and limiting my potential.

I started asking myself every time I reached for my phone: why am I doing this? Do I actually need to open Instagram right now? Most of the time, I couldn't think of a good reason.

That's when the idea hit me: make an app that only lets you into distracting apps when you have a good reason.

What it does

Lachlan blocks your apps based on rules you set. Rules can run on a schedule, enforce a daily time limit, run as a timer, cap how many times you open an app, and even block apps based on your location.

What sets Lachlan apart is what happens when you try to get into a locked app: you have to reason with him. Lachlan is an AI-powered floating padlock. Depending on the difficulty of the block and how good your reason is, he'll either let you in or tell you to kick rocks.

  • He knows your goals. You can attach your own reason to each block, and Lachlan brings it up when you try to argue your way in.
  • He remembers. He holds on to past excuses, so if you keep telling him the same thing, he'll push back.
  • He has moods. The more time you rack up in your distracting apps, the more annoyed Lachlan gets, and the harder he is to convince.

How we built it

I built the app in Swift with the help of Claude Code. The backend is small: Supabase handles analytics and proxies the AI conversations, and RevenueCat powers the paywall and subscriptions.

Challenges we ran into

Apple makes things hard with its Screen Time APIs, in two big ways.

  1. They won't tell us the name of the apps you block. Apps are exposed only as opaque tokens, so Lachlan can't say "trying to get back into Instagram, huh?" when you try to unlock one. He has to work from the rule you set and the reason you gave instead.
  2. They won't give us your actual screen time number. Apple's exact figure only exists inside a display-only sandbox we can't read from code. That made Lachlan's mood escalation tricky to build, so we needed a workaround.

Our solution: Apple can notify our app when you cross a usage threshold, in 15-minute increments. We treat each threshold as a "rung" on a ladder and use it to estimate how long you've been in your distracting apps. Lachlan's mood steps up as you climb (30 minutes, 1 hour, 2 hours, 4 hours). It's an estimate rather than an exact count, but it's enough to make him feel like he's actually watching.

Accomplishments that we're proud of

I'm really proud of how the app looks. I spent a lot of time on the UI/UX and design, and it shows.

I'm also proud of how the unlock system works. When Lachlan lets you into an app, it feels earned.

Most of all, I use Lachlan every day myself, and it has genuinely helped me lower my screen time.

What we learned

Planning makes a huge difference, and I should have spent more time on it. I was too excited to build and jumped straight into coding. I ended up building things I later had to change, and I could have saved a lot of time by planning first.

What's next for Lachlan: Screen Time Control

Now it's time to market and scale. I have a handful of users so far and have started working on UGC content. A couple of friends have been posting videos every day this past week, and I plan on ramping that up.

I plan on adding more features centered around praising the user for lowering screen time, show trends in usage, and flesh out the streaks system.

If I start turning a profit, I will be investing revenue in hiring an artist / animator for better Lachlan images.

Built With

Share this project:

Updates

Submission history