Widget that picks your top 3 tasks each morning
Lock-screen widget that ranks your existing Todoist list into three explainable picks — not another to-do app.
A freelancer opens the laptop at 7:40 a.m. Todoist has 50 items. Things has 40 leftovers from last quarter. Apple Reminders has a ghost layer of “call dentist” and “Q3 taxes.” Slack already dumped four fires. Nothing on any list is wrong. That is the bug. Everything feels equally urgent, so the brain freezes, re-sorts, opens email, and spends the high-energy hour on whatever pinged last. Decision paralysis kills more days than distraction. The work that mattered was never in doubt at 5 p.m. It was unsigned at 8 a.m. because picking it required a second job.
Built for Solo Founders, Weekend Builders.
Capture is solved. Ranking is not. Todoist Premium is about $4/mo. Things is about $50 once. Users paid to have the list, not to trust a daily cut. That is why Motion can charge $19–$34/user/mo for a full auto-schedule and still leave people who only wanted three names.
Suggested stack: Swift / SwiftUI + WidgetKit, Next.js dashboard, Todoist REST API, Apple Calendar / EventKit (plus Google later), Claude or GPT for rank + rationale, Stripe + RevenueCat. Weekend scope: about 10 hours.
The Problem
A freelancer opens the laptop at 7:40 a.m. Todoist has 50 items. Things has 40 leftovers from last quarter. Apple Reminders has a ghost layer of “call dentist” and “Q3 taxes.”…
The Solution
TaskFocus is not a todo app. It is an iOS and Mac widget that sits on top of the list you already have — Todoist first — and uses a model to rank by deadline, calendar free/busy…
Market Research
Capture is solved. Ranking is not. Todoist Premium is about $4/mo. Things is about $50 once. Users paid to have the list, not to trust a daily cut. That is why Motion can charge…
Competitive Landscape
Motion — Auto-plans tasks into the calendar. Real for meeting-heavy founders. Requires migrating in. Complex, web-first, not a widget on Todoist. Typically $19–$34/user/mo. Steal…
Business Model
Demo ($0) — Paste or connect a sandbox list, see three picks once. No widget until they sign in. Bait.
Recommended Tech Stack
Swift / SwiftUI + WidgetKit — iOS lock screen / home, Mac desktop. Timeline provider refreshes at a sane cadence. Deep links into Todoist. App Intents for complete/snooze without…
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "TaskFocus": an iPhone lock-screen widget that shows the three tasks from your Todoist list that matter today, each with a one-line reason. Stack: a SwiftUI iOS app with a WidgetKit extension (a lock screen rectangular widget and a home medium widget), a small Next.js (App Router) backend for the connection and the ranking, Supabase (Postgres, Row Level Security, Auth with email magic link), the Todoist REST API, Claude (Anthropic API) for the rank and the reasons. Todoist stays the source of truth. Calendar: read free and busy blocks on the device with EventKit and send only the blocks, never event details. Tables (Row Level Security on, each user reads only their own rows): - todoist_tokens(id, user_id, access_token_encrypted) - daily_picks(id, user_id, pick_date, picks jsonb, model, created_at) - overrides(id, pick_id, action, replacement_task_id) Screens: connect Todoist, a settings screen, and the widgets. Env vars (names only): SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), TODOIST_CLIENT_ID, TODOIST_CLIENT_SECRET, ANTHROPIC_API_KEY. Do not build: billing, plans or in-app purchases, the Mac desktop widget, Google Calendar, an insights page, a local task store. Done when: the app runs in the simulator, Todoist connects, the widget appears on the lock screen, and the three tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves TaskFocus: three explainable picks before you wake up. 1. A nightly job (and a Rank now button) fetches the user's open Todoist tasks and the next 24 hours of busy blocks sent from the device. 2. Score each task with a plain rubric: due_in_hours, estimated_minutes against the longest free block, has_blocker, the user's completion rate for that project, and explicit priority. 3. Send the top 15 to Claude with a strict schema: three task ids, rank 1 to 3, reason_short under 90 characters, and reasons_factors[]. Save the result to daily_picks. 4. The WidgetKit timeline provider reads the latest picks. Tapping a row opens Todoist or completes the task through an App Intent. 5. If the user overrides a pick, store it in overrides and downweight that factor tomorrow. Rules: never show more than three. With fewer than three open tasks, show what exists and an inbox-zero state. The rank job should finish before 6:00 local time. Empty state: before Todoist is connected, the widget shows "Connect your list". Done when: a test list produces three picks in order with a reason under 90 characters on the lock screen, completing one removes it, and an override changes tomorrow's weighting.
3. Landing Page
Build a one-page landing site for TaskFocus, a widget that picks your top 3 tasks each morning. Hero: "Your list already exists. This morning, only three things on it matter." Sub: "An iPhone widget that reads Todoist and your calendar and names the top 3, in order, with a reason." One button: See your top 3 from a demo list, which joins the waitlist. Sections: a lock-screen widget mock with three real-looking tasks and their why-lines, the 50-item list problem, "this is not another to-do app", how it works in four steps (connect one list, rank overnight, wake to the widget, explain and learn), and an FAQ on explainability, what happens when the AI is wrong and the privacy of task text. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, lots of air, one sharp accent. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for TaskFocus: a wordmark and a mark of three stacked ticks or three bars, not a checkered to-do clipboard. Colors: near-black, paper and one focused amber or lime for the first task. Type: Geist or similar, with tabular numbers for the "3." Voice rules: never moralize about hustle, never say "crush your day", always show a why-line next to a pick, and keep widget copy under 90 characters. Deliverables: wordmark, mark, a 6-icon set (connect, rank, widget, why, snooze, complete), and three lock-screen copy variants. Done when: each deliverable is saved in one folder and each copy variant is under 90 characters.