Reclaim.ai

reclaim.aicontributed by Samuele Ongaro

ALMOST

A weekend of work, and real gaps remain.

Defends time in your calendar: it schedules habits and tasks into free slots and moves them automatically when a meeting lands on top.

Promptfree, for everyone, and the only version there is
Build me automatic scheduling that replaces Reclaim — and know why this is ALMOST.

Placing a task in a free slot is easy. What is hard is **rescheduling that survives a real calendar**: a meeting appears, everything downstream moves, and it must move without churning — because a calendar that rearranges itself every ten minutes is one nobody trusts. That stability, not the placement, is the product.

STACK
- Node 20+ with Fastify, server-rendered HTML
- SQLite through better-sqlite3, WAL mode
- A worker for the rescheduling pass
- Caddy in front

THE DATA MODEL
- users: id, email, timezone, working_hours_json, calendar_connections_json
- habits: id, user_id, title, duration_minutes, frequency_json, window_json, priority, is_flexible, min_chunk_minutes, max_chunk_minutes
- tasks: id, user_id, title, duration_minutes, due_at, min_chunk_minutes, max_chunk_minutes, priority, status, completed_minutes, project_id, external_ref
- placements: id, task_id_or_habit_id, starts_at_utc, ends_at_utc, calendar_event_id, version, placed_at, locked_at, is_defended — the block written into the calendar
- placement_history: id, placement_id, old_start, new_start, reason, at — append-only, and the record of every move
- busy_blocks: id, connection_id, starts_at_utc, ends_at_utc, source_event_id, is_all_day, transparency, fetched_at — intervals only, never event details

THE STABILITY RULES, WHICH ARE THE PRODUCT
- Never move a block that starts within a short horizon — an hour, or two. Somebody has already planned around it
- Never move a block more than a set number of times. After that it is locked and reported as needing a decision, rather than shuffled again
- Move the smallest set of blocks that resolves the conflict, not everything downstream. A stable schedule with a slightly worse arrangement beats an optimal one that changed
- Prefer moving later over earlier, and prefer the same day over a different one
- Every move recorded with a reason, and shown to the user as 'this moved because that appeared'. Unexplained movement is what makes people delete this kind of tool
- A pinned block never moves at all, ever

PLACEMENT
- One pure function: working hours minus busy blocks minus existing placements, then apply the window, the chunk sizes and the priority, and return candidate slots
- Chunking: a three-hour task placed as three one-hour blocks if that is what fits, with a minimum chunk below which it is not worth starting
- Buffers before and after meetings, as their own placements, because that is what makes the day survivable
- Habits are recurring and flexible within a window — exercise sometime between seven and nine, three times a week — and they yield to tasks with a deadline
- Deadline pressure raises priority as the due date approaches, so a task quietly slipping is placed before it becomes impossible
- Report honestly when something does not fit. 'Not enough time before Friday' is the most useful output this tool produces, and the temptation is to squeeze rather than say it

CALENDARS
- Two-way with the major providers, read-only ICS for anything else
- Incremental sync with the provider's token plus a full reconcile on a schedule, because incremental sync drifts
- Recurring events expanded properly, with exceptions and moved instances. A wrongly expanded weekly meeting means a year of wrong scheduling
- All-day events are dates, not midnight instants, and a transparent event does not block
- Blocks written as real events so colleagues see the time is taken. That visibility is half the value
- Every write carries a version, and a conflicting change from the calendar wins — the calendar is the source of truth about what is happening, and this tool is a proposer

TIME
- Every instant in UTC, working hours as local times with a named zone
- Both daylight-saving transitions in the test suite, and a week spanning one

TASKS FROM ELSEWHERE
- Adapters pulling tasks with a duration and a due date from the trackers you use, matched by external identifier, never by title
- One-way by default; writing completion back is optional

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, ENCRYPTION_KEY, SESSION_SECRET, provider credentials
- Migrations on boot, each once; nightly backup off the machine
- Health endpoint reporting sync age and the number of blocks moved today — that second number is the health of the whole system

WHAT MATTERS MOST
The stability rules and honest infeasibility. Build the move limits before the placement is clever, and let it say a thing does not fit rather than quietly moving your evening.

What you lose

  • Automatic rescheduling that keeps working as meetings shift, which is a constraint-solving problem rather than a placement one
  • Two-way sync with several calendar providers
  • Team-wide scheduling that respects everyone's defended time

If you would rather not build

  • A recurring calendar block, which is free and works
  • Motion, for the same job as a service

What it costs

read from their page 15 Aug 2026

PlanBilled monthlyBilled yearlyLast read
—$10/mo—15 Aug 2026

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Vikunja

$0

Self-hosted tasks with due dates and a calendar feed to subscribe to.

go-vikunja/vikunjafree · open source

Cal.com

$0

Handles the calendar connection half, which is the tedious part.

calcom/cal.diyfree · open source

Why this verdict

our own opinion · changed only by a person

58/100

Verdict kinda at 58. Placing tasks is straightforward; making the calendar stable rather than constantly rearranged is the difficult part.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 1/day
views0130 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Reclaim.ai

answered from the record above

Is Reclaim.ai free?

No — the plan we track is $10 a month. Starter at around $10 per seat per month billed monthly, cheaper annually.

Can you replace Reclaim.ai by building your own?

ALMOST. A weekend of work, and real gaps remain. Replacement score 58 out of 100, build time a weekend. Read what you lose before you decide.

How much does Reclaim.ai cost?

$10 a month on Starter — $120 a year. Recorded 10 Aug 2026.

What do you lose by replacing Reclaim.ai?

Automatic rescheduling that keeps working as meetings shift, which is a constraint-solving problem rather than a placement one; Two-way sync with several calendar providers; Team-wide scheduling that respects everyone's defended time. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Reclaim.ai?

Yes: Vikunja, Cal.com. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 14 in Scheduling

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc