Robin is the operations bot for the Amazon R3 program — drivers, sites, partners, finance. The behaviour, tone, and 18 task scopes are fully spec'd in Airtable base app6GEKoBtHW1iyu1. Every scope is Enabled = false, no n8n Workflow URL is populated, and the Robin Activity log shows only 4 events. The product exists on paper. The runtime does not.
Three tables: Robin Config, Robin Task Scope, Robin Activity. Fetched live via Airtable Metadata + Data API using the PAT in .env.deploy.
Every Task Scope row has Enabled=false and an empty n8n Workflow URL. Only ClawBot's robin_tasks queue in appUDQ65M1lSnSM5p has live rows (mostly Finance + Partner from FIN-01 and Hauling Hub).
Document what Robin should do, what currently writes into its queue, and the AWS bounded context that turns the Airtable spec into an actual always-on service.
Identity + delivery settings: Display Name, Email, WhatsApp Display, Voice Profile, Languages, Email Signature, Active Hours, Quiet Days.
Per-channel reply delay: Driver / Site / Partner / General Inbound Reply Delay (min) + AI Disclosure Response + Headshot.
One row = one capability. Fields: Task Name, Channel (Email/WhatsApp/Slack/Internal/OCR), Default Mode + Currently Active Mode (Draft / Auto / Escalate), Trigger Condition, Escalate When, Logic Steps, Approval Rule, Edge Cases, Context Inputs, Example Output, Email Template, Slack Template, n8n Workflow URL, Enabled.
Append-only event log: Subject, Timestamp, Channel, Direction, Action Type, Mode at Time, Outcome, Contact Name/Channel ID, Full Message, Confidence Score, Joan Reviewed, n8n Run URL, links to Order / Partner / Site / Driver / Ticket / Task Scope.
Across the wall in base appUDQ65M1lSnSM5p sits robin_tasks (tbl4YywNGbJynrrdk) — 40+ fields including task_guid, recommended_action, action_options, selected_action, edited_content, confidence, escalated, triage_status, audit_log_ref. This is where ClawBot/n8n actually write today; the R3 spec tables are aspirational.
Each scope is a tiny state machine: a trigger arrives on a channel, Robin runs the Logic Steps with the Context Inputs, picks a template, and either drafts for Joan, sends automatically, or escalates — based on Currently Active Mode and Approval Rule.
| Code · Task | Channel | Default Mode | n8n URL | Enabled |
|---|---|---|---|---|
| CMP-01 Acknowledge inbound complaint | Draft | empty | false | |
| FIN-01 AP Audit & Variance Tier | Internal | Auto | empty | false |
| FIN-02 AR Generation | Internal | Auto | empty | false |
| FIN-02-AMAZON Vendor Central upload | OCR | Auto | empty | false |
| FIN-03 Partner Price Change Approval Gate | Slack | Escalate | empty | false |
| DRV-04 Driver Silence Escalation | Auto | empty | false | |
| DRV-05 Day-of Route Summary | Auto | empty | false | |
| Confirm pickup completion / photo | Draft | empty | false | |
| Equipment install clean / discrepancy | Draft | empty | false | |
| Tuesday overdue report | Draft | empty | false | |
| Risk alerts | Slack | Escalate | empty | false |
| + 7 more scopes | all empty triggers, all disabled | |||
Robin's behaviour is documented in Robin Task Scope, but the runtime that actually writes to robin_tasks today is ClawBot + n8n workflows (FIN-01 AP Variance, WF06 CMP Substantive, WF03 Partner Count Chase, WF04 DRV-04 Driver Silence, WF12 FIN-03 Price Gate, Hauling Hub Tickets). The Airtable scope rows are not the source of execution — they describe what should exist.
Sampled 18 most recent rows from appUDQ65M1lSnSM5p/tbl4YywNGbJynrrdk. The mix shows where Robin's runtime would land first.
Pending Review 9 · Auto-Resolved 5 · Approved 2 · Rejected 1 · Snoozed 1. Joan is the human approver loop for everything not auto-resolved.
Finance 7 · Partner 4 · Other 4 · Complaint 1 · Driver 1 · Risk 1. FIN-01 AP Variance and Hauling Hub Tickets together produce ~half the volume.
Hauling Hub Tickets 6 · FIN-01 AP Variance 3 · WF10 FIN-01 AP Audit 3 · WF03 Partner Count Chase 2 · WF06/WF04/WF12 1 each. None of these are wired to Robin Task Scope rows.
Robin is its own bounded context with its own database. It consumes domain events from R3 (orders, partners, drivers, finance), evaluates active Task Scopes, renders messages, and writes a permanent activity log. n8n stays only as a thin webhook adapter until inbound channels move to native AWS endpoints.
| Concern | Today | AWS target |
|---|---|---|
| Task scope storage | Airtable tblIuSytm3wQBjxbl | Postgres robin.task_scope · seeded from Airtable export |
| Live queue | Airtable robin_tasks | Postgres robin.task with SQS for delivery retries |
| Activity log | Airtable Robin Activity (4 rows) | Postgres robin.activity append-only + S3 archive |
| Inbound email | n8n Gmail trigger | SES inbound rule → SNS → Lambda → orchestrator |
| Inbound WhatsApp | not wired | WhatsApp Cloud API webhook → API Gateway → Lambda |
| Inbound Slack | n8n Slack trigger | Slack Events API → API Gateway → Lambda |
| Render + tone | n8n prompt nodes | Bedrock (Claude) with Voice Profile from robin.config |
| Schedule (e.g. Tuesday report) | n8n cron | EventBridge Scheduler → orchestrator endpoint |
| Secrets | n8n credentials + .env | Secrets Manager + IAM task roles (already used by Hub v2) |
| Approval UI | Airtable views | Hub v2 web (hv-hub-v2-web on ECS) |
No rebuild of the 6 ClawBot/n8n producers (FIN-01, CMP, DRV, Hauling Hub). They keep writing to robin_tasks via the existing path while Robin's orchestrator is stood up next to them. Once 3-5 scopes are running on AWS end-to-end, migrate producers one at a time — same playbook as BO-26 + Send Approved Tasks.