Scheduled work on workflow steps
Some workflow steps stay open for days or weeks — tracking a work item, sending reminders, or re-checking an external system on a cadence. Scheduled work lets Thunk.AI run the step's AI agent on a recurring timer while the step remains active.
Each timer tick is a normal agent run on that work item, driven by the step's AI Instructions. The agent does its work for this pass and, by default, waits for the next scheduled run rather than finishing the step. See How an AI agent ends a run for that conclude behavior.
Scheduled work is configured once per workflow step in the plan. Every active work item on that step shares the same schedule, filter, and scheduled-run instructions.
When to use scheduled work
Use a schedule when a step should wake up without a new inbound message — for example:
Send reminders or escalations as a deadline approaches
Re-check status on a cadence until a condition is met
Periodically refresh computed fields across many work items
For a full pattern that combines inbound updates with scheduled checks, see Design pattern: the Work Tracker.
Where to configure it
Open your thunk and select a workflow step.
Open the step's Settings tab (or the step details panel while authoring the plan).
Expand Scheduled Work Settings in the AI Instructions area.
Turn on a recurring schedule with Daily at specific time, Every hour, Monthly on a specific day, or Yearly on specific months. When a schedule is active, an enabled indicator appears on the section header.
While authoring the workflow plan (no work item open), you can edit the schedule shape but cannot fire a test — testing requires a concrete work item and step instance.
Schedule options
Daily at specific time
Choose a Daily Time, Timezone, and optional Days of week chips (for example weekdays only). The agent runs once per selected day at that clock time in the chosen timezone.
Every hour
Runs at the top of each hour. Optionally turn on Only run between certain hours, pick From / To hours, and set a Timezone so ticks happen only during business hours in that zone.
Monthly on a specific day
Choose a Timezone, a Time, and a Day of month. The agent runs once a month on that day at that clock time in the chosen timezone.
Pick a numbered day (1–31) or Last day of month. A numbered day of 29, 30, or 31 only fires in months that have that day — shorter months are skipped — so choose Last day of month when you want the step to run every month (for example, end-of-month billing or reporting).
Yearly on specific months
Choose a Timezone, a Time, the Months the step should run in, and a Day of month. The agent runs on that day of each selected month, at that clock time in the chosen timezone.
Months is a set of chips — tap the ones you want. This is how you build any cadence that repeats a few times a year:
One month for a true annual run (for example, an annual policy review each Jan)
Jan, Apr, Jul, Oct for calendar quarters — or Feb, May, Aug, Nov / Mar, Jun, Sep, Dec when your fiscal quarters are offset
Jun and Dec for a twice-a-year check
Day of month works exactly as it does for a monthly schedule: a numbered day (1–31) or Last day of month. A numbered day of 29, 30, or 31 is skipped in any selected month that does not have it, so choose Last day of month for quarter-end or year-end work.
At least one month stays selected, and days that none of the selected months have are unavailable — you cannot pick the 31st when only February is selected. Selecting all twelve months is the same as a monthly schedule.
How a scheduled run behaves
On the first time a work item reaches the step, the agent runs once to do any setup, then typically concludes while leaving the step open.
On each timer tick, the agent runs again on that work item. Unless your instructions say to finish the step, the agent concludes by waiting for the next scheduled run — the step stays active for the next tick or for an inbound update.
Write directions that separate:
What to do on the initial run (setup, first message, and so on)
What to do on each scheduled run (re-check, remind, update state)
When the step should finish (for example when a status becomes
Done)
Use a Step Finish Condition under Workflow Options when the platform should enforce when the workflow may proceed. See Control when a step runs and proceeds.
Query Filter
By default, every active work item on the step is eligible on each tick. On thunks with many work items, that can be expensive.
Query Filter narrows scheduled runs to work items whose property values match a condition — the same condition builder used for Workflow Options and tests. You must bind input properties on the step before a filter is available.
Examples:
Only work items whose NextCheckDate is on or before today
Skip work items whose Status is already
Done
On a real scheduled run, work items that do not match the filter are skipped for that tick — the agent is not invoked for them.
Custom directions for scheduled runs
By default, scheduled runs use the step's Directions field. Turn on Use custom AI instructions for scheduled runs to author separate directions that apply only on timer ticks.
When this override is enabled, those directions replace the step's Directions for scheduled runs. Include any phrasing about when to finish the step or keep waiting in the override — the scheduled run reads these directions to decide.
Interactive runs (for example when an inbound message arrives) still use the step's normal Directions.
Test a scheduled run
From a work item on a step with an active schedule:
Use Test in Scheduled Work Settings, or
Click the timer icon in the step header
Both open the Scheduled Work dialog. You can:
Fire one simulated timer tick for this work item only
Optionally set Simulate firing at so time-dependent instructions (for example "if today is after the due date…") can be exercised without waiting for the clock
When a Query Filter is configured, choose whether to Respect the filter (default off for a test — the step runs regardless unless you opt in)
Simulated time affects what the agent is told the current time is. Tool results, message timestamps, and data the run writes still use the real clock.
Tips
Match schedule cadence to how timely reminders must be — status refreshes on the next tick or inbound update, not the instant a date passes.
Combine a fixed cadence with a Query Filter so each tick touches only work items that need attention.
For long-running tracking steps, pair scheduled work with inbound routing so updates and timer ticks share one set of directions.
Use Test with a simulated date when instructions depend on calendar logic.
