Daily review queue for fake and throwaway signups

Work through new signups each morning, see in plain words why each one looks risky, then ban, delete, clear, or block them in a few keystrokes.

App
ClerkSlack BotOperationsProductFeedback TriageNotifications & Alerts
PromptCreate

Build me an internal app that my team opens every morning to review new signups and clear fake and throwaway accounts out of our user base. It reads and moderates accounts in Clerk, and posts an end-of-session recap to Slack with the Slack Bot integration. Nothing runs on a schedule: a person opens the app, works the queue, and closes it.

The main screen is a triage queue of recent signups. Load users with the Clerk "List all users" operation, newest first (it sorts newest first by default and also accepts order_by such as -created_at), defaulting to signups from the last 30 days with a "load more" control. Note for the handler: that call returns a bare JSON array with no wrapper and no total count, so page with limit and offset until a short page comes back. Timestamps come through as Unix epoch milliseconds, so convert before displaying. Each row shows the primary email address, whether that email is verified, the signup date (relative plus exact on hover), the number of sign-ins since signup, and the organization memberships for the account, fetched with the Clerk "Retrieve all memberships for a user" operation for the rows currently in view.

Every row carries a risk column, and the risk is presented as readable reasons, never as a bare number. Score on plain heuristics: the email domain is a known disposable or throwaway domain, the domain is free mail, the email address is unverified, the account has zero sign-ins since signup, and there was a burst of signups sharing the same domain inside a short window (default: five or more accounts from one domain within 24 hours). Render the fired reasons as a short phrase like "throwaway domain, never signed in" or "unverified, part of a 20 account burst", with a low, medium, or high band derived from how many and how strong the reasons are. A tooltip or expanded row can list each rule that fired. Do not lead with a numeric score anywhere in the interface.

Group the queue by email domain. A collapsed group header shows the domain, how many accounts it covers, the worst risk band inside it, the time span from first to last signup, and a one line reason summary, and expands to reveal the individual rows. The reviewer can select and act on an entire group at once, so a wave of twenty accounts from one throwaway domain reads as one problem rather than twenty.

The reviewer works the queue with keyboard friendly actions, available per row, per domain group, and in bulk across a multi-select. Support arrow or j and k to move, x to select, shift plus x for a range, b to ban, c to clear as legitimate, d to delete, and a slash to jump to search. Ban uses the Clerk "Ban a user" operation. Delete uses the Clerk "Delete a user" operation and is deliberately separate from ban: it lives behind its own confirmation dialog that names exactly how many accounts are about to be removed and requires a distinct confirm, and it is never the default or accidental action anywhere in the interface. Clearing an account as legitimate uses the Clerk "Merge and update a user's metadata" operation to write a reviewed flag into public metadata, something like signup_review with a status of cleared, the reviewer, and a timestamp. Use the merge operation specifically, because merging deep merges the keys you send while replacing the bucket would wipe any other metadata we keep on the user. Blocking uses the Clerk "Add identifier to the block-list" operation and works for either a single email address or a whole domain, offered right from the row and from the group header.

The reviewed flag is what keeps the queue empty day to day. When the queue loads, filter out any account whose public metadata already carries the reviewed flag, along with accounts already banned or deleted, so a cleared account never resurfaces. Include a "show reviewed" toggle for auditing past decisions, off by default, and show who cleared an account and when. On day two the reviewer should only see genuinely new signups.

A settings view lists everything currently blocked using the Clerk "List all identifiers on the block-list" operation, searchable, showing the identifier, whether it is an address or a domain, and when it was added, with a remove action per row that calls the Clerk "Delete identifier from block-list" operation behind a small confirmation so a bad block can be undone quickly. The same view holds the tunable settings: the lookback window, the editable list of domains we treat as throwaway, whether free mail counts against an account, the burst threshold, and the Slack channel for the recap.

The app keeps a running tally for the current session of accounts banned, accounts deleted, accounts cleared, and domains newly blocked. A "post session summary" button opens an editable preview and sends the recap to the configured trust and safety channel with the Slack Bot "Send a Message" operation: the counts, the list of domains newly blocked, who did the review, and the window covered. Reset the tally after a successful post.

Guardrails to bake in. Bulk actions always state what will happen and to how many accounts before running. Actions run per account and report per row success or failure, with a retry for the failures, and the handlers back off and continue when Clerk rate limits a burst of calls. Nothing is ever actioned automatically: a disposable domain on its own does not prove fraud, so the app's job is to make a human decision fast and well documented, not to auto clean the user list.

What does this prompt do?

  • Puts every recent signup in one queue, newest first, showing the email address, whether it was confirmed, the signup date, how many times the person has signed in, and any teams they belong to.
  • Groups accounts by email domain, so a wave of twenty signups from one throwaway domain reads as a single problem instead of twenty separate rows.
  • Explains risk in plain language like "throwaway domain, never signed in" instead of a mystery score, so the reviewer can decide in seconds.
  • Lets one person ban, delete, clear as legitimate, or block a whole domain, one row at a time or in bulk, and keeps cleared accounts out of tomorrow's queue for good.
  • Posts a short end-of-session recap to your trust and safety channel in Slack with how many accounts were banned, deleted, and cleared, plus the domains newly blocked.

What do I need to use this?

  • A Clerk account for your product, with permission to manage users
  • A Slack workspace and a channel where trust and safety updates should land
  • Someone who owns the morning review, usually five to ten minutes a day
  • A rough idea of which email domains you already consider throwaway (you can add to the list inside the app)

How can I customize it?

  • Change how far back the queue looks (last seven days versus last thirty) and how many signups load at a time.
  • Tune the risk rules: add your own throwaway domains, decide whether free mail like Gmail counts against an account, and set how many signups from one domain in one hour counts as a burst.
  • Pick the Slack channel for the recap and choose what the summary includes.

FAQs

Does a disposable email address mean the signup is definitely fake?
No, and that is exactly why this is a review queue instead of an automatic ban. Plenty of real people use privacy-forward or free mail addresses. The app surfaces the reasons an account looks suspicious and a human makes the call, so a throwaway domain is a prompt to look closer, not a verdict.
Will accounts I already reviewed show up again tomorrow?
No. Clearing an account writes a reviewed flag onto the account record in Clerk itself, not just in the app, so it stays out of the queue permanently even if you open the app on a different computer or a teammate works the queue instead. There is a toggle to show reviewed accounts when you want to audit past decisions.
What is the difference between banning and deleting an account?
Banning blocks the person from signing in but keeps the record, so you can reverse it later and still see the account in your data. Deleting removes the account outright and cannot be undone, so it sits behind a separate confirmation step that tells you exactly how many accounts you are about to remove.
Can I stop a bad domain from signing up again?
Yes. You can block a single address or an entire email domain from the queue, and a settings view lists everything currently blocked. If you block something by mistake, you can remove it from that list in one click.
Do I need a developer to use this every day?
No. A developer connects your Clerk account and Slack once, and after that anyone on the team can work the queue. The whole screen is keyboard friendly, so a reviewer can move down the list and act without touching the mouse.

Related templates

Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Clear your Guru verification backlog in one weekly app

A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.

Guru
Slack Bot
App

Stop letting fake signups skew your numbers.

Clear the queue every morning in a few minutes and get back to a signup count you can actually trust.