Inspiration
TinyStep came out of watching a friend of ours with ADHD try to start an essay.
The thing that surprised us was that the writing was never the problem. She knew the material. She could argue about WW1 for an hour if you let her. But put "Write a 1500-word essay on the causes of WW1" on a screen in front of her and she'd freeze. The document would sit open and untouched for two days, and every hour it sat there it got a little scarier to open.
She put it better than we could: she said she was looking at the whole mountain when all she needed was the next step.
Most study apps assume the hard part is staying organized or remembering deadlines. For her it was none of that. The hard part was starting at all. So that's the one thing we decided to build for: the first move, and making it so small she couldn't talk herself out of it.
What it does
You paste in whatever you're avoiding, and TinyStep hands back a short list of small, obvious actions instead of one big scary task.
The first step always gets a "2-minute starter" badge. Something like "open a doc and title it" — small enough that saying no to it feels silly. That first badge is doing most of the work. Once you're moving, you're moving.
Every step has two buttons: Done, and "I'm stuck."
Done crosses it off, nudges a progress bar, and bumps a streak counter. Small wins, on purpose, because they're the fuel.
"I'm stuck" is the part we care about most. A normal to-do list just leaves you there. TinyStep instead asks you why: is the step unclear, boring, scary, or pointless? Whatever you pick, the AI takes that one step and breaks it into even smaller pieces until the wall isn't a wall anymore. "Write the introduction" turns into "open the doc," then "title it," then "write one messy sentence." There is no step too small to break down further.
A few other things it does. "Continue" generates the next batch once you've cleared the current ones, so you never see the whole project at once. Sessions save, so you can close the tab and pick up exactly where you left off. And over time it quietly notices the pattern behind your stalls and reflects it back — "You get stuck most when steps feel: boring, unclear." Not a scolding. Just something useful to know about yourself.
How we built it
TinyStep is a Flask backend with a plain JavaScript frontend. We skipped the big frameworks on purpose. We wanted the page to feel quick and quiet, not busy.
The steps come from an LLM API. When you submit an assignment, the backend sends it to the model with a prompt we spent a lot of time on. We don't just ask for subtasks. We ask for subtasks that work the way an ADHD brain works: the first one has to be tiny, each one has to be a single concrete action, and the wording has to stay plain and un-intimidating. The "I'm stuck" flow passes the model more context — the exact step, the original assignment, and the reason you're stuck — so a step you called "scary" gets broken down differently than one you called "boring."
The frontend is hand-built DOM: the step cards, the progress bar, the streak, the stuck flow. State saves to the server so you can reload where you left off, and every stall reason gets logged so we can show you the insights later. We used Nunito and a soft green palette to keep the whole thing feeling calm, and we added real error states with a "try again" button so a dropped request never dumps you onto a broken screen.
Challenges we ran into
The code wasn't the hard part. Getting the AI to break things down the right way was.
Our first prompts gave us steps that were technically correct and completely useless. "Research the causes of WW1" is a real subtask, but to someone with executive dysfunction it's just the original mountain with a new label. We rewrote the prompt again and again to push the model toward tiny, physical, unmistakable first actions.
The stuck feature fought us too. Our first version just re-split the step automatically. Our tester stopped us: being bored is a totally different problem than being scared, and the same generic breakdown doesn't fix both. That one comment is where the four-reason flow came from, and it ended up being the best idea in the app — and it wasn't ours.
Then there was the streak. Streaks are motivating right up until they aren't, and a broken streak can turn into shame fast, which is the exact opposite of what a tool like this should do. We're honestly still figuring out where that line is.
Accomplishments that we're proud of
The thing we're proudest of is that TinyStep works for an actual person we know, not a user we imagined. The 2-minute starter and the unclear/boring/scary/pointless flow both came straight out of listening to her. Watching her actually start something she'd been dodging for days, because of a thing we made, was the best moment of the week. Nothing else came close.
We're also proud of what we left out. It would have been easy to keep piling on features. Instead we kept cutting anything that didn't serve the one job: make the next step small enough to take. The insights line is a small thing, but turning a stall from a source of guilt into a piece of self-knowledge is exactly the kind of small thing we wanted more of.
What we learned
The big one: building with a neurodivergent user instead of just for one changes the whole product. Nearly every idea we were proud of got reshaped the second we tested it with our friend. We would never have landed on the four-reason stuck flow, or understood how touchy the streak was, from our own guesses.
We also learned that good AI here isn't a bigger model. It's a better prompt. The intelligence people actually feel comes from packing a real understanding of executive dysfunction into how we ask the model to break work apart. On the technical side, we got a lot more comfortable wiring an LLM into a real backend, holding state, and failing gracefully so the tool stays something you can trust.
What's next for TinyStep
A few directions we want to take it.
Breakdowns that learn from your own insights. If TinyStep already knows you stall on "boring" steps, it can make those smaller or reword them before you even hit the wall.
Voice input and read-aloud, so typing or dense text stops being a barrier to using the thing that's supposed to lower barriers.
Energy and time awareness. Let someone say "I've got 10 minutes" or "I'm running on empty," and shape the steps to fit that, instead of pretending every moment is the same.
Gentle, opt-in nudges to help restart after a break, with a hard rule that they never tip into nagging.
A guidance dial, which came straight from our user. She wanted to choose how much the AI holds her hand, full guidance on a rough day when she needs every step spelled out, or partial guidance when she just wants a nudge and the rest left to her. How much help you want isn't fixed, so the tool shouldn't be either.
One focused step at a time. She told us that seeing the whole list, even a list of small steps, could still feel like a lot. So we want a mode that shows you just the step you're on, nothing else, to make it more engaging and a lot less overwhelming.
Steps that match your level of study. She asked for a way to pick her education type, so an A-level essay and a GCSE essay don't get broken down the same way. The steps, the examples, and the language would all shift to fit where you actually are.
And moving past essays. Task initiation isn't a homework problem. It's a chores problem, an application problem, a "I've been meaning to do this for three weeks" problem. The goal we keep coming back to is simple: open TinyStep at your worst moment and always find a next step small enough to take.
Log in or sign up for Devpost to join the conversation.