Case study in progress
PRODUCT DESIGNAI-ASSISTED DEVELOPMENTiOS DESIGN SYSTEM2026

From sketchbook to the App Store in four weeks

The Lulu logo — an orange sitting puppy whose body and tail form the letter L, on a warm yellow background.
Role
Sole designer & developer
Duration
4 weeks
Outcome
Confident puppy owners
Get it

Raising a puppy is as much about an owner as it is about a puppy. I needed a tool to be a better puppy parent.


The tool. Feature by feature

Things that you need at your fingertips

Sleep, potty training and food are the most important things. These are the three things I focused on in this app. From giving information on the Today tab, what and when, to logging. This information should be as accessible and easy to log as possible.

Lulu's Today screen: tiles for sleep, last toilet trip and meals, current activity timers, and one-tap quick-log buttons.
Today — the day at a glance.

Logging. Logging. Logging.

I tested several apps. Logging felt like the biggest friction. So I utilised iOS's features like widgets and Live Activity to make it as easy as possible to create a log for sleeping, toilet or feeding.

Log toilet from the lock screen.

1 / 6

Planning the day

Good routine, enough sleep and a lot of socialization is the key for the happy puppy. This requires good planning. I added a calendar feature that helps puppy's parents to succeed.

Lulu's calendar in day view — planned and completed toilet, feeding, training and sleep events on one timeline.
The shared calendar, day view.

Co-parenting

Our pup has two parents. So the app allows co-parenting. I went further and made sure that whatever one parent did, the other parent can stay informed, so that they don't have to feed twice, run up and down the stairs for a toilet that the puppy doesn't need, or just stay updated if they want to.

Inviting a co-parent — one code, equal access.

1 / 2

Feeding the beast

Overfeeding and especially underfeeding can be harmful to little pups. The feeding calculator feature allows you to calculate how many calories your pup should consume during the day. In addition, you can compile a daily menu consisting of different things and decide what is the part of meals and what is just snacks during the day.

From weight and life stage to grams per meal.

Tracking the progress

It is fun to see the progress, so users can see the progress if they want to. Easily accessible, but not used to shame or pressure puppy parents.

Lulu's potty-training statistics — weekly share of toilet trips made outside versus indoor accidents, with reassuring guidance.

House-training, week over week.

1 / 3

Alone training, in small, kind steps

Alone training is important both for the puppy and parents. The puppy should be able to relax and calm on their own. The parents will eventually have to go to work. I conducted thorough research and created a guided training that helps both the pup and the parent, with the rules that would never harm the pup.

Setting up the alone-training program.

Notifications

Nudges, not noise

Every notification in Lulu is opt-in, per person and per puppy. Planned reminders you set yourself, toilet nudges, co-parent updates and training practice windows can each be switched on, off, or pointed at just one parent. In addition a set of calm rules always applies: quiet hours silence everything, a sleeping puppy is never nudged, and reminders keep at least 15 minutes apart. The goal is to help the household, not add to stress.

The four kinds of Lulu notifications, each with its own on/off switch: a planned feeding reminder with Done, Snooze and Skip actions; a toilet nudge with Log pee, Log poo and Log both actions; a silent co-parent update reading 'Joe logged a pee and a poo outside'; and a training practice prompt, switched off. Below them, the always-on calm rules: quiet hours, a sleeping puppy is never nudged, reminders keep 15 minutes apart, and each parent picks what they receive.
Four kinds of notifications, one switch each — and the calm rules on top.

Potty training is hard. I made an extra effort to help the users avoid accidents indoors. Lulu learns the puppy's rhythm from what you log: wake-ups, meals, the last trip out. The app suggests going outside just before it's likely needed. A logged break earns quiet, and as the puppy grows, the nudges back off on their own.


The workflow

Describe, sketch, ship

I use pen and paper to structure my thoughts, Figma for complex visualisations. Otherwise I use chat to explain the features. Everything else is automated. Claude Code writes the SwiftUI and the backend and pushes to GitHub. Xcode Cloud picks the branch up, builds it, runs the test suite and delivers it to TestFlight on my phone. When a build breaks or a test fails, the errors flow back into Claude as context, and the next attempt starts from them. The result: I can work on my app from a car on the way to the festival.

The development loop: sketchbook and words, to Figma, to Claude Code writing the code, to GitHub, to Xcode Cloud building and testing, to the iPhone — with build errors feeding back to Claude Code and life with the puppy feeding the next sketch.
The loop that built Lulu.

Sketches that became features

A sketchbook page titled 'training flow' — hand-drawn phone frames for a reminder, instructions with a start button, a 30-second timer with stop, 'how did it go?' options and a feedback screen.
First sketches of alone training flow.
The Figma version of the alone-training flow — eight iPhone frames from 'prepare the den' through desensitizing the leaving routine, a timed out-of-sight session with a colored goal ring, to 'how did it go?' and system feedback.
Detailed flow in Figma. The shipped version is the alone training video in the features above.
Scroll horizontally to follow the flow →
Early Figma sketch of the puppy page — profile, feeding calculator, progress sections, logging settings and the co-parent list.
The puppy page, early structure.
Figma sketch of the two-step toilet logging flow — 'What was it?' then 'Where did it happen?', each with a 'Log without detail' escape hatch.
Toilet logging, shipped.
Early Figma sketch of logging a training session — command chips, a five-paw rating and an optional shared note.
Logging a training session, rated in paws.
Figma sketch of the feeding calculator's foods list — kibble, treats and raw meat sharing a calorie budget with steppers.
The foods list where every food takes a share of daily calorie budget.

The scaffolding

Claude's memory

I built the repository that carries a deliberate context layer: CLAUDE.md as working memory with the project state, conventions and known traps; a decision log of numbered choices and their reasons; per-feature notes on the device; and a session log that updates by the /session-wrap procedure at the end of each session.

The repository structure with the AI memory layer highlighted: CLAUDE.md as working memory, PROGRESS.md with 18 session logs, NEXT_CHAT.md as hand-off, a memory folder with the feature notes and 47-entry decision log, the session-wrap command — beside the Swift app, its widgets and tests, and the TypeScript cloud functions.
One repo, two layers: the product, and the memory that lets an AI build it.
4 weeks
from first sketch to App Review approval
24,228
lines of Swift across app, widgets and tests
337
automated tests across the app and its backend
47
architecture decisions logged with their reasons
10
cloud functions running the shared backend
1
very well-documented dachshund

Background

How Lulu was born

This summer my partner and I brought home a longhaired dachshund puppy called Lulu. The first weeks were more overwhelming than either of us expected. We made a chart to log activities and help us to structure the day and get a good routine. It worked. It helped us to become better puppy parents. We had accidentally paper-prototyped an app.

Then I went on vacation. I was wondering whether I could make it digital entirely on my own, with AI carrying the code. I stayed deliberately inside Apple's ecosystem. Live Activities, widgets and system controls made the fastest possible logging nearly friction free, and the iOS design system meant nothing had to be invented from scratch. Firebase carried the shared backend, so both phones always told the same story.

Four weeks later, Apple approved it.

← Back to portfolio

Other projects

Continue exploring

Safe and intuitive interfaces for forklift operators
HMI that keeps operators safe without competing with the task in front of them.
Exploring how AI and flipped classroom models can personalize higher education
A speculative service design concept asking what we'd build if AI could make one-on-one tutoring available to every student.