Skip to content
Paul Banks
  1. ←Work

EXHIBIT · IRON LINK INTEL

42B+ records · 200+ sources · one terminal

ECHO

A defense-grade OSINT threat platform, rebuilt around one diagnosis: the data was all there, and the analyst was doing the reading. A Nielsen evaluation of seven operator surfaces averaged 47 out of 100. The rebuild moves that work into the system. As Lead Product Designer I owned the brand — the “Architecture of Certainty” identity — and the operator terminal that replaced a fragmented twelve-tab stack. Confidential engagement; every screen here is rebuilt to the shipped spec, on synthetic data.

Role
Lead Product Designer · Brand & Product
Year
2024–2025
Duration
Ongoing
Tools
Figma · Cursor · Next.js

BRAND SPECIMEN

01

THE PROBLEM

Three days, four tools, one answer.Three days, four tools, one answer.

We designed against a composite research persona: Alex Mercer, a senior OSINT analyst — methodical, evidence-first, quietly skeptical of claims and loyal to patterns. Alex is judged not on finding something but on producing something that holds up: in a brief, in a court, under a colleague’s scrutiny. Running a full identity correlation on a hard target took three days across four separate tools. Not because the data was missing — the platform indexes 42 billion records — but because it was scattered across a dozen surfaces with no shared chain of custody, and every handoff was a chance to lose the thread. On a platform where the cost of a missed signal is measured in lives rather than service-level agreements, that is not a data problem. It is an interface problem.

42B+records indexed across 200+ cross-referenced data sources — the data was never the bottleneckIron Link Intel platform (public)
  • Three days per correlationFour tools, four mental models, no shared chain of custody
  • Twelve tabs per analystContext rebuilt by hand at every switch
  • Signal-to-noiseCatching the 1% that matters without drowning in the 99%
  • Cost of failureMeasured in lives, not service-level agreements
  • The ECHO operator terminal running in the browser, with its labelled sidebar, metric row and live threat feed.Open this screen
    The terminal Alex works in. Open it — it runs full-screen at the width it was designed for, with the real navigation.
  • The rebuilt outward-facing story — the Architecture of Certainty — that now leads analysts and buyers into the terminal.
  • The public marketing that preceded it — generic OSINT stock imagery, no distinctive claim.

Open the live terminal →

Founder-plus-ten team — I owned brand and product research, hands on: I ran the heuristic audit myself, wrote the identity, and designed the operator surfaces. Confidential engagement · Alex Mercer is a composite research persona, not a named customer.

02

THE MECHANISM

Seven surfaces, scored against one question.Seven surfaces, scored against one question.

My UX heuristic method audits a product the way an analyst audits a source: is this signal strong, reproducible and defensible? I ran a Nielsen evaluation across all seven operator surfaces and scored each against one question — does this make the consequential signal legible, or does it add noise? The average came back at 47. The failures were not missing capability; they were the same failure in seven costumes. Equal-weight widgets so nothing read as urgent. Charts that showed a spike but never the incidents behind it. Twelve unlabeled icon tabs demanding recall instead of recognition. Requests vanishing between stages. Intelligence that cannot be traced cannot be cited, so every claim now carries its provenance and a confidence that moves as evidence lands.

47 → 86average Nielsen heuristic score across seven operator surfaces — audited baseline → projected target, conditional on the shadcn/ui component strategyInternal Echo Audit · heuristic evaluation
  • Overview & trends · 40 → 86Aesthetic & minimalist design — a wall of widgets with no focal point
  • Dashboard navigation · 55 → 90Recognition rather than recall — twelve unlabeled icon tabs
  • Analytics · 35 → 84Diagnose & recover — data vomit, charts that dead-end
  • High-risk personnel · 42 → 87Flexibility & efficiency — table fatigue under time pressure
  • Identity profiles · 45 → 81Interaction fatigue — a separate screen per data category
  • RFI management · 50 → 85Visibility of system status — requests disappear between stages
  • Settings & details · 65 → 88Consistency & control — a flat wall of ungrouped toggles
The rebuilt overview: grayscale at rest, labelled navigation, a focal threat trend and tier-badged feed rows.
Audited · 47Rebuilt · 86
Drag to move between them. Left: the audited original, redrawn on synthetic content — five unlabelled icons, twenty ungrouped chips, every card the same weight, raw scores with no interpretation. Right: the rebuild. The real screens carry live data and cannot be shown.
  • ECHO reasoning surface showing a live chain of thought, a forming confidence gauge, and a provenance panel with signed chain of custody.Open this screen
    Confidence that forms as evidence lands, with provenance attached to every claim. Rebuilt to spec; synthetic data.

