Mailwoman seal Mailwoman · Design System
TypeScript-first address parser + geocoder

The USPS, rebuilt in 1990s Japan — and it still boots.

A neo-retro system for an address parser that runs in Node and the browser. Saturated magenta and electric blue over deep navy chrome, everything set in monospace, boxy and a little austere — a confident, forgotten relic with a postal-mark seal.

Mailwoman 〒 seal

One typeface, two cuts. Five brand anchors and three meaning-bearing domain palettes. Small radii, hard hairlines, mechanical motion — no bounce, no gradients except the one hero. Every number on screen describes something real. This page is the living reference: foundations first, then all eleven components.

Foundations

Color

A deliberate collision of DOS 16-color, AMIGA Workbench, and Plan 9's rio. Fills are flat and saturated — no tints-of-tints. Five anchors are fixed across themes; semantic surfaces retune for light and dark; three domain palettes encode meaning, not decoration.

Brand anchors

Semantic surfaces & text — retune with the active theme

Confidence ladder — low → mid → high certainty

Component-label hues — one per address class

Pipeline-stage hues — encode which stage, not quality

Foundations

Typography

Iosevka Nexus carries everything — a custom quasi-proportional Iosevka for prose and chrome, its monospace cut for code, numerals, and any tabular data. No serif, no second display face: scale, weight, expanded stretch, and UPPERCASE tracking do all the work. The whole product reads like a well-set terminal.

Families

Iosevka Nexus Web
Quasi-proportional · prose, headings, chrome · weights 400 / 450 book / 700 · normal + expanded
--font-base
Iosevka Nexus Mono
house_number · 0.94 · 8572 ms · −73.9304 · code & tabular data
--font-mono

Type scale

Weights & treatments

Regular
400 · --weight-regular
Book
450 · body default
Bold
700 · headings
Expanded
700 expanded · hero
Parsed Components · Resolved Place · Timing · Layers
UPPERCASE + 0.05em tracking — panel labels & section eyebrows only · --label-caps

Foundations

Spacing & Shape

Boxy and austere: a tight 4px-rooted ramp with a 6px workhorse gap, small radii (nothing is a pill except deliberate badges), hard 1px hairlines and 2px ink rules, and shadows used sparingly. Workbench window chrome, not Material elevation. Motion is quick and mechanical — no bounce.

Spacing scale

Radii

Borders & rules

1px hairline --border-hairline
2px ink rule --border-ink
Field border --border-field-style

Shadows — used sparingly, never decoratively

--shadow-sm
barely-raised panel
--shadow-md
popovers
--shadow-lg
lifted overlay
--shadow-overlay
dark map controls

Motion

--duration-fast
120ms · hover
--duration-base
200ms · default
--ease-default
cubic-bezier(.08,.52,.52,1) · no bounce

Foundations

Iconography

Near-iconless by design — this is a terminal aesthetic, and Unicode glyphs do the work icons would do elsewhere. The one true brand glyph is the seal: three white bars and a descending stroke forming a stylized 〒 Japanese postal mark. No icon font, no icon library, no emoji.

The seal — lockups

magenta seal
magenta · primary
blue seal
blue
navy seal
navy
bare 〒 · currentColor

System glyphs — Unicode, never an icon set

Components

Core

The primitives every surface is built from — boxy, monospace, flat-fill, with mechanical hover and press. Buttons darken and nudge down 1px; focus is a 2px magenta ring; neutral chips and rows swap their border to magenta on hover.

Components

Data display

The parse-and-resolve readout: a displaCy-style span ribbon tinted by confidence, confidence cells that read as both a bar and a number, the resolver candidate picker, and the proportional pipeline timing bar whose hues encode stage rather than quality.

Content

Voice & Content

Engineer-to-engineer: precise, technical, candid about limits, dry-witted. It reads like good commit messages and design logs — because that's literally what the product's docs are.

Person

Second person for instructions (Type a US address). First-person-plural only in legal/footer. The product refers to itself by name: Mailwoman runs on Node 22+.

Casing

Sentence case for prose and headings. UPPERCASE + tracking for panel labels only. lowercase_snake_case for data tags, always monospace.

Numbers, earned

Confidence to 2 decimals (0.94), timings with units (8572 ms), counts in parens (Roads (39)). Every number describes something real.

Candor

State what doesn't work yet. Model banners admit scope. This honesty is part of the brand — confident, and a little wry.

Do
  • “Parse + resolve” · “or press Ctrl+Enter”
  • Typographic minus in coordinates: −73.9304
  • Glyphs: 〒 ↗ › → ▾ · only
  • “The constraint-solver half.”
Don't
  • No emoji, ever, as UI
  • No decorative stats or data slop
  • No hyphen-minus in coordinates (-73.93)
  • No marketing superlatives