Inspiration

Most productivity apps assume you already know what to do they just help you schedule it. But the real problem hits earlier than that. It's the moment your brain is holding fifteen half-formed tasks, three looming deadlines, and one decision you keep avoiding, and you don't even know where to start. That mental clutter is exhausting, and it's invisible to most task managers, because they only show up once you've already organized your own head.

We wanted to build something that meets people at that exact moment before the to-do list even exists and turns the chaos into one clear next move. That's where ThinkMate AI came from: think less about what to do, and do more of what matters.

What it does

You "brain dump" everything on your mind in free-form text, no structure required. The AI then:

  • Pulls individual tasks out of that unstructured dump
  • Classifies each one across the Eisenhower Matrix (urgent × important)
  • Calculates a Mental Load Score (0–100) so you can see your overload at a glance
  • Recommends exactly ONE next step not a list, one decision, with a reason and a time estimate
  • Helps with harder decisions through a weighted factor comparison tool
  • Breaks big, vague goals into monthly milestones plus a tiny first step for today
  • Runs an evening reflection ritual that carries unfinished work into tomorrow automatically

The AI never makes the final call. It surfaces options and reasoning, and the human always decides.

How we built it

The app is a full-stack SSR web app on React 19 and TanStack Start, with TanStack Router for file-based routing and Nitro powering server functions. Styling runs on Tailwind CSS v4 with Radix UI / shadcn-style components.

On the backend, every AI call goes through a custom multi-provider gateway with a cascading fallback chain: OpenRouter → Groq → direct Gemini → Lovable Gateway. If one provider is down or rate-limited, the app retries the next one automatically, so the user never sees a failure. The primary model is Gemini 2.5 Flash, with Llama 3.3 70B on Groq as a fast fallback.

The Mental Load Score is calculated as a weighted formula:

$$ Score = 0.3(taskCount) + 0.4(urgentCount) + 0.2(decisionComplexity) + 0.1(dependencies) $$

State is managed through a custom hook backed by localStorage, synced across browser tabs, with PostgreSQL as the persistent server-side store for sessions, tasks, reflections, goals, and decisions all behind type-safe server functions so database credentials never touch the client.

One of the more interesting pieces is what we call the Akinator Wizard: instead of analyzing a brain dump immediately, the AI asks up to five short clarifying questions about deadline pressure, energy levels, or whether something can be delegated before finalizing its analysis. It only asks one question at a time, and you can skip straight to instant analysis whenever you want.

Challenges we faced

  • Designing the Mental Load Score so it actually felt accurate instead of arbitrary. We landed on a weighted blend of task count, urgent task count, high-stakes decisions, and interdependencies, then tuned the thresholds through repeated testing.
  • Keeping the AI to ONE next step. It's tempting to let the model return a full ranked list, but the entire point of the product is reducing overload, so we had to be strict in the system prompt about returning a single recommendation, justified in one sentence.
  • Building reliable fallback logic across four very different provider APIs, so the app degrades gracefully instead of failing outright if a key isn't configured or a provider has an outage.
  • Preserving human agency. It would have been easy to let the AI feel authoritative. We deliberately tuned the tone to be calm and never prescriptive, and made every AI classification manually overridable through drag-and-drop in the matrix view.

What we learned

The hardest part of an AI productivity tool isn't the model call, it's the restraint. Anyone can ask an LLM to "analyze this and tell me what to do." The real design work was constraining the output: one task at a time in the wizard, three priorities max on the dashboard, no prose outside strict JSON. Good AI UX here meant doing less, more confidently.

We also learned a lot about resilient AI infrastructure. Designing a provider-agnostic gateway showed us how differently structured output, tool calling, and error handling work across OpenRouter, Groq, and direct Gemini.

What's next

We'd like to add calendar integration so deadlines can be detected automatically instead of self-reported, build out guided onboarding for first-time users, and explore voice-based brain dumps for true hands-free capture.

Built With

Share this project:

Updates