Entry channels
Owner
Farm owner
Reports, admin commands, schedule management
Manager
Farm manager
Daily operations — mortality, feed, sick birds, vaccines
Super admin
Platform admin
Add farms, manage onboarding invites across tenants
↓
Server
Express 5 — /webhook
Twilio inbound · MessageSid deduplication · role resolution (roles.ts) · state machine dispatch
↓
Flows (stateMachine.ts)
Manager
Mortality
Pen · cause · count decrement · cost ledger
Manager
Feed
Bags · phase · JIT price · inventory · reorder
Manager
Sick birds
Pen · count · symptoms · health event
Manager
Vaccination
Name · pen · JIT cost · inventory decrement
Owner
Reports
On-demand + scheduled cron · Excel · email
Owner
Onboarding
9-question agent · breed selection · defaults
Owner
Admin commands
Update manager · email · report schedule
Super admin
ADD FARM
Invite · nudge · multi-farm confirm
↓
Data layer
Supabase Postgres · 13 tables
Core
Farm data
Multi-tenant from day one — every table carries farm_id
Defaults library
Nigerian norms
Seeded reference data for breeds, feed phases, vaccine schedule, mortality benchmarks
↓
External services
Messaging
Twilio WhatsApp
Inbound webhook · outbound messages · sandbox → production one env var swap
Email + storage
Resend + Supabase Storage
Excel report upload · 7-day signed URL · email from reports@atgrow.shop
Deployment
Railway
Docker · auto-deploy from GitHub main · cron scheduled reports