UX heuristic method · applied as the product’s design spine

03

THE INSIGHT

The problem was cognitive load, not features.The problem was cognitive load, not features.

I did not get here quickly. I went deep on competitive analysis and brand persona first, chasing market fit, and spent longer there than the problem warranted — none of that upstream work told me why an analyst could not read the screen. The unlock came from the audit, and it was smaller and duller than the strategy work that preceded it: every one of those seven failures was the interface forcing the analyst to do the hard work of finding meaning in the noise. That reframes the whole brief: the job is not to add capability, it is to move labour from the human to the system. The clearest expression of it is chromatic. The fastest way to make one thing loud is to make everything else quiet, so the board sits fully grayscale at rest and about two ink steps dim, and hue is reserved entirely for tier — red means alert and nothing else. When a threat crosses a threshold, that component alone restores its authored colour. Same layout, same components; the only thing that changes is that meaning has arrived, and the colour arrives with it. The analyst stops hunting for the change because the change announces itself.

  • ECHO overview at rest: the entire dashboard rendered in grayscale with no colour anywhere.Open this screen
    At rest — fully grayscale. Nothing has earned attention yet.
  • The same ECHO overview holding a critical alert, with red tier badges and a critical rail.Open this screen
    Critical tier arrives — colour returns only where it carries meaning.

Monochrome-at-rest runtime · rebuilt to spec, synthetic data

04

THE DESIGN RESPONSE

Four transfers of work, one system to hold them.Four transfers of work, one system to hold them.

Each surface got the same treatment: name what the interface was making the analyst do, then move it. Navigation stops asking them to remember what an icon meant. Charts stop being dead ends. Tables stop demanding a fifty-row scan. Requests stop hiding their own status. Underneath, the rules are enforced rather than documented — every colour resolves to a token, and a linter reads those tokens back out of the stylesheet and fails the build on drift instead of letting it ship quietly. The same system holds from a 390px phone up to a wall display where it scales rather than merely widening. Attention returned in a redesign leaks back out one hardcoded colour at a time; this is what stops that.

1,028 → 0hardcoded colour values converted to design tokens across ten screens, and drift violations remaining under the enforcerECHO token migration · echo-lint drift compiler
  • Stop making them hunt

    • Bento grid gives the threat trend 2x the area
    • Monochrome at rest; hue reserved for tier
    • Red means alert and nothing else
  • Stop making them remember

    • Sidebar defaults to icon plus label
    • Status badges push activity into the nav
    • Master-detail keeps the subject pinned while records open beside it
  • Stop making them dig

    • No chart is a terminus — every one drills through
    • Triage stack with tier badges and facet filters
    • Pinned rows hold position regardless of sort
  • Stop making them chase

    • Visible pipeline with stage and ownership
    • SLA countdown that changes state near a deadline
    • Settings grouped into identity, system, preferences — and searchable
  • ECHO investigations: labelled sidebar navigation beside a triage list and a pinned case file panel showing timeline and competing hypotheses.Open this screen
    Labelled nav, and a case file that stays in view while records open beside it. Rebuilt to spec; synthetic data.
  • ECHO threat map rendering a rotatable globe with intercept arcs converging on a collection node.Open this screen
    The map is a different instrument from the feed — open it and drag the globe to read routing as distance.
The system behind the screens

ECHO’s design language

A monochrome-at-rest board where colour is reserved entirely for tier, text has exactly two decision-grade brightnesses, and one iris thread marks what is active. Every value is read live from the running stylesheet, never retyped.

Read live from the running stylesheet · --art-echo-* · checking 17 tokens…

Neutral base — monochrome at rest

--art-echo-r0Background — app canvas…
--art-echo-r1Sidebar canvas…
--art-echo-r4Card / popover…
--art-echo-r5Muted — wells, input fills…
--art-echo-r6Secondary — hover surface…
--art-echo-r7Accent — stronger hover…
--art-echo-r8Divider strong / disabled fill…

Text — two levels, and the companions that are not text

--art-echo-r12Foreground — Level 1 · 19.0:1 AAA…
--art-echo-r10Muted foreground — Level 2 · 7.7:1 AAA…
--art-echo-r11Bright icon / hover / nav chrome — not a third body tier…
--art-echo-r9Dim — resting mono meta · 4.0:1 · never body copy…
--art-echo-dim-2Dim-2 — faintest rest switch · non-text only…

Signal — meaning only, always paired with icon or label

--art-echo-criticalCritical · Crimson · 4.6:1 — ≥600wt or ≥16px on cards…
--art-echo-elevatedElevated · Saffron · 11.5:1 AAA…
--art-echo-guardedGuarded · Emerald · 5.9:1 AA…

