Skip to content

Scheduled Tasks

Scheduled tasks are recurring jobs that the FDE auto-executes on cron schedules. Initial tasks are configured by the 0ai engineer, but after deployment the FDE proposes new scheduled tasks based on workflow observations, adding them automatically after PM approval.

Configured based on business requirements shared by the PM at deployment time.

app/orgs/acme/scheduled-tasks.yaml
tasks:
- name: daily_kpi_summary
schedule: "0 9 * * 1-5"
command: "Review yesterday's key KPIs and post anomalies and action items to Slack"
env_file: "config/.env"
description: "Weekday morning KPI summary"
enabled: true
timeout_minutes: 30

The FDE detects recurring patterns from workflow observations and proposes scheduling them.

[Task Proposal] weekly_support_summary
Detected pattern: PM manually compiles support backlog every Friday
Recommended schedule: Every Friday at 16:00
Recommended command: "Classify this week's support backlog and post key themes to Slack"
Approve?

When approved by the PM, the FDE auto-adds the task to scheduled-tasks.yaml.

FieldRequiredDescription
nameYesUnique task identifier. Shown in logs and notifications
scheduleYesCron expression
commandYesNatural language instruction for the FDE
env_fileNoEnvironment settings file loaded at execution
descriptionNoTask description
enabledNoSet to false to pause
timeout_minutesNoMaximum execution time (minutes)

The schedule field takes a cron expression.

* * * * *
| | | | |
| | | | +-- Day of week (0-7, Sunday = 0 or 7)
| | | +---- Month (1-12)
| | +------ Day of month (1-31)
| +-------- Hour (0-23)
+---------- Minute (0-59)

Common examples:

ScheduleMeaning
"0 9 * * 1-5"Weekdays at 9:00
"0 10 * * 1"Every Monday at 10:00
"30 17 * * 5"Every Friday at 17:30
"0 9 1 * *"1st of every month at 9:00

Scheduled task results are automatically posted to channels configured in repo-registry.yaml.

  • Normal results go to default_notify_channel
  • Errors go to dev_channel

The FDE auto-evaluates execution results and autonomously retries when quality is low. PMs receive only the final result notification.

To stop a task without deleting it, set enabled: false.

tasks:
- name: monthly_invoice_check
schedule: "0 9 1 * *"
command: "Execute the monthly invoice check"
enabled: false
description: "Paused for operational review"

Pausing can be requested from the 0ai engineer via Slack, or directly from the FDE:

@fde Pause monthly_invoice_check

The FDE detects scheduled task candidates from the following patterns:

  • The same type of request arrives on the same day every week
  • Reports in the same format are created periodically
  • Manual recurring work is reported in Slack
  • The same preparation work happens before every meeting

All detected patterns are presented to the PM as proposals. Nothing is auto-added without PM approval.

  • Scheduled tasks execute without PM intervention. Verify that notification targets and execution frequency are appropriate
  • Tasks involving important decisions should be designed with HITL (Human-in-the-Loop) steps
  • Task additions, modifications, and pausing can all be requested via Slack to the 0ai engineer or FDE