Skip to content
MISSIONBuilding to $50K/year · partnership threshold — every $20 subscription reserves 10 meals in the fund. Report published monthly.SEE THE PROGRESS →
DOC · UPDATED 2026-06-25

Scheduled tasks.

Recurring prompts on a daily / weekdays / weekly cadence at a chosen hour in your timezone. Runs land in either a dedicated chat or a fresh chat per run.

A scheduled task is a saved prompt + cadence + target chat mode. LADLE's cron process (Vercel-scheduled at 09:00 UTC daily) claims due tasks, executes each through a one-shot Anthropic call, and persists the user + assistant messages into the target chat. Failures are back-off retried once; second failures mark the task errored and surface the error in the task list.

Cadence options

Three modes are supported at creation; the next_run_at is computed from your chosen cadence + hour + timezone.

dailyEvery day at the chosen hour
weekdaysMon–Fri at the chosen hour; skips weekends
weeklyOnce per week on the chosen weekday at the chosen hour
hourInteger 0-23; combined with tz to compute the next UTC firing
tzIANA timezone string (e.g. America/Toronto, Europe/London). Defaults to your browser locale at task creation.

Target chat modes

Where the run's messages land depends on the target-mode chosen at task creation. Two options; pick the one that matches your reading habit.

dedicated_chatThe task has a persistent chat_id. Every run appends messages to that chat, so the history accumulates.
new_chat_per_runEvery run creates a brand new chat titled '<task name> · <YYYY-MM-DD>'. Best for daily digests where each day should be its own artifact.

The execution model

The Vercel cron config in vercel.json fires GET /api/cron/scheduled at 09:00 UTC daily. The handler claims up to 20 due tasks (enabled=true, next_run_at≤now, status≠running), flips each to status=running to prevent concurrent double-runs, executes the prompt through anthropic.messages.create with claude-haiku-4-5 (light tier, max 1024 tokens), persists the user + assistant messages, then updates status=idle + last_run_at + next_run_at.

Retry and error handling

If a run throws, next_run_at is set to now + 1h (back-off) and status stays idle for the retry. If the retry also fails, status becomes errored and error_message is set to the exception message. Errored tasks stop running until the user manually re-enables them (which resets status to idle + advances next_run_at to the normal cadence).

What you see in the task list

GET /api/app/scheduled returns every task with its current state.

idUUID (used in PATCH/DELETE paths)
name / prompt / cadence / hour / weekday / tzAs authored
enabledBoolean; PATCHable
statusidle | running | errored
last_run_atTimestamp of the most recent completion (success or failure)
next_run_atTimestamp of the next scheduled firing
error_messageNull unless status=errored
chat_idPopulated for dedicated_chat mode; null for new_chat_per_run until the first run creates one

Per-plan limits

Scheduled tasks are counted per user, per plan. Errored + disabled tasks do not count against the cap; only active enabled tasks do.

Ladle (Base)10 active scheduled tasks
Ladle Max 5x50 active scheduled tasks
Ladle Max 20x200 active scheduled tasks
Errored + disabled tasksDo not count against the cap
Run frequencyCron currently fires once daily at 09:00 UTC. Higher-frequency (hourly, 15-min) is on the exploring roadmap.

When scheduled tasks are worth it

Daily standup: 'What's on my calendar today, and what should I focus on given last week's priorities?' — weekdays, 08:00. Monday planning: 'Draft this week's plan from these three anchor projects.' — weekly, Mon 07:30. Weekly writing prompt: 'Give me one non-obvious writing prompt on my current beat.' — weekly, Sun 20:00. Not appropriate for: things that need current-moment context you haven't captured in the prompt; things that need to write outside LADLE (email, calendar events). LADLE does not run tools during scheduled execution — the task is a plain one-shot call.

Docs stay current. Report drift.

If a limit in the product doesn't match the number on this page, that's a bug — help@ladle.chat.

See all docsWatch it work
$20/MO · CANCEL ANYTIME · $0.80/MEAL · RECEIPTS MONTHLY
Read the ledger →
0meals fundedROLLING TOTAL · UPDATED HOURLY
SEE THE RECEIPTS →