AstraRadinternal

Lead Blocking - Design Picker

Three modules, three variants each. Pick one per module. They combine, so A2 + B1 + C3 is a valid answer.
Mockup - Select - Plan - Build

Blocking a sender, without ever losing the evidence

What it is: the screens for marking a lead as spam so it stops reaching Slack, stops reaching your inbox, stops sending the submitter an automated receipt, and moves out of the working leads list. Every block is made by you, over a field you choose, and every block can be undone.

The real morning this is for

At 10:10 on 15 August you get a Slack ping: a rate card request from Robertham, 90 studies a month. At 10:11 another, 457 studies. At 10:13 two more. Four different email addresses, four unparseable phone numbers, and the same one-line question in Italian, Georgian, Welsh and Irish. It is the same bot that hit you on 10 and 12 August as AR-Q-16 and AR-Q-21, cost you two follow-up emails, and sat in the CRM as a multi-hundred-study prospect.

You open the lead. You want two things: make this stop, and be sure you have not just told the system to ignore a real hospital. The four addresses rotate, so blocking the address catches one of four. Organization is the field that stays still.

The backend is already built and tested, so these choices are only about the screens

Rules match on email, email domain, organization, contact name, phone (digits only, so +86 577 838 695 and 86577838695 are one rule) or message text. A blocked submission still gets the normal thank-you page and is still written down, so the bot learns nothing and you keep the evidence.

Three safety rails are server-side, not screen-side, so no design here can lose them: a rule cannot be empty or under three characters, a rule matching more than 25 stored leads is refused unless you confirm it deliberately, and INTAKE_BLOCKLIST_ENABLED=false turns every rule off at once. Leads already converted into CRM pipeline are never swept.

Module A

Making the block

You are looking at AR-Q-26 in the leads list and you want it to stop. The decision you have to make is which field the rule matches on, and the thing that makes that decision safe rather than a guess is seeing how many stored leads each choice would archive before you commit.

astrarad.com/admin/leads
Default - the card as it is today

Robertham

Aug 15, 10:10 · #26
Roberthamaogradyrn@gmail.com86577838695~90 studies/mo

Ciao, volevo sapere il tuo prezzo.

Block sender pressed - panel opens inside the card

Robertham

Aug 15, 10:10 · #26
Roberthamaogradyrn@gmail.com86577838695~90 studies/mo

Ciao, volevo sapere il tuo prezzo.

Block this sender by

Also archive the 6 leads this already matches
Variant A1

Inline panel

The panel opens inside the card that prompted it.

Why this shape

The evidence stays on screen while you decide. The message, the phone and the volume are still right there above the choice, which is what tells you this is a bot rather than a buyer.

The narrowest option that catches more than one lead is preselected, so the common case is one click.

Looks like

  • Radio list, one row per field
  • Live match count on every row
  • Over the ceiling turns red and says so

Trade-offs

  • Card grows tall, pushing other leads down
  • Long message text can crowd the value column
astrarad.com/admin/leads
Block sender pressed - panel with blast-radius bars

Robertham

Aug 15, 10:10 · #26
Roberthamaogradyrn@gmail.com86577838695~90 studies/mo

Ciao, volevo sapere il tuo prezzo.

Block this sender

Pick the field that stays the same when they come back. The bar shows how much of your stored table each choice would archive.

Match onValueBlast radius
Organizationrobertham
6 leads
Emailaogradyrn@gmail.com
1 lead
Email domaingmail.com
41 · too broad
Phone86577838695
1 lead
Message containsvolevo sapere il tuo prezzo
1 lead
Also archive the 6 leads this already matches
Variant A2

Blast-radius table

The same choice, read as a comparison rather than a list.

Why this shape

A bar makes the difference between 6 and 41 immediate rather than something you read and convert. The gmail.com row is visibly the wrong answer before you have finished reading it.

Columns line up, so long values and long messages do not distort the layout the way they can in a sentence.

Looks like

  • Table, one row per field
  • Proportional bar, green to red
  • Panel sits below the card, not inside it

Trade-offs

  • Heavier, more chrome for one decision
  • Bar is proportional to your biggest option, which can flatter a mid-sized one
astrarad.com/admin/leads
Step 1 - choose the field

Robertham

Aug 15, 10:10 · #26
1Choose
2Confirm

What stays the same when they come back?

Step 2 - see exactly what you are about to archive

Robertham

Aug 15, 10:10 · #26
1Choose
2Confirm

Blocking organization is exactly "robertham"

These 6 leads leave your list. Nothing is deleted, and Restore puts any of them back.

AR-Q-29 Robertham · aferreirai@rogers.com · Aug 15, 10:13 · 4/mo
AR-Q-28 Robertham · camsulli@gmail.com · Aug 15, 10:13 · 209/mo
AR-Q-27 Robertham · camsulli@gmail.com · Aug 15, 10:11 · 457/mo
AR-Q-26 Robertham · aogradyrn@gmail.com · Aug 15, 10:10 · 90/mo
AR-Q-21 Robertham · henrydixon487@gmail.com · Aug 12 · 631/mo
AR-Q-16 Robertham · henrydixon487@gmail.com · Aug 10 · 793/mo
Variant A3