Brand — active and selected only

--art-echo-brandIris · fills and rings only · never text (3.9:1)…
--art-echo-brand-fgIris text on dark · 8.9:1 AAA…

Typefaces

Interface · InterCoordinated doxxing campaignEverything an analyst reads. One face, no display cut — a threat board is not a place for personality.
Numeric · JetBrains Mono0.94 · 14,208 · 00:38IDs, metrics and timestamps. Tabular figures, so numeric columns align while someone is scanning fast.

System principles

Monochrome at rest

The screen is grayscale until something matters. The fastest way to make one thing loud is to make everything else quiet, so the board sits fully grey and about two ink steps dim until a threat crosses a threshold.

Colour is a signal

Hue only where it carries meaning, never decoration. Red means alert and nothing else. When a component restores its authored colour, the layout has not changed — meaning has arrived, and the colour arrived with it.

Two-level text

Exactly two brightnesses, and no third. On a life-safety surface a faint tier is the first thing to disappear when someone is scanning fast, and that is exactly where a missed detail becomes a wrong call.

One brand thread

Iris appears on active and selected, and never competes with a signal. It is a fill and a ring, never text — at 3.9:1 it has no business carrying a word someone has to read.

Living, not static

Motion answers one question: what state does this communicate? A pulse means live, a ripple means origin, a rise means arrival. Every one of them collapses when the reader has asked to reduce motion.

The contract, four ways out

Reading live values from the stylesheet…

Written for humans and machines

Ten screens shipped with 1,028 hardcoded colour values. Every one is now a token declared in the product's design-tokens.json, mirrored into echo-tokens.css, and read live on this page — so what you see here cannot disagree with what ships. echo-lint is the drift compiler: it reads @echo-* directives out of the source and fails the build when a raw hex reappears. Tokens as law, enforced in CI rather than by convention.

ContractDesign.md · globals.css→AgentsClaude · Cursor · Figma→Gatevalidate-design-system.sh→No driftbuild fails if any of us drifts

Tokens as law · enforced in CI rather than by convention. On provenance: the audit, the design system and the operator terminal are the shipped engagement; the runnable build linked here, its token migration and the responsive range were rebuilt by me for this case study, on synthetic data.

05

THE OUTCOME

Eleven minutes.Eleven minutes.

Seven surfaces, one diagnosis, one repeated move: take the work of finding meaning out of the analyst’s head and put it into the system. None of it is style. Each decision is a quantity of attention handed back to the person doing the judging — and the output at the end of it carries its own stage, classification and confidence, so the brief is defensible before anyone asks.

  • I ran a full identity correlation on a hard target in 11 minutes — what used to take my team three days and four separate tools.
  • ECHO reports pipeline with classification banners, draft, in-review and published states, turnaround time and templates.Open this screen
    Every product carries its stage, its classification and its confidence. Rebuilt to spec; synthetic data.
  • ECHO overview on a 390px phone: drawer navigation, two-up metric cards and a reduced threat feed.Open this screen
    390px: nav becomes a drawer, and the feed keeps tier, threat and score — dropping only supporting meta.

Operator, federal customer · quoted with permission

  1. BRAND & INVESTIGATION TERMINAL

    The "Architecture of Certainty" identity and the unified operator terminal — overview, identity finder, SOCMINT, threat monitor, dark web index, and evidence reports on one surface.

    A single operational cycle — ingest, correlate, report — replacing a fragmented twelve-tab analyst stack.

Directive: [ STATUS: OBSERVING_HUMANS ]

INFOINFO
Paul Banks[ ID: BANKS_P ]

CHARLOTTE_NC // --:-- EDT

Paul Banks

Architect of Intent

Designing for humans, engineering for agents. After 15+ years extracting human patterns, I've pivoted from crafting static interfaces to architecting autonomous systems — building the logic that helps agents understand what people actually need.

> INITIATE_DOWNLOAD: PAUL_BANKS_RESUME.PDF> SEE: BRAND_VOICE_WORK

STATUS: OBSERVING_HUMANS

Directory_01Directory_01

  • INDEX
  • PORTFOLIO
  • DESIGN_SYSTEM
  • RESUME

Directory_02Directory_02

  • THE_PROBLEM
  • THE_PROCESS
  • THE_PROOF
  • THE_PRICE
  • FAQ

Comms_LinkComms_Link

  • EMAIL
  • LINKEDIN
  • BOOK_CALL

Contact_ProtocolContact_Protocol

> LET'S_CHAT

SEQ: 2026.01

SYS.ARCHITECT: PAUL_BANKS // ALL_RIGHTS_RESERVED