[westside-email-agent] Send monthly fee reminder emails (operational, after monthly query lands) #514

Open
opened 2026-04-25 02:25:03 +00:00 by forgejo_admin · 0 comments
Contributor

Type

Task

Scope

Send monthly fee reminder emails to parents with payment due, using existing infrastructure plus the new query_monthly_fee_due (added in the parallel feature ticket). Zero code changes needed at execution time — query and layout will both exist.

Depends on: the query_monthly_fee_due PR landing first.

Execution (same shape as the contract send):

  1. Open ~/westside-email-agent && claude
  2. Tell agent: "send monthly fee reminder emails per sop-email-send"
  3. Agent composes payload using query=monthly_fee_due, layout=action, with subject + body + cta_text Lucas approves (CTA points to Stripe customer portal / payment-update URL)
  4. Agent runs sop-email-send 8-step workflow (no contract enhanced gate — these aren't contract emails, but follow the standard nuclear gate)
  5. Blast fires after explicit "send it"
  6. Agent verifies EmailLog row count matches audience size
  7. Comment on this issue: N emails sent, 0 errors

Manual movement: Lucas (or Ava on Lucas's behalf) advances this on send completion.

Acceptance Criteria

  • query_monthly_fee_due is registered and returning expected audience (verified by querying with test_email=draneylucas@gmail.com)
  • Test email sent to draneylucas@gmail.com first (sent_count==1, errors empty)
  • Lucas approves on phone after viewing the actual rendered email
  • Audience count confirmed before blast (Lucas explicit "send it")
  • Real blast fires after explicit second confirmation
  • EmailLog rows == audience count
  • Comment on this issue with: N sent, 0 errors (or specifics)
### Type Task ### Scope Send monthly fee reminder emails to parents with payment due, using existing infrastructure plus the new `query_monthly_fee_due` (added in the parallel feature ticket). Zero code changes needed at execution time — query and layout will both exist. Depends on: the `query_monthly_fee_due` PR landing first. Execution (same shape as the contract send): 1. Open `~/westside-email-agent && claude` 2. Tell agent: "send monthly fee reminder emails per sop-email-send" 3. Agent composes payload using `query=monthly_fee_due`, `layout=action`, with subject + body + cta_text Lucas approves (CTA points to Stripe customer portal / payment-update URL) 4. Agent runs sop-email-send 8-step workflow (no contract enhanced gate — these aren't contract emails, but follow the standard nuclear gate) 5. Blast fires after explicit "send it" 6. Agent verifies EmailLog row count matches audience size 7. Comment on this issue: N emails sent, 0 errors Manual movement: Lucas (or Ava on Lucas's behalf) advances this on send completion. ### Acceptance Criteria - [ ] `query_monthly_fee_due` is registered and returning expected audience (verified by querying with `test_email=draneylucas@gmail.com`) - [ ] Test email sent to draneylucas@gmail.com first (sent_count==1, errors empty) - [ ] Lucas approves on phone after viewing the actual rendered email - [ ] Audience count confirmed before blast (Lucas explicit "send it") - [ ] Real blast fires after explicit second confirmation - [ ] EmailLog rows == audience count - [ ] Comment on this issue with: N sent, 0 errors (or specifics) ### Related - `westside-email-agent` — project this serves - `arch:email-system` - [sop-email-send](https://pal-e-docs.tail5b443a.ts.net/notes/sop-email-send) — workflow - [project-westside-email-agent](https://pal-e-docs.tail5b443a.ts.net/notes/project-westside-email-agent) — parent project - Depends on: `query_monthly_fee_due` PR (parallel ticket on this board)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/basketball-api#514
No description provided.