Inspiration

My week looks like this: three days at university with 3–4 classes each, a project for a company, preparing for an internship, and learning something new in programming on top. I tried planners, and none of them worked for me. You have to keep opening them and ticking things off, and if you miss a day, the whole plan falls apart and you start again. They also want every task pinned to an hour and minute, while most of my tasks just need to get done sometime during the day, when I decide to do them.

So I built Remi: a planner that follows you, not the other way around. I've been using it myself for more than a week.

What it does

  • Just write to it. Tell the assistant what's on your plate in plain words ("math class on Friday at 10, I don't know when to clean my room"). Things with a time go exactly there; things without one go on the lightest day, and it says why. Every change can be undone.
  • Your day in two lists: Scheduled for what has a time, Anytime for what just needs doing today, with no hour-by-hour planning forced on you.
  • Plans for bigger goals. List what you need to learn or finish, answer a few questions, and Remi recommends how many days and how much time a day it needs, then builds a realistic day-by-day plan, with free learning materials found on the web.
  • Miss a day? The plan rebuilds itself. Important tasks move first, smaller ones are split over the next days, and if the work can't fit before the deadline, Remi asks whether to extend it. Nothing is ever lost.
  • A desktop widget that comes to you. A small tab at the edge of the screen shows today; Remi, the app's character, brings a reminder an hour before something starts. You can tick tasks off and message the assistant right from the widget. It never reads your screen or files.
  • Import your timetable from a university or Google/Outlook calendar (.ics) in one click.
  • One account in the browser and the desktop app, synced, and it works offline.

How I built it

I built Remi with Claude Code and the Devpost Learn Skill Pack: first the scope, the PRD and the technical spec (all in devpost/ in the repo), then the build, step by step.

  • App: React, TypeScript, Vite, Tailwind CSS.
  • AI: the Claude API on the server only (Sonnet for plans and the assistant, Haiku for small calls), with strict cost limits per call and per person.
  • Rules engine: the core idea is "the engine places, the AI words, the engine referees". The AI suggests, and a rules engine in plain TypeScript checks every answer. If the AI breaks a rule or fails, the engine's own version is used, so the plan is never broken.
  • Accounts and sync: Supabase (Auth, Postgres with row-level security, Realtime).
  • Desktop app and widget: Electron with a local SQLite file.
  • Quality: more than 3,600 automated tests (Vitest) and CI on every push.

Challenges I ran into

The hardest part was deciding how the plan should be built and what it should rely on so it actually makes sense. Early versions stretched the work over more days than needed and split steps that belong together, like loading data on Saturday and checking it on Monday. I had to define clear rules (what is important, what can be split, what must stay together, what happens after a missed day) and make the AI follow them instead of improvising.

The second challenge was design: making it convenient and good-looking while keeping the main idea, that the planner chases you, not you the planner. That's where the widget at the edge of the screen, Remi bringing the reminders, and the "Anytime" list instead of hour-by-hour slots came from.

What I learned

Plan the skeleton of the project before writing code. Not every small detail, but the core: what it does, for whom, and how it's built. Then the project stands on something solid, and you can change it, extend it and test it without everything falling apart.

What's next

A mobile version that syncs with everything else and sends gentle reminders before each class or event you added yourself, without nagging you.

Share this project:

Updates

Submission history