βPENDING
βAPPROVED
βMERGED
βREJECTED
βTOTAL SUBMISSIONS
Pending
Approved
Merged
Rejected
All
0 selected
βPENDING
βHANDLED
βDISMISSED
βTOTAL REPORTS
Pending
Handled
Dismissed
All
These are the 417 products already live in the app. Editing here does NOT go live automatically β
it generates a replacement line you paste into
PRODUCTS_DB in App.jsx, same id, then you push and redeploy as usual.
π Edited, not yet applied (0)
These are saved on this device only. Copy them all at once when you're ready to paste into
App.jsx β each one replaces the existing line with the same id.
Every product in one place β photo, ingredients, guaranteed analysis, UPCs. Photos are shown to customers; everything else here is for your reference. Tap any card to edit it, which goes through the same edit queue as Live Products.
A record of what's happened here β deletions especially. Synced across every device and team member signed in to this account.
Generate codes for gifted Premium. Someone redeems a code from inside the app (Premium screen β "Have a gift code?")
and their account goes Premium instantly β no Stripe purchase needed on their end. You handle collecting payment
from the gift-giver yourself (a Stripe Payment Link works well), then generate and send them a code here.
βUNREDEEMED
βREDEEMED
βTOTAL ISSUED
Which contest?
+ Start a new contest
After creating one, deploy a copy of the contest site files into a new /[slug] folder β each contest is its own folder under contest.truebowl.app, same pattern as this one.
Visibility
Separate from dates below β this is whether any contest UI shows in the app at all right now (the trophy link, the Invites page's contest section, Share TrueBowl's contest link). Off by default, so you can fully configure a contest β dates, prizes, everything β before anyone can see it.
Contest dates
Everything reads from these β the scoring function stops counting new activity after the end date, and the account screen and public page both switch to "ended" automatically. Leave blank and nothing here is time-bound yet.
Point values
Each contest can run different numbers through the same mechanic β these only affect the contest currently selected above, not any other one.
Sweepstakes entries always exclude both Premium bonuses, no matter what's set here β that stays fixed to keep "no purchase necessary" genuinely true.
π Freeze final standings
Locks in the exact leaderboard right now, permanently β a late submission approval or delayed Premium confirmation can't quietly change who won after this. Do this once, after the end date has passed and everything's had a few days to catch up (approvals, payment webhooks). Announcing winners before freezing risks announcing numbers that later shift.
π² Draw the sweepstakes winner
A proper weighted draw β someone with 8 entries genuinely has 8x the odds of someone with 1, not an equal chance per person. Uses frozen standings if you've taken a freeze; otherwise draws from live (unofficial) numbers.
Add a participant
β
TOTAL CHECKS (ALL TIERS)
β
TOTAL LEADERBOARD POINTS
Points come from: referrals who've checked a food Β· referrals gone Premium Β· the referrer's own Premium status Β· approved new-product submissions. Exact values are set per contest above. Sweepstakes entries are the same total minus both Premium bonuses, always.