Dashboard
β
β
β
β
Registered Users
Total user profiles in the country currently being viewed, from that country's nightly stats run (05:00 ET). Click a status to list its users, then a user for their details.
Click a status to list its users.
Select a user to see their details.
User Management
Look up one user by email, in the country currently being viewed, and act on all three counters from the same result.
Rejected videos
Full reset clears the counter to 0; pre-warning reset sets it to 3 — just below the suspension warning at 4.
Video counter
Videos uploaded in the user's current billing cycle. Add 5 gives them five more uploads by lowering the counter — it stops at 0 and never goes negative. Reset clears it to 0, giving back the whole allowance. The cycle runs from their account's day-of-month, so it is not the calendar month. One reduction per user per cycle.
Viewing meter
Video downloaded over the user's rolling 7‑day window, as a percentage of their weekly allowance. Read-only — the apps own this figure. Replays from the device cache cost nothing, so this counts only what crossed the network.
Verification Code
Look up a user's current verification code by their email address.
Membership Tier
Set a user's subscription tier by email (in the country currently being viewed).
Cancel Subscription
Mock a cancellation β turns off auto-renew so the user shows as "canceled but still active" until their cycle ends. Does not change the tier.
Speech Classification
Run classifyBySpeech now for the country currently being viewed, instead of waiting for the 05:00 ET schedule. Dev projects only.
Daily Stats
Run computeStats now for the country currently being viewed, instead of waiting for the 05:00 ET schedule β it writes that country's adminStats document and pushes the shard to global. getStats just reads the latest document back without computing anything. Dev projects only.
Dashboard Test Data
Export the global adminStats collection as CSV, edit it in a spreadsheet, and upload it back. Upload is a bulk replace: dates in the file are written, dates not in it are deleted. Generate builds a synthetic history instead, long enough to fill the monthly chart. Dev projects only.
Video Licensing
Find videos by brand in the country currently being viewed, then licence or unlicence one. Licensing sets the end date 90 days out, matching the default term expireLicences applies to a licence that arrives without one. A licensed video cannot be deleted by its owner, blocks their account deletion, and is skipped by the retention reaper. Only an approved or dismissed video can be licensed. established and pending have not finished moderation β the next 05:00 run can still quarantine or reject an established video β and quarantined/rejected have failed or await a human. The Licence button is disabled for all of those, and the database rules refuse the write regardless of the button. Dev projects only.
AI Calls
Turn the AI model calls (image analysis, video moderation, website lookup) on or off for the country currently being viewed, to save cost while developing. Off = image analysis returns empty and moderation auto-approves. Dev projects only β production always runs the AI.
Re-filmed screen detection
Whether a video that looks like a recording of a screen (TV, monitor, phone) is penalised in the approval score, for the country currently being viewed. Turning it OFF does not stop the check: the score is still measured and still shown on every video's Analysis row β it just stops affecting approve / quarantine / reject. The six content categories (nudity, gore, violence, drugs, sexual content, hate) are unaffected either way.
Finance
Monthly financial statements for the country currently being viewed, held in RTDB under finance/YYYY-MM. Export what is stored as CSV, edit it in a spreadsheet, and upload it back. Upload is a complete overwrite: months in the file are written, months not in it are deleted. Generate builds a synthetic history instead, for trying the shape out before real figures exist. EXECUTIVE only.
Select a video from the list.
QR Code Generator
Encodes a product's details as a QR code for print or packaging. Brand and product are chosen from the videos in the country you are viewing β if a brand has no videos there, it cannot be encoded. The payload is JSON, so a plain phone camera will show it as text; it is meant to be read by the SelfAdds app. Nothing here is saved: close the page and the code is gone unless you have downloaded it.
Fill in the fields and press Generate.
Brand / Product Normalization
Review unmatched or low-confidence labels. Approving an item saves the alias (so it auto-applies in future) and corrects every affected video.
Mass Update Tool
Fold one live value into another β "coke" into "Coca-Cola". Saves the alias so future uploads auto-correct, re-points any other alias that resolved to the retired name, and rewrites every affected video. Counts are read live from the videos node, so they include videos that aren't approved yet.
Notifications
Choose who to notify. Counts are for the country currently being viewed.
Compose your message
This goes to every user in the selected cohort, in the country currently being viewed.
Messages saved for the country currently being viewed, newest first. Delete removes the message permanently.
Internal accounts EXECUTIVE only
Mark an account as internal (a test account) in the country currently being viewed. Release candidates are built against prod, so testing a build means signing into live data β this keeps that testing from reaching real users.
Current internal accounts
Everyone flagged in this country. Re-check before each store submission β these are the accounts whose content is deliberately hidden from users.
Manage Admins
Admin actions across all countries β most recent first. Live for 365 days, then archived.