Two steps, named leads

Choose, then see the actual leads before confirming.

Why this shape

A count tells you how many. This tells you which. If a real hospital were about to be swept up by a careless rule, this is the only variant where you would read its name before pressing the button.

That matters most for the rules you will be tempted by later, on message text or domain, where the match is fuzzier than an exact organization.

Looks like

  • Numbered two-step inside the card
  • Named preview list with reference codes
  • Destructive button only on step two

Trade-offs

  • Two clicks instead of one, every time
  • Preview list needs its own scroll past ~10 leads
Module B

Seeing what was blocked

Your words: there can be mistakes. This is the surface that makes a mistake findable and reversible. It is not an archive you never open; it is the place you check when a buyer says they filled in the form and never heard back.

astrarad.com/admin/leads?state=blocked

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

Robertham Blocked

Aug 15, 10:10 · #26
Roberthamaogradyrn@gmail.com86577838695~90 studies/mo

Ciao, volevo sapere il tuo prezzo.

rule 3 · organization is exactly "robertham" · blocked 15 Aug 10:22 by rafael
This one had already reached Slack before the rule existed, so restoring it sends nothing new.

Robertham Blocked

Aug 15, 10:13 · #29
Roberthamaferreirai@rogers.com81486468273~4 studies/mo

Dia duit, theastaigh uaim do phraghas a fháil.

rule 3 · organization is exactly "robertham" · blocked 15 Aug 10:22 by rafael

Robertham Blocked

Aug 12, 14:02 · #21
Roberthamhenrydixon487@gmail.com~631 studies/mo
rule 3 · organization is exactly "robertham" · blocked 15 Aug 10:22 by rafael
Variant B1

Same cards, greyed

A blocked lead looks like the lead it is, only quieter.

Why this shape

Nothing new to learn. The message, the volume and the address are all still visible, which is exactly what you need to judge whether a block was wrong.

Search and a date filter are here because the list only grows, and a false positive that has fallen off the first page might as well not exist.

Looks like

  • Live card at reduced contrast
  • Rule, time and author on every card
  • Restore says what it will and will not send

Trade-offs

  • Tall. Six spam leads fill the screen
  • Repeats the rule line on every card
astrarad.com/admin/leads?state=blocked

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

2 selectedRestoring sends to Slack only where nothing was ever sent.
LeadContactMessageBlocked by
Robertham
AR-Q-29 · Aug 15 10:13
aferreirai@rogers.com
81486468273 · 4/mo
Dia duit, theastaigh uaim do phraghas a fháil.rule 3
organization
Robertham
AR-Q-28 · Aug 15 10:13
camsulli@gmail.com
87324478729 · 209/mo
Hi, roeddwn i eisiau gwybod eich pris.rule 3
organization
Robertham
AR-Q-27 · Aug 15 10:11
camsulli@gmail.com
82884579124 · 457/mo
Hi, მინდოდა ვიცოდე თქვენი ფასი.rule 3
organization
Robertham
AR-Q-26 · Aug 15 10:10
aogradyrn@gmail.com
86577838695 · 90/mo
Ciao, volevo sapere il tuo prezzo.rule 3
organization
Robertham
AR-Q-21 · Aug 12
henrydixon487@gmail.com
631/mo
Catalan, 631 studies a monthrule 3
organization
Robertham
AR-Q-16 · Aug 10
henrydixon487@gmail.com
793/mo
Hawaiian, 793 studies a monthrule 3
organization
Variant B2

Dense table

Built for the day there are two hundred of these.

Why this shape

Six rows fit without scrolling and the repeated organization becomes obvious as a column. Filtering by rule answers the question that actually matters when something looks wrong: what else did rule 3 take?

Bulk restore is the recovery path for a rule that turned out to be too broad, and it is only practical in a table.

Looks like

  • Checkbox column with a bulk action bar
  • Filter by rule and by date
  • Message truncated to one line

Trade-offs

  • Truncated message hides the thing that proves it is spam
  • Reads as data, less like a person who wrote to you
astrarad.com/admin/leads?state=blocked

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

rule 3organization is exactly "robertham"6 leads
AR-Q-29Roberthamaferreirai@rogers.com · Dia duit, theastaigh uaim do phraghas a fháil.
AR-Q-28Roberthamcamsulli@gmail.com · Hi, roeddwn i eisiau gwybod eich pris.
AR-Q-27Roberthamcamsulli@gmail.com · 457 studies a month
AR-Q-26Roberthamaogradyrn@gmail.com · Ciao, volevo sapere il tuo prezzo.
AR-Q-21Roberthamhenrydixon487@gmail.com · 631 studies a month
AR-Q-16Roberthamhenrydixon487@gmail.com · 793 studies a month
by handarchived without a rule1 lead
AR-Q-19Test Submissionqa@example.com · duplicate of AR-Q-18
Variant B3

Grouped by rule

Organised by the decision, not by the date.

Why this shape

The question you will actually arrive with is "what did this rule take", and this answers it without a filter. One rule, one group, one Undo this rule that restores the whole group at once.

Rows archived by hand, with no rule, get their own group rather than looking like they came from somewhere.

Looks like

  • One panel per rule with a header count
  • Group-level undo next to per-row restore
  • Compact single-line rows

Trade-offs

  • Chronology is lost, which is how you would spot a new wave
  • Many small rules means many small groups
Module C

The rules you have made

Rules accumulate, and a rule that has caught nothing in two months is one you should be able to notice and retire. The number that matters on this screen is hits: it is the only honest answer to whether a rule is still earning its place.

astrarad.com/admin/leads?state=rules

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

RuleNoteHitsLast hitAdded
organization is exactly
"robertham"
Form spam, four in three minutes. CleanTalk blacklisted. 6
2 hours ago rafael
15 Aug
email is exactly
henrydixon487@gmail.com
Superseded by rule 3, kept as a belt and braces. 2
3 days ago rafael
13 Aug
message contains
"seo services"
Agency pitches. Turned off, was catching real enquiries. 0
no hits yet
never rafael
2 Aug
Variant C1

Table with hit bars

Everything on one row, sorted by what is working.

Why this shape

Sorted by hits, so the rule doing the work is first and the dead one is last and visibly greyed. A rule with zero hits after a month says "no hits yet" in plain words rather than leaving you to interpret a zero.

Looks like

  • Hit count as the visual anchor
  • Inactive rules dimmed in place, not hidden
  • Turn off before delete, in that order

Trade-offs

  • Three buttons per row is a lot of chrome
  • No sense of what the rule actually caught
astrarad.com/admin/leads?state=rules

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

organization is exactly "robertham"

Form spam, four in three minutes. CleanTalk blacklisted.

6
leads caught
Last caught 2 hours agoAdded by rafael, 15 AugFrom AR-Q-26
email is exactly "henrydixon487@gmail.com"

Superseded by rule 3, kept as a belt and braces.

2
leads caught
Last caught 3 days agoAdded by rafael, 13 AugFrom AR-Q-21
message contains "seo services" Off

Agency pitches. Turned off, was catching real enquiries.

0
no hits yet
Never caught anythingAdded by rafael, 2 Aug
Variant C2

Rule cards

Hits as the hero number, one card per decision.

Why this shape

Matches the leads list you already read, so the whole page is one visual language. The hit count is large enough to scan down the page without reading anything else.

Room for the full action set in words, including Undo this rule, which is hard to fit in a table row and is the action you want most when something has gone wrong.

Looks like

  • Same card shell as a lead
  • Big count, right aligned
  • Off rules dimmed with an explicit chip

Trade-offs

  • Only three rules fit on a screen
  • Harder to compare hits across many rules
astrarad.com/admin/leads?state=rules

Leads

Quote requests from astrarad.com. Each one pings Slack unless the sender is blocked.

RuleHitsMost recent catch
organization is exactly "robertham"
rafael, 15 Aug · from AR-Q-26
6
2 hours ago
AR-Q-29 Robertham
aferreirai@rogers.com · "Dia duit, theastaigh uaim do phraghas a fháil."
email is exactly "henrydixon487@gmail.com"
rafael, 13 Aug · from AR-Q-21
2
3 days ago
AR-Q-21 Robertham
henrydixon487@gmail.com · Catalan, 631 studies a month
message contains "seo services"
rafael, 2 Aug
0
never
Nothing yet. Turned off on 4 Aug after it caught a real enquiry from Mercy Regional, which was restored.
Variant C3

Table with evidence

Every rule carries the last thing it actually caught.

Why this shape

A hit count tells you a rule is firing. The most recent catch tells you whether it is firing at the right thing, which is the question that matters and the one no count can answer.

The dead rule uses that column to explain itself: it caught a real hospital once, that lead was restored, and it was turned off. That is the story you would otherwise have to reconstruct.

Looks like

  • Four columns, evidence given the widest
  • Two visible actions, rest behind More
  • Off rules keep their explanation

Trade-offs

  • Widest layout of the three
  • More hides Apply and Undo one click deep
After you pick

What happens next

Your picks get built 1:1, translated to the project's oklch tokens with every pixel value preserved, and verified with Playwright screenshots at 1440x900 against these frames. The backend is already merged behind the picks, so the only work left is the Angular component and its service methods.

Nothing is committed until you say so. The six Robertham leads are cleared with one command through the same code path the button uses, so they carry a real rule and a real reason rather than a migration's guess.

Module A -
Module B -
Module C -

Your picks

Copy this and paste it back into the session. Anything you ticked or typed comes with it.