PLATFORMS โ
Railway โ
Primarily used for the Discord Bot
Upgrade to paid $5/month on 2/5/2026
Claude โ
Signed up to try Claude Pro for $20/month
Prelude (OTP SMS verification) โ
Provider for signup phone verification (decided 2026-06-22; live on dev since #702). Success-only billing: we pay ~$0.035 (EUR 0.032) per CONFIRMED verification; failed, undelivered, and fraud-pumped sends cost nothing. Pricing: https://prelude.so/pricing (pay-as-you-go Basic plan, no subscription, no minimum; re-verify unit price there before budgeting).
OTP spend is bracketed in two layers (design: SEALED_IDENTITY.md section 11.6; implementation: 2026-07-30 OTP billing spec):
- Layer 1 (graceful, in-app): auth-api caps SMS sends per UTC month (
OTP_MONTHLY_CAP, currently 2000, set on the Cloud Run deploy). Past the cap, signup refuses gracefully ("onboarding in batches"). A daily Cloud Function (otpCapAlert) posts one Discord alert per month when sends cross 80% of the cap. - Layer 2 (hard ceiling, out-of-band): the backstop if Layer 1 is ever bypassed by a bug. Two parts, both operator-console (checklist below).
Observability: admin portal, System Health, Costs tab (sends vs cap, verified count, estimated spend, trailing months). Estimated spend = successful verifications x unit price; the authoritative bill is Prelude's own dashboard.
Layer 2 operator checklist (one-time per billing account) โ
- [x] Prelude console: the account is LOAD-BASED (prepaid credits) and does not auto-reload, so the loaded balance is itself the structural ceiling: when it runs dry, sends stop, spend stops. A temporary cap of $100 is loaded (about 1.4 expected months at cap 2000 x $0.035). Confirmed by operator 2026-07-30. Reload manually; keep the balance near one expected month of spend so a runaway burns at most the loaded amount.
- [x] GCP billing budgets: already in place on billing account
016E39-D38ABC-8EF7A8(verified viagcloud billing budgets list, 2026-07-30): "lantern-app-dev OTP backstop" at $100/month and "Firebase Project lantern-app-dev" at $25/month on dev, "Firebase Project lantern-app-prod" at $25/month on prod, each with 50/90/100% current-spend alert rules. Budget emails go to the billing admins on the account. These catch every cost path, not just OTP. - [x] Ceilings recorded above. Note: GCP budgets ALERT but never stop spend; the true hard stops are the Prelude prepaid balance (OTP) and Layer 1's in-app send cap.
Unit price source of truth โ
OTP_UNIT_PRICE_USD env on auth-api (default 0.035 in code). If Prelude's price changes, update the env in the deploy workflow and this section together.