Approval queue for Ava outreach

t-265.3·WorkTask·
·
·
Parent:t-265·Created2 months ago·Updated2 months ago

Description

Edit

Create an approval queue system so Ben can review Ava's outreach before it's sent.

Context

Ava will draft outreach campaigns (emails, messages) targeting podcast creators/listeners for PodcastItLater. Ben must approve these before they go out. This is a safety gate for the customer acquisition workflow.

Requirements

1. Queue Storage

  • Directory: _/var/ava/outreach/pending/
  • Approved: _/var/ava/outreach/approved/
  • Rejected: _/var/ava/outreach/rejected/
  • Sent: _/var/ava/outreach/sent/

2. Draft Schema

{
  "id": "uuid",
  "type": "email|message",
  "created_at": "ISO timestamp",
  "subject": "string (for emails)",
  "recipient": "email or identifier",
  "body": "string - the message content",
  "context": "string - why Ava is sending this",
  "status": "pending|approved|rejected|sent"
}

3. Tools for Ava

  • outreach_draft: Create a new outreach draft (saves to pending/)
  • outreach_list: List pending/approved drafts
  • outreach_status: Check status of a draft by ID

4. Telegram Commands for Ben

  • /review: Show next pending draft
  • /approve <id>: Approve a draft (moves to approved/)
  • /reject <id> [reason]: Reject with optional feedback
  • /queue: Show count of pending items

Implementation Notes

  • Create Omni/Agent/Tools/Outreach.hs for tools
  • Add command handlers to Omni/Agent/Telegram.hs
  • Use Aeson for JSON serialization
  • Generate UUIDs with Data.UUID

Tool Schemas

outreach_draft

{
  "name": "outreach_draft",
  "parameters": {
    "type": "email|message",
    "recipient": "string",
    "subject": "string (required for email)",
    "body": "string",
    "context": "string - explain why sending"
  }
}

Files to Create/Modify

  • Create: Omni/Agent/Tools/Outreach.hs
  • Modify: Omni/Agent/Telegram.hs (add tools + command handlers)
  • Create dirs: _/var/ava/outreach/{pending,approved,rejected,sent}/

Verification

  • bild Omni/Agent/Tools/Outreach.hs
  • bild --test Omni/Agent/Tools/Outreach.hs
  • Manual test: Ava creates draft, Ben approves via Telegram

Timeline (2)

🔄[human]Open → InProgress2 months ago
🔄[human]InProgress → Done2 months ago