Jobs
A job is a persistent goal your agent pursues over days or weeks — as opposed to a task it performs once. You state the goal; the agent plans, executes, and adapts; you keep the judgment through the brief and the autonomy level you chose. Jobs live at Dashboard → Jobs.
Seeds (URL / tweet)
Paste a playbook URL or X/Twitter status into Ask (or /mission … in Slack/Telegram). The agent scrapes via
platform Firecrawl (research.scrape), quarantines the content, proposes a SetupPlan (accounts, MCP
servers, watches, schedules), parks in awaiting_setup until required connections are done, then proposes
the job brief or a multi-workstream graph. Briefs and graphs are rejected until the seed is ingested
(ok / partial / manual_paste) — so a hollow “content pending” plan cannot skip setup.
If scrape fails (common on X), you’ll get a paste seed text step (also auto-created when the agent saves a failed seed extract). You can pause during setup; resume returns to the checklist. Kill cancels open setup permanently. “Implement this playbook” goals prefer setup + playbook/graph over a default cold-outreach brief.
Creating a job
State the goal in plain language, with any constraints you care about:
Book 10 demos with HVAC companies in Texas by end of month. Budget $60. Email and phone only, no social.
The agent expands this into a job brief:
- Targets — who it will pursue and how it will find them
- Channels — email, social, SMS, voice, meet
- Sequence — the touch cadence and follow-up plan
- Budget — the job’s own AI budget
- Autonomy — how much it may do without asking (you set this)
Nothing runs until you approve the brief. You can edit any part before approving. When the agent needs to change the plan mid-job (a lane underperforms, a better segment emerges), it proposes a revised brief — every revision is versioned and kept.
Autonomy levels
Per job, choose one of four levels:
| Level | What it means |
|---|---|
per_message | You approve every outbound message before it sends. |
batch | The agent prepares batches; you approve a batch at a time. |
brief | You approved the brief; the agent sends within it without per-message approval. |
autopilot | The agent runs the job end to end within its caps. |
Regardless of level, T3 actions — anything financial or irreversible — always require a human. Autonomy levels govern T2 sends only; the T3 gate has no override.
The task graph
Under the hood a job decomposes into tasks: research → outreach → reply → follow_up → book_meeting → run_meeting → complete. Each task is visible in the job detail view with its status and history, and the
funnel view aggregates them: researched, contacted, replied, booked.
Job detail also shows a collapsible What it’s doing live view: while the agent works you see the latest step; expand for the full narrative steps and tool activity.
Booking uses the Scheduling Service (scheduling_list_slots / scheduling_book) so slots respect SOUL
mode (Waveguide / Calendly book via API; external link is share-only), length, buffer, and busy time. Template SDR: voice → book → Meet
(sdr-voice-book-meetings) follows the sdr-booker skill: outbound Retell → transcript/reply → book → Meet
(outbound does not emit appointment_booked).
Job kinds
Every job gets a job kind (inferred from the goal; you can pin it on the Jobs page while planning):
| Kind | When | Plan shape |
|---|---|---|
outreach | Book / demos / ICP prospecting | Single Brief |
campaign | Launch / GTM / announce | Graph: research → content → outreach |
implement | Automate / playbook / build a pipeline | Graph: research → design → build → wire → verify (+ ops if continuous) |
analyze | Performance / audit / diagnose / report | Graph: research → analyze → report |
hybrid | Automate and book/outreach | Implement chain in parallel with content → outreach |
Graph kinds reject a hollow outreach brief (prefer_job_graph). Implement/hybrid build nodes publish a
code_bundle Deliverable (downloadable .tar.gz); the runtime hydrates it under
/workspace/mission_code/ for wire/verify/ops. Continuous ops wakes use mission_schedule
(task type ops) — not tenant schedule_wake crons.
Sub-jobs (Mission Graph)
Large goals can become a composite job with a DAG of sub-jobs. Each sub-job is a full job with its
own plan, budget slice, and task graph. Sub-jobs wait on each other through dependencies and typed
Deliverables (for example a contact list produced by research, consumed by outreach — or a
code_bundle produced by build). Composite jobs also show Steps — a Cursor-style checklist the
agent maintains while working.
Nothing in the graph runs until you approve the graph plan (unless autonomy is autopilot). Child briefs
may auto-approve when the parent autonomy is brief or autopilot. Non-outreach children use a
synthetic brief and start on their role task (design, build, …); outreach children still plan a
real brief.
Outreach channels
- Email — sent from an auto-provisioned hosted sending identity (or your own verified domain) with SPF/DKIM, paced warm-up, reply detection, and reply-to routing back into the job.
- Social — posts and DMs through connected social tools, with per-platform pacing.
- Voice — outbound calls place only after consent and jurisdiction checks pass, and the agent always discloses that it’s an AI. Transcripts post back to the job log.
- Meet — when a meeting books, the agent can attend the Google Meet as a voice participant and post the transcript and outcomes back to the job.
Lanes activate per job; a lane the brief doesn’t include can’t be used.
Budgets
Each job has its own AI budget on the same ladder as your plan budget: a warning as it climbs, soft-landing at 100% (the agent economizes), and a hard stop at 120% — the job pauses and waits for you. Job spend is metered separately so you can see exactly what a job costs on the Billing page.
Compliance rails
These are enforced on every send, on every job, regardless of autonomy:
- Suppression list — tenant-wide; an opt-out on any channel suppresses the contact everywhere, instantly.
- Consent + jurisdiction gates — voice calls check both before dialing.
- Cross-job frequency cap — a hard ceiling on outbound touches per contact per rolling week, across all jobs and channels, so concurrent jobs can’t over-contact one person.
- Quarantine — anything the agent learned from the web or inbound mail is tainted; tainted data flowing into a send forces an approval with a visible warning.
Dry-run and practice
- Extra-safe rehearsal (dry-run) executes the job plan without sending: you see exactly which messages would go to whom, when.
- Drafts only (practice) lets you converse with the agent in its outreach voice before anything is real — useful for calibrating tone before the first live job.
Webhooks and replies
Replies flow back automatically — email reply-to, social webhooks, voice and meet transcripts — and wake the agent on arrival. A hot reply escalates to you through your channels just like a hot lead.