AGENT 07 / 07
Outreach
The operations worker turns verified context and memory into useful action: personalized drafts, approved updates, exports, scheduled runs, and notifications — without losing the operator in the loop.
outreach · autonomous
01What it does
From verified context to ready drafts
One artifact, one context
Role-aware and grounded in what the workflow actually found — a report, update, notification, or message. No fill-in-the-blanks templates.
Batch generation
Pass a set of structured records: each artifact is built from enriched context, notes, provenance, and verification confidence.
Channel fit
Email subject + body, LinkedIn connection notes tuned to the channel’s limits, conversational Telegram openers for messaging-first markets.
Approval before side effects
save_contacts and git_push are approval-gated by default: y/n in the TUI, POST /sessions/:id/approve over the API — with timeout and headless fallback.
CRM push
amoCRM v4 · Bitrix24 REST · HubSpot CRM v3. Pushes run 4-at-a-time with one retry, and dedup by crm_id means re-runs never double-create.
Export & notify
Contacts as CSV · vCard · JSON · xlsx, reports as PDF · HTML · DOCX, completion fan-out via webhook · email · Telegram.
02How it works
Five steps to a reviewable result
Ground
Load verified records plus the memory digest: prior decisions, relevant entities, and current provenance.
Compose
Create the requested artifact from real context — records, recent findings, source URLs, and explicit constraints. Nothing invented.
Approve
Side-effect tools pause and wait. Nothing leaves the pipeline without an explicit yes from the operator.
Deliver
Persistence deduplicates and merges; configured integrations store remote ids for idempotent reruns; exports remain available for operator review.
Watch
An operator-triggered or configured schedule can rerun the workflow and diff results, sending notifications when tracked records change.
03Under the hood
A draft you can audit
| Approval gate | [agent] approval_tools defaults to save_contacts, git_push · timeout + headless fallback |
| Local dedup | save_contacts merges on normalized email/phone — atomic check-and-insert, never a duplicate |
| amoCRM | POST /api/v4/contacts on your account subdomain · bearer auth · PHONE/EMAIL field codes |
| Bitrix24 | /rest/crm.contact.add.json · auth query param · NAME, POST, EMAIL, PHONE, COMMENTS |
| HubSpot | api.hubapi.com/crm/v3/objects/contacts · private app token · firstname/lastname split |
| CRM dedup | remote id stored as crm_id → already-synced contacts are skipped on every re-push |
| Push engine | bounded concurrency ×4 · one retry after 1s on transient failure · errors reported, not fatal |
| Contact export | csv · vcard · json · xlsx |
| Report export | pdf · html · json · docx — pandoc, with wkhtmltopdf fallback for PDF |
| Notify | webhook JSON (session.completed) · SMTP email · Telegram bot — fan-out, one failing channel never blocks the rest |
| Watch mode | run --repeat N — runs are diffed; new emails/phones/persons alerted via webhook, Telegram or email |
04Tools
The Outreach toolset
Delivers governed operations
From context to accountable action
This worker turns grounded context into useful action: a personalized draft, an approved record update, an export, or a scheduled notification. Memory keeps repeat runs current, approval gates keep operators in control, and every result can be inspected before it leaves the runtime.
Subject: Acme's Series B → platform hiring
Hi Jane — saw Acme closed the Series B and opened
6 platform roles. When we spoke in March you
mentioned infra tooling was the bottleneck —
we've since documented a repeatable workflow
for this kind of handoff. Worth a 15-min call?
────────────────────────────────────────────
approval: granted (operator, TUI)
save_contacts: 1 saved · merged with existing
crm push: hubspot id 515 (crm_id stored)
export: outreach-batch.docx
notify: telegram ✓ webhook ✓