Live overview. Automatically refreshed every 60 seconds.
Reading operational signals.
Every Cloud Function invocation in the last 60 minutes, newest first. Tap a chip to filter by function.
The Firestore + Storage rules deploy atomically and must stay a SUPERSET of every app's blocks (Studio, brand-book tools, System Console). This checks the LIVE deployed ruleset for every required match block and confirms no root deny-all catch-all is shadowing them.
Every secret expected by runtime declarations and Common/secrets.md is cross-checked against Google Secret Manager for presence, latest-version age, and rotation status. Values are never read. Runtime secrets missing from the document are surfaced as documentation drift.
All three checks are required. The browser gate and every privileged backend callable fail closed when any check is missing.
users/{uid}.role.developerAccess: true on the same user record.Every staff role assignment in one place. Tap a row to see the full member list with their last sign-in.
Every create, update, and delete to the high-value collections (invoices, payments, staff accounts, clients, jewellery, visits, pricing…), captured by server-side triggers - including writes made by the app, the web tools, background jobs, and external sync. Each entry shows who, what changed (before/after), and when.
Turn audit logging on or off and choose which collections are recorded. Changes apply within about a minute. Noisy derived writes (search keywords, heartbeats, ZATCA archival) are always skipped to keep the log readable and cheap.
Every cost source across FB Ambassadors, F. BINSABBAR Studio, Online Store, Marketing, and the System Console itself. GCP rows fill from Cloud Billing - BigQuery export when enabled; everything else is editable here.
Tap a row to set the monthly target and record this month's actual spend. GCP rows auto-fill once billing export is enabled.
Variable-cost integrations multiply rate x volume. Volumes come from Firestore where wired (WhatsApp conversations), otherwise manual.
AI image tool (Recraft, ~$0.04/image). Daily spend resets at midnight Riyadh time. Set the daily cap below; the per-user cap is automatic (daily limit divided by eligible users) and the wallet balance syncs live from Recraft. PLUS users are alerted once at 80% of the wallet.
System alerts target visible AMBASSADOR PLUS users with developerAccess: true. Business alerts use their own role or capability audience.
Every recorded push and governed alert email, newest first. Open an entry to see the intended audience, active tokens, delivery result, and source link.
Accepted documents stay accepted. Track recurring warnings, SLA status, remediation notes, and resolution evidence here without resubmitting them.
Create a short-lived digest-bound preview, then execute one append-only corrected document. Payment, invoice number, commercial lines, and the rejected evidence remain unchanged.
Reconcile an ambiguous bound event from digest-verified private evidence. Preview and approval never submit to ZATCA. Execution requires a different AMBASSADOR PLUS reviewer and preserves captured payment.
What runs. Each Run-Fix click calls a server-side Cloud Function (runFixAgent) that authenticates the caller, verifies AMBASSADOR PLUS plus developer access, checks the kill-switch, snapshots affected docs, executes the playbook, then writes an audit entry. Outcome pushes target eligible System Console operators.
Disaster recovery. Every mutation snapshots the affected docs to _systemAlerts/fixSnapshots before writing. The Undo button on any history entry restores from the snapshot atomically. The whole agent can be killed by setting _systemAlerts/control.fixAgentEnabled to false in the Firestore console.