Access denied
Your account does not have admin access. Add your email to ADMIN_SEED_EMAIL in Cloud Functions, deploy, then click below to claim the admin role.
Dashboard
Track growth, usage, revenue, and platform health.
Growth overview
Daily trend for the selected range.
What needs attention
Live summaryLive user activity
See where users are active right now · UK focus
Active now
—
Connecting…
Top city
—
Sessions (1h)
—
Unique devices
No live activity
When users open the app in the foreground, they appear here with approximate location.
Most active cities
Live product mix
Share of current sessions by app area (updates in real time).
Popular venues
By menu items indexed
Referral pulse
Codes, clicks, and signups
Challenges
Community engagement
Revenue & subscriptions
Revenue when Stripe / billing telemetry is connected; subscription counts are live from Firestore.
Subscription mix
Billable states across all users
Operations
Platform
Live session devices · updates continuously
Wellness volume
Water & steps logged in-app (selected date range)
Command centre
System is quiet. Waiting for users...
Active sessions
Foreground sessions in the last 5 minute window
| User | Platform | Location | Current screen | Intent | Active |
|---|
Subscriptions
Premium customers · synced from RevenueCat webhooks and manual grants
Customers
Click any row to select and manage
Recent events
Latest webhook payloads · 50 rows
All Users
Points & Rewards
Restaurant Management
Click a restaurant to edit. Use the Settings (logo & banner) tab to set the venue card image.
Place requests
Restaurant/place requests from the app (Request a place). Use these to add new venues in Restaurant Management.
| Place name | Address | Chain | Message | Requested | Status | Actions |
|---|
—
Chains
Search allowlist
Chains/restaurants to include in product search even when Open Food Facts has no UK country tag (e.g. Five Guys, Nando's). Used by the data-pipeline ingest.
UK_CHAIN_ALLOWLIST=
Copy into data-pipeline/.env or set when running: UK_CHAIN_ALLOWLIST=term1|term2
- —
When hidden, chain won't appear in the app
- —
Approved deals for this chain (count in KPI above). Edit or delete any deal below.
- —
To change opening times, use the Settings tab.
When hidden, restaurant won't appear in the app
- —
Set the chain logo and banner image shown on venue cards when the venue name matches this chain.
Name, match patterns, menu ID and active flag: edit from the Chains list via Edit (modal).
Coupon Management
Meal Deal Manager
Bundles and common combinations
Community meal deals
Review and approve or reject user submissions. Approving awards the submitter 5 points.
Submission detail
Select a submission to view and edit.
Help Center
Articles
FAQ Editor
Tickets
Manage and respond to support requests
Filters & Search
Customer satisfaction (CSAT)
Referrals
See all users and who they've referred
Copy / Share message
Message shown when users tap Copy or share their referral code. Use {{CODE}} where the referral code should appear.
Referred users
Legal
Landing page background
Background image for the app welcome/sign-in screen. Supports JPG, PNG and GIF. If no image is set, the default green background is used.
Current background
Coach recommendation products
Products the in-app Nutrition Coach can suggest (e.g. for sleep or energy). Only these appear in coach replies.
Push Notifications
Campaigns are sent to the mobile app (iOS & Android) via Expo Push. Users must have notifications enabled in the app.
| Title | Type | Target Users | Date Sent / Scheduled | Status | Sent | Opened | Open rate | Actions |
|---|
System push copy
Automated notifications sent from Cloud Functions (social, support tickets, moderation, roadmap, meal nudges, challenges, scheduled goal nudges, etc.). Title and body support placeholders such as {{name}} — keep keys exactly as documented per row. Overrides may take up to ~2 minutes to apply everywhere.
| ID | Label | Category | Placeholders | Actions |
|---|
Data requests
Export or delete requests — respond within 30 days
Pending venue menus
Menus submitted via Menu Analyser. Only the submitter can see them until you approve. Approve to make the menu visible to all users.
Content Moderation
Review user reports: posts, comments, venues, menu data, fake accounts. View details, remove content, ban users, or reply to the reporter.
Report details
Social moderation
Review reports for social posts, comments, and profiles. Look up a user by Firebase UID to see account info and block relationships.
Quick user lookup (UID)
Report details
Community Challenges
Create and manage time-based challenges. Launching a challenge sends a push to all users.
Challenge detail
Environment
Points for actions, referral, and other app behaviour
Points & rewards (appConfig/pointsConfig)
These values are used by Cloud Functions when awarding or deducting points. Changing them affects future actions only.
Awarded when an admin approves a submitted venue menu
Awarded when a community meal deal submission is approved
Reserved for referring a friend (if you enable it)
Earned points expire after this many months
Points required to convert to premium (e.g. 100)
Days of premium granted when user redeems points
Feature control (appConfig/featureControls)
Enable or disable app features globally without a new app release.
Danger zone — reset all users' points
This is not a "refresh". It zeros every user's points balance, deletes each user's points_ledger, and resets first-time reward flags. Use for staging resets or catastrophic data fixes only.
API usage & cost management
Track third-party and cloud spend. Link out to provider billing consoles; log actuals from invoices here. Authoritative totals live in Google Cloud / Firebase billing — this page is your team's working view.
Signup funnel & null rate (UTC)
Signups = new users doc · Onboarding = profile/onboarding complete · First log = first diary entry (meal/steps/water). Drop-off % compares stage to signups this month.
| Date | Signups | Onbd | 1st log |
|---|---|---|---|
| Loading… | |||
Automated API usage (UTC · last 30 days)
Gemini: Coach = chat replies · Txt = text menu estimate · Scan = completed photo menu scans · PV/PE = verify/extract API calls. Mail = transactional/GDPR email sends (SendGrid; legacy resend counts are included in totals). Set rough USD rates below to forecast Gemini spend.
| Date | Coach | Txt | Scan | PV | PE | Plc | Img | Alg | |
|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||
Monthly budget (USD)
Soft cap for planning. Compare against logged spend below.
Gemini forecast (USD per unit)
Rough blended cost for budgeting (see Gemini pricing).
Quick links — billing & usage
Replace project/_ in Firebase URLs with your project ID after opening the console.
Spend summary
Totals from your manual log (this month & all-time).
Add spend entry
| Month | Source | Amount (USD) | Notes | |
|---|---|---|---|---|
| Loading… | ||||
Email Templates
SendGrid dynamic template IDs · config/email_templates
Templates receive subject, appName, and verifyUrl / resetUrl / appUrl as configured in Cloud Functions.
Audit Log
Full trail of admin logins and actions
Filters
| Time | User | Action | Item / Target | Details |
|---|