Dashboard Overview

- Total Brands
- Total Users
Paid Users
- Demo Brands
- Total Leads
- Total Topics
- Total Prompts
- Pending Prompts
- Queue Active
- Failed Prompts
- Overdue Brands

Brand Status

- Completed
- Running
- Pending
- Failed

Cost — estimate per scoring: prompts × Cloro rate (Claude when active)

Loading...

Visibility by Engine

Loading...

Scheduled Updates

Yesterday's Updates

-

0
Loading...

Today's Updates

-

0
Loading...

Tomorrow's Updates

-

0
Loading...

Missed Scheduled Updates

Loading...

Brands

Users

Name Email Signup Plan Plan Name Type Keywords Used Joined Last Active Actions

Brand Details

Statistics

Topics

Topic Details

Prompts

Topics

Brand Topic Name Status Prompts Progress

Jobs Monitor

Customer Brand Topic Keyword / Prompt Status Last Updated Action

Failed Prompts

Prompts where at least one engine's latest run failed. Review the failed engines, then refresh only those.

LeadList

Name Email Company Source Created

Queue Health

Live view of what the backend is processing right now. These are in-flight jobs, which aren't stored in the database.

Brands scoring now

Loading...

Visibility scoring queue

Loading...

Other queues

Queue Active Waiting Delayed Failed

Cron Monitor

Audit trail of the backend refresh cron (runs every 15 min) plus live refresh health. A brand whose run stays open for hours means results aren't coming back — the early warning for "stuck brand" before the 24h sweep force-closes it.

- Last Cron Tick
- Brands Refreshing Now
- Overdue Brands
- Failed Prompts (total)

Refresh health — brands with open runs

Brand Progress (this run) Open Failed Oldest open run Status
Loading...

Cron run history (latest 50 ticks)

Ran At Due Enqueued Brands Enqueued Billing Skips Swept Runs Rescued Brands Duration Error
Loading...

"Swept Runs" = prompts force-closed after 24h without results. "Rescued Brands" = sweep + catch-all cycle advances. Any non-zero value here means a delivery problem upstream — investigate before it costs credits.

Cloro Webhooks

Every webhook Cloro sent us — accepted or rejected — straight from the scraper's audit log. A healthy system shows a steady stream of "accepted / promoted" rows; rejected rows or a long silence while tasks are running means the webhook path is broken and finalization is falling back to slow polling.

- Received (24h)
- Accepted (24h)
- Rejected (24h)
- Credits Reported (24h)

Webhook log

Received At Brand Topic Prompt Engine Cloro Status Outcome Promote Credits Error
Loading...

Click a row for full details (task ID, idempotency key, prompt ID, user, location). "Promote" = what happened to the waiting poll job: promoted means the webhook finalized the task instantly; job_not_found usually means the poller already finalized it (late webhook — brand/prompt context is unavailable because the job is gone); rejected outcomes never reach the queue at all.

BullMQ Queues

Open in new tab

The raw BullMQ boards, embedded: inspect, retry, or clean individual jobs. Backend = visibility/exports/emails queues; Scraper = per-engine Cloro queues + the render queue (where scrape:done delivery lives).