← Portfolio
Short case study · Android · Shipped

You remember things when your hands are full.

A personal reminder app built around one observation: capture has to be faster than the thought, or the tool loses.

01The problemShort case study

Reminder apps assume a free keyboard. But the moment you remember something is almost never that moment — you are driving, mid-conversation, cooking, carrying something. By the time typing is possible, the thought is gone. The failure is not memory. It is the input method.

Thoughtfind phoneopen apptypeset dateset timetoo late
02Three decisionsWhat I chose, and why
01

Speak it, don't type it

One tap on the mic and you talk normally: “remind me to call the doctor tomorrow at 3pm”. No form, no pickers, no category chosen up front.

WhyCapture has to cost less than the thought is worth. A form is a decision tree; a sentence is not.
02

Parse the sentence, don't ask the user to structure it

A natural-language parser reads relative time the way people speak it — tomorrow, in 30 minutes, day names, months, am/pm — and fills the date and time itself. The parsed result is shown so it can be corrected.

WhyThe app should do the translating. Showing what it understood keeps it honest without making the user fill the form anyway.
03

An alarm, not a notification

Delivery runs as a foreground alarm service with a real bell, and re-registers after a reboot. Reminders also survive being swiped away by accident.

WhyA notification that can be dismissed without reading is the same as no reminder. This app exists for the things you cannot afford to miss.
03OutcomeWhere it landed
ShippedAndroid app in Kotlin and Jetpack Compose, Material 3, dark and light.
Voice → doneSpeak, confirm what it heard, and it is scheduled. Manual entry stays for anything the parser gets wrong.
LockedBiometric or PIN lock with AES-256 encrypted preferences, because reminders are personal.

The lesson I took into later work: when a tool fails, check the input method before blaming the user.