Tier-limit states
Quota prompts
These are the modals that appear when a gated action is blocked by the user's current tier. Every prompt below is driven by a TierCapability check at the action site — the UI itself is identical regardless of which capability tripped.
Trigger · POST /imports (URL import past limit)
You've hit your URL-import limit.
Free tier includes 10 URL imports / month. You've used 10 / 10. Upgrade to Pro for unlimited.
Resets June 1 · Pro: unlimited
Trigger · POST /ai/extract (AI calls past limit)
AI extraction is paused.
Free tier includes 50 AI calls / month. You've used 50 / 50. Limit resets June 1.
You can still paste recipes by hand — that path is unmetered.
Trigger · POST /uploads (storage cap reached)
You're out of storage.
Free tier includes 2.0 GB. You're at 2.0 GB. Free up space or upgrade for 20 GB.
Current: 2.04 GB across 147 recipes & 312 photos.
These are illustrative — every gated action (URL import, OCR, AI calls past limit, upload past storage cap, advanced print) uses this same pattern.