Skip to main content
Waveguide
Docs navigation

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:

LevelWhat it means
per_messageYou approve every outbound message before it sends.
batchThe agent prepares batches; you approve a batch at a time.
briefYou approved the brief; the agent sends within it without per-message approval.
autopilotThe 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):

KindWhenPlan shape
outreachBook / demos / ICP prospectingSingle Brief
campaignLaunch / GTM / announceGraph: research → content → outreach
implementAutomate / playbook / build a pipelineGraph: research → design → build → wire → verify (+ ops if continuous)
analyzePerformance / audit / diagnose / reportGraph: research → analyze → report
hybridAutomate and book/outreachImplement 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.