This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
Procrastinator Autopilot is a web app for people who have been meaning to do something for weeks and still haven't.
You type the thing you're avoiding and, if you're feeling honest, why. Something like "file my taxes" and "I'm scared I'll do it badly". The app does the part you were stalling on: working out how to start.
It classifies the task as a habit, a quick task, or an important deadline. They fail for different reasons, so each gets a different plan. Habits get an identity statement and a habit stack. Quick tasks get a countdown and "just do it now". Deadlines get milestones worked backward from the date, plus a pre-mortem.
It diagnoses why you're slacking: overwhelmed, bored, afraid of doing it badly, no urgency, or low energy. The plan is built around that reason, not around a generic to-do list.
It hands you a first move small enough to do in five seconds. Not "start the report", more like "open the tax folder". Then an if-then trigger ("If I finish my coffee, then I open the folder"), a few small steps, and a reward.
It gets out of your way. Press start and the interface disappears: a 5-4-3-2-1 countdown, then one step at a time, nothing else on screen.
It remembers. Your open tasks live in a profile, so nothing quietly falls off your mind. If you pile up too many (3 or more and it gets careful, 6 or more and it calls it overload), the next plans get smaller, and the app tells you honestly whether to do the new thing now, schedule it, or let it go.
The effort it saves is the planning. The hardest part of a task you're avoiding usually isn't the task, it's the fog around it.
Demo
Live app:
Type anything you've been avoiding, add a reason if you like, and press "Make it easy". While the plan loads, a sloth hangs from a branch and judges you gently.
Code
rahulrr-coder
/
procrastinator-autopilot
Admit what you keep avoiding. Get a 5-second first move.
Procrastinator Autopilot
Admit what you keep avoiding. Autopilot classifies it, works out why you're slacking, and hands you a first move small enough to do in five seconds.
Built for the DEV Hacktoberfest open-source AI challenge, week 3 ("Slow and Steady").
How it works
- Classify: habit, quick task, or important deadline. Each is attacked differently (Atomic Habits-style identity and habit stacking, the 2-minute rule, backward milestones with a pre-mortem).
- Diagnose: overwhelmed, bored, afraid, no urgency, or low energy.
- Plan: a 5-second first move, an if-then trigger, small steps, and a reward.
- Do it: a 5-4-3-2-1 countdown, then one step at a time. Nothing else on screen.
- Remember: open tasks are kept in your profile (MongoDB). When you have 3+ open tasks the plans get smaller; at 6+ you get an honest "do this now, schedule it, or drop it".
The model may only cite a…
How I Built It
The open-source AI: Plans are generated by Gemma (gemma-3-27b-it), an open-weight model, through an OpenAI-compatible chat endpoint. The app has no Gemma-specific code. The model, the endpoint, and the key are three environment variables, so the same app can run against any open model host or a local server.
The stack: Svelte 5 and Vite on the front end, Netlify Functions for the back end, MongoDB Atlas for profiles and tasks. There is no auth library: a profile is a random id kept in your browser. No password, no email.
A few decisions I'm happiest with:
The model can't invent science. Productivity apps love to say "research shows". Here the prompt gives the model a fixed list of 12 named principles (implementation intentions, temptation bundling, the fresh-start effect, the 2-minute rule, and so on), and the server throws away any principle that isn't on the list. Each one is shown on the plan page next to an honest evidence note. The 5 Second Rule is labelled "popular, little formal research", while implementation intentions are labelled "strong evidence (meta-analyses)". I wanted the app to be a little skeptical of its own advice.
Context makes the plan better. Before asking the model, the function loads your profile: your name, anything you said makes starting hard, and your list of open tasks. When you're overloaded, the prompt asks for fewer, tinier steps and for a note on where this task ranks against the others.
Cost protection from day one. A public app that calls an LLM is a bill waiting to happen. There's a per-visitor rate limit (5 plans a minute) and a global daily cap, and the API keys never reach the browser. Before making the repo public I searched the repo, its full git history, and the built site for the actual secret values.
Design that matches the mood. People open this when they feel guilty and tired. So: warm paper tones, a green and brown palette borrowed from its sloth mascot, a sloth that hangs from a branch while your plan loads, and a focus mode with one thing on screen.
Things I kept simple on purpose: no passwords (the profile id is the key, so don't store anything sensitive), a daily counter that isn't perfectly atomic, and a rate limiter that fails open so a hiccup doesn't kill the demo.
Why Does Open Innovation Matter?
This app handles the most personal kind of text there is: the things you're ashamed of not doing. I don't think that should be locked to one vendor's API.
Because Gemma's weights are open, the model is swappable. For me it's one environment variable. Anyone who doesn't want their avoided tasks sent to a hosted service can point the app at a server of their own running the same model. I haven't tried that path yet, but the code supports it. That's the difference open weights make: the privacy decision belongs to the user, not to me.
The second reason is practical. I built and tested most of this against a stand-in model and switched models at the end by editing config, with no rewrite. A standard, open interface made the model a part of the app instead of its foundation.
Prize Categories
Best Use of Gemma
Top comments (0)