Warm up welcome email copy + fix null team edge case #404
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/basketball-api#404
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone — discovered during post-signing user flow investigation (2026-04-08).
Repo
forgejo_admin/basketball-apiUser Story
As a parent who just signed their kid's contract
I want a warm, personal welcome email that tells me exactly what to do next
So that I feel connected to the team and know to join GroupMe immediately
Context
Current email copy is functional but generic:
Desired tone (per Lucas):
The GroupMe CTA should be more urgent/clear — it's the primary communication channel for game updates, practice changes, and tournament logistics. Parents who don't join miss critical info.
Also: Outbox event #13 (Creed Draney Jr) has
team_id=11which doesn't exist (teams are 1–7). The processor falls back to "Westside Kings & Queens" with no GroupMe link. The email template should handle missing teams more explicitly, and the contract signing flow should validate team_id before writing to outbox.File Targets
Files the agent should modify:
src/basketball_api/services/email.py— updatesend_contract_signed_email()HTML template (~lines 932-961) and plain text fallback (~lines 966-973)src/basketball_api/services/outbox.py— add validation: warn if team_id in payload doesn't resolve to a real teamFiles the agent should NOT touch:
k8s/— infrastructure changes are in the outbox bug ticketsrc/basketball_api/models.py— schema changes are in the GroupMe tracking ticketAcceptance Criteria
Test Expectations
pytest tests/ -k contract_signed_emailConstraints
Checklist
Related
westside-basketball— project this affectssrc/basketball_api/services/email.py:888-1010— current templatesrc/basketball_api/services/outbox.py:62-110— team resolution logic