Custom Filter Builder — two directions

Same filter, drawn two ways, using the real agent fields and live stage values. Goal of this screen: pick where the expanded builder should live and how a rich condition should read.

Worked example shown in both: Licensed in TX or FL  AND  SMS-blastable  AND  not on DNC  AND  Resident  AND  has a Health license, VALID, expiring within 90 days  AND  mailing state = FL.

Direction A

Evolved inline

Stays in the existing left sidebar where custom filters already are — just redesigned: typed inputs, categorized fields, compound license row. Lowest-risk; tight on space.

Custom Filters
Group 1AND ▾
Licensed state LICENSE
is any ofTXFL
×
SMS-blastable CARRIER
is true
×
On DNC list SUPPRESS
is false
×
Residency type AGENT
isResident
×
Has a license where… LICENSE
type containsHealth
status isVALID
expires within90 days
×
Mailing · state ADDRESS
isFL
×
OR

Direction B

Roomy builder drawer

A “+ Advanced filter” button in the sidebar opens a wide drawer over the list. Room for typed Field ▸ Operator ▸ Value rows, visible AND/OR group toggles, nested license sub-group, and a live result count. Quick sidebar filters stay as-is.

Advanced filter builder

matches ≈ 4,210 agents
Group 1 · match ALL (AND)ANY (OR)
Licensed state LICENSE
is any of
TXFL+ add
×
SMS-blastable CARRIER
is
true
×
On DNC list SUPPRESS
is
falseincl. opt-outs
×
Residency type AGENT
is
Resident
×
⛓ Has a license where ALL of:
License type
contains
Health
×
License status
is any of
VALID
×
Expiration date
within next
90days
×
Mailing · state ADDRESS
is any of
FL+ add
×
Both directions use the same underlying rule shape, so the choice here is purely UX — not a data-model commitment. The hard part either way is the typed value inputs (enum multiselect, boolean toggle, “within next N days”, is-set/empty) and the “has a license where…” nested condition. Direction A keeps everything in the place you already like; Direction B gives those two things room to breathe and adds a live count.
blue chip value you picked green positive enum (VALID, true) red negative/suppress CATEGORY field family

Tip: this is a static mockup (no live clicks) — just react in the terminal. I can redraw either direction with different spacing, field grouping, or condition styling.