Inspiration

Meet Maya (a composite persona based on experiences common among students with ADHD). It's Sunday night, and her to-do list has 23 items: a history essay due Friday, a bio midterm, an email to her professor she's been avoiding for a week, laundry, an internship application.

She opens the list to get started. Twenty minutes later she's reorganized it twice, color-coded it, and hasn't done a single task. Every item feels equally urgent and impossibly big, so her brain picks none of them. She closes the laptop feeling worse than when she started.

Maya isn't lazy. She's dealing with task paralysis: choosing what to do, judging how big it is and taking the first step all have to happen at once, before any work begins. Most productivity tools assume that seeing everything helps you act, but for Maya a long list does the opposite.

I asked: what if Maya only had to see one thing, small enough to start right now? Not "write history essay" but "open a blank doc and type the title." That question became Foothold.

My user: a student who feels overwhelmed by a long to-do list and has trouble starting.

What it does

Foothold turns an overwhelming to-do list into one doable next step.

  1. Brain dump: paste everything on your mind. It can be messy: bullets, commas, "I need to…". Foothold splits it into tasks, spots deadlines ("asap", "tomorrow", "friday") and estimates how big each one is.
  2. Energy check: pick Running low, Some or Lots. Low energy brings up quick wins; high energy brings up big tasks.
  3. One step: you see a single task with a short reason it was chosen, like "Due today · a quick win for low energy". The full list stays hidden unless you ask for it.
  4. Too big? Make it smaller: one tap breaks a task into tiny starter steps. "Write history essay" becomes "Open a blank doc and type just the title."
  5. Not now: set a task aside without guilt and get a different one.
  6. Done today: every finished step is listed, so progress is visible.

There's also an optional 5/15/25-minute focus timer with a soft chime instead of an alarm.

Accessibility comes built in: full keyboard control (D done, B too big, N not now), screen-reader announcements, high-contrast mode, extra letter and line spacing, adjustable text size, read-aloud, an animation off switch and dark mode. Everything stays on the user's device, with no account and no data sent anywhere.

Before After
23 tasks on screen, no clear order 1 step, with a reason it was chosen
"Write history essay" "Open a blank doc and type just the title"
Skipping a task feels like failing "Not now" is a normal option
The list never looks shorter "Done today" shows every win

How I built it

  • Plain HTML, CSS and JavaScript: no framework, build step or server, so anyone can open it in a browser.
  • Logic separate from the UI: logic.js holds pure functions (parsing, deadline detection, sizing, breakdown, choosing the next step) with unit tests in Node.js. I checked the UI end to end in a headless browser with Playwright.
  • A transparent choice, not a black box. Each task gets a score: $$\text{score} = \text{urgency} + \text{energy fit} + \text{finish what you started} - 25 \times \text{times set aside}$$
  • Breakdowns come from hand-written recipes for common student tasks (essays, studying, applications, emails, readings, cleaning), with a general fallback for everything else.
  • Browser APIs: Web Speech API for read-aloud, Web Audio API for the chime, and localStorage for private on-device saving. The typeface is Atkinson Hyperlegible, designed by the Braille Institute for low-vision readers.
  • AI assistance: I used Claude Code (Anthropic) to help write code and draft this write-up. I reviewed, tested and edited the result, and the product decisions are mine. There is no pre-existing code; everything was written during the hackathon.

Challenges I ran into

  • Messy input: "read chapter 4, due tomorrow" should be one task, not two. I had to merge comma fragments that are only deadlines back into the task before them.
  • "Not now" on a sub-step: at first it just showed the next piece of the same task. Skipping now sets the whole task aside.
  • Keeping the single card accessible: when the card changes, keyboard focus and screen-reader announcements have to follow it. One bug left focus stuck in a hidden input, which silently broke the keyboard shortcuts.
  • Limitations I accepted: deadline detection is keyword-based (it doesn't parse exact dates like "Nov 3"), breakdowns are rule-based, and data lives in a single browser with no sync.

Accomplishments that I'm proud of

  • It works instantly: open the site and go, with no sign-up, install or API key.
  • The interface stays calm. The main screen shows only one task and three buttons.
  • Accessibility was designed in from the start, not added at the end.
  • Every recommendation explains itself, so users can trust why a task was picked.

What I learned

  • Hiding information can be a feature: showing less made the tool more useful.
  • Small wording choices matter. "Not now" feels very different from "Skip" or "Postpone".
  • Accessibility bugs are often invisible unless you test with only a keyboard and a screen reader.

What's next for Foothold

  • Optional AI breakdowns for tasks that don't match a recipe, keeping the rule-based version as an offline fallback.
  • Exact date parsing and calendar import.
  • Sync across devices.
  • "Body doubling" mode: share a link so a friend can see you're working on your one step.
  • Testing with more students who live with ADHD and executive-function challenges.

Built With

Share this project:

Updates

Submission history