Ben-Agent Email (Resend)
Canonical email inbox for 0 Finance operations.
Purpose
Manage inbound and outbound email for ben-agent@zerofinance.ai using Resend and the existing AI email pipeline.
Canonical Inbox
-
Domain defaults to zerofinance.ai via AI_EMAIL_INBOUND_DOMAIN .
Inbound Flow (Required)
-
Resend catch-all or routed domain receives inbound email.
-
Resend webhook posts to POST /api/ai-email .
-
Webhook signature verified with RESEND_WEBHOOK_SECRET .
-
AI email pipeline parses, responds, and updates session state.
Outbound Flow
-
Send via Resend with from: "Ben Agent <ben-agent@zerofinance.ai>" .
-
Replies and confirmations are sent through packages/web/src/lib/email-provider/resend-provider.ts .
Environment (.env)
Create a collocated .env file at:
.opencode/skill/ben-agent-email/.env
Required values:
RESEND_API_KEY= RESEND_WEBHOOK_SECRET= EMAIL_PROVIDER=resend AI_EMAIL_INBOUND_DOMAIN=zerofinance.ai
Credential Missing Behavior
-
If RESEND_API_KEY or RESEND_WEBHOOK_SECRET is missing, ask the user to provide them and stop.
-
Do not invent credentials or proceed without explicit access.
Entities + CRUD Coverage
-
Email sessions: create/read/update via AI email pipeline; delete not supported.
-
Messages: create (send/reply), read (session history), update (follow-up), delete not supported.
-
Attachments: create (persist), read (load), update not used, delete not supported.
Tools / Interfaces
-
packages/web/src/app/api/ai-email/route.ts
-
inbound webhook handler.
-
packages/web/src/lib/email-provider/resend-provider.ts
-
Resend send/receive.
-
packages/web/src/lib/ai-email/*
-
session state, prompts, attachment handling.
Completion Signals
-
complete : inbound message processed and response sent.
-
continue : awaiting user clarification or confirmation.
-
error : provider failures or invalid webhook signature.
Example Prompts
-
"Check ben-agent@zerofinance.ai for new invoices and summarize."
-
"Reply to the latest sender confirming we received their request."
-
"Draft a follow-up asking for missing bank details."