Architecture A — Safe / Defensive Architecture B — Distinctive Modern Architecture C — Editorial Mix (Source Serif 4) Architecture D — Editorial / Characterful (Fraunces) Inter · JetBrains Mono · (sans fallback for prose) Geist · Geist Mono · (sans fallback for prose) Geist · Geist Mono · Source Serif 4 Geist · Geist Mono · Fraunces (SOFT 50, opsz auto)
The thesis. The current v0.2 spec ships Inter + JetBrains Mono — the same combination Linear, Notion (pre-Diatype) and most 2020-2024 productivity tools use. That's the "Startup Blue" of typography: safe, free, identical to everyone else. Lume is a distinctive material; Lagoon is a distinctive palette; Type cannot be the place where we revert to defensive defaults. This preview compares three real architectures, all variable-axis, all open-source, all license-free.

§1 — Four architectures

A · Safe / Defensive
Inter · JetBrains Mono
The current v0.2 baseline. Inter is the most-adopted UI sans of the 2020s — Linear, Vercel (pre-Geist), Notion (pre-Diatype) all sat here. JetBrains Mono is its mono counterpart across the dev-tool stack. Both are free, variable-axis, screen-optimised.

For: minimum adoption risk, zero licensing complexity, immediate developer familiarity.
Against (load-bearing): zero typographic differentiation. Anyone using Linear alongside Omadia would not feel a typeface distinction. Lume's material story is undermined by chrome that looks like everyone else's.
Lume coherence: functional, not narrative. The fonts don't fight Lume, but they don't reinforce it either.
B · Distinctive Modern
Geist · Geist Mono
Vercel commissioned Geist in 2023 specifically because "existing monospace fonts" weren't good enough for code-dense developer UIs. The result is a Swiss-design-inspired family with angular terminals, high x-height, short descenders, and a Sans/Mono pair designed as siblings (weights match across families perfectly). Open-source, MIT-licensed.

For: distinctive without being weird; same effort as A; mono and sans were designed together (no "the data column reads heavier than the prose" issue Inter+JBM has).
Against: Vercel-adjacent signal — heavy Vercel users may feel a familiarity tax. No editorial slot — agent-prose still lives in the sans family.
Lume coherence: strong. Angular Swiss-precision terminals read as materialised, not as brushed. The family's deliberate geometry matches Lume's "condensed from light" clarity.
C · Editorial — Source Serif
Geist · Geist Mono · Source Serif 4
Architecture B plus a third slot: editorial serif. Source Serif 4 is Adobe's variable-axis OFL-licensed serif with explicit optical-sizing for body reading. Neutral-transitional — unobtrusive, designed to be a body face that doesn't compete with content.

For: alignment with the 2026 editorial-serif resurgence; maximum differentiation from Inter-SaaS-default; editorial signal makes the agent's narration feel authored.
Against (load-bearing): architecturally identical to Anthropic's approach (Styrene+Tiempos transitional pair). The specific fonts differ (Geist vs Styrene, Source Serif vs Tiempos) but the typographic register reads in the same room. Same risk as Atelier-palette ruled out earlier for Anthropic-adjacency.
Lume coherence: strong, but the serif itself is neutral — it doesn't echo Lume's material in any way.

§2 — Side-by-side, same content

Each column renders in its own architecture's fonts, regardless of the global toggle. Identical content — an agent prose excerpt, a data block, a label. Compare prose warmth, digit precision, label authority.

A · Safe
Inter · JetBrains Mono
Sans Inter · Mono JetBrains Mono · Prose Inter
Three people are under budget — Anna, Bernd, Cara. The Jira tickets show their hours dropping below the 8-hour threshold over the last two weeks.
Anna Schmidt 12 open 5.0 h Bernd Lutz 8 open 7.5 h Cara König 15 open 22.0 h Daniel Roth 22 open 31.5 h
OWNERS UNDER BUDGET · APR 2026
B · Geist
Geist · Geist Mono
Sans Geist · Mono Geist Mono · Prose Geist
Three people are under budget — Anna, Bernd, Cara. The Jira tickets show their hours dropping below the 8-hour threshold over the last two weeks.
Anna Schmidt 12 open 5.0 h Bernd Lutz 8 open 7.5 h Cara König 15 open 22.0 h Daniel Roth 22 open 31.5 h
OWNERS UNDER BUDGET · APR 2026
C · Source Serif
Geist · Geist Mono · Source Serif 4
Sans Geist · Mono Geist Mono · Prose Source Serif 4
Three people are under budget — Anna, Bernd, Cara. The Jira tickets show their hours dropping below the 8-hour threshold over the last two weeks.
Anna Schmidt 12 open 5.0 h Bernd Lutz 8 open 7.5 h Cara König 15 open 22.0 h Daniel Roth 22 open 31.5 h
OWNERS UNDER BUDGET · APR 2026
D · Fraunces (rec.)
Geist · Geist Mono · Fraunces
Sans Geist · Mono Geist Mono · Prose Fraunces SOFT 50
Three people are under budget — Anna, Bernd, Cara. The Jira tickets show their hours dropping below the 8-hour threshold over the last two weeks.
Anna Schmidt 12 open 5.0 h Bernd Lutz 8 open 7.5 h Cara König 15 open 22.0 h Daniel Roth 22 open 31.5 h
OWNERS UNDER BUDGET · APR 2026
What to look for: in the prose row, watch warmth and authority. A has Inter — quiet, neutral, identical to the surrounding UI. B has Geist — precise, modern, slightly cooler. C has Source Serif 4 — the prose now has a different voice from the structure around it. The agent's narration reads as narration, not as label text.

In the data row: A reads slightly chunky (JBM digits at 13px). B reads tighter, more proportional (Geist Mono's tabular figures are specifically tuned for sibling-sans pairing). C is identical to B in the data row.

§3 — Agent prose at full size

The full Walkthrough 4 live-research narration as the agent might emit it, rendered in the currently-selected architecture. Toggle to see prose change.

Agent · live research narration

I’ve pulled the public-company filings for the three candidates and cross-referenced their AI-strategy disclosures over the past four quarters. Two patterns stand out.

AcmeInsure has been quietly assembling an in-house ML platform since Q2 last year — three senior hires from competitors, two acquisitions of small claims-modeling startups, and a public statement at their Q3 earnings call about "owning the underwriting stack." They are the most internally-confident of the three.

NorthClaim, by contrast, has shifted to vendor partnerships — specifically the announcement of a multi-year contract with a regional Anthropic reseller in January. Their messaging frames AI as infrastructure they consume, not as a capability they own. The product implications are different: shorter sales cycles, but stronger dependency on the vendor's roadmap.

For the proposal, this means AcmeInsure wants to see a co-development pitch and a path to bring the work in-house, while NorthClaim wants a managed-service framing. The same product, two different stories.

Architecture C only: the prose above runs in Source Serif 4 at 16px with optical-sizing enabled, line-height 1.65, max-width 64ch. The serif gives weight to the analysis. Italic and bold both feel authored — designed for prose, not for UI labels.

Architectures A & B: the same prose runs in the sans family (Inter for A, Geist for B). Still legible, but reads as system output rather than as agent reasoning. Watch what happens to the italic "infrastructure they consume" — in sans-italic, it feels like emphasis; in serif-italic, it feels like a quote.

§4 — Data table

Lume surfaces have a vertical luminosity gradient. Mono fonts need to hold their digit weight against a non-flat background. Toggle to see how each mono performs.

Owner Open Budget Left Status Hours Δ
Anna Schmidt 12 5.0 h out of budget −2.5 h
Bernd Lutz 8 7.5 h under budget −0.5 h
Cara König 15 22.0 h ok +4.0 h
Daniel Roth 22 31.5 h ok +1.0 h
Eva Weiß 6 2.0 h out of budget −6.0 h

§5 — Code / terminal

Real surface event payload, with ligatures (!=, >=) and code-style highlighting. Toggle to see how each mono handles tight spacing + ligatures + the digit-letter-disambiguation glyphs.

// surface_patch arriving from Tier 2 { "type": "surface_patch", "canvasSessionId": "cv-acme-q1-2026-0117", "surfaceSeq": 1042, "basedOnRevision": 4, "producesRevision": 5, "patches": [ { "op": "add-column", "target": "tbl-owners", "column": { "id": "vacation", "label": "Out", "data": ["anna", "cara"], "width": 80 } } ] } // glyph disambiguation in monospace context: // digits → 0 1 2 3 4 5 6 7 8 9 // confusables → 0/O · 1/l/I · 5/S · 8/B // ligatures → != >= -> => <= == && ||

§6 — Glyph disambiguation

The disambiguation that matters for financial data and IDs. JetBrains Mono and Geist Mono both handle these well; Geist Mono is slightly sharper at the angular terminals of 1 and l.

DIGITS · MONO @ 22PX
0  1  2  3  4  5  6  7  8  9
CONFUSABLES · 0/O · 1/l/I · 5/S · 8/B · 2/Z · 6/G
0 O 1 l I 5 S 8 B 2 Z 6 G
LIGATURES (where supported)
!=  >=  ->  =>  <=  ==  &&  ||

§7 — Wizard idiom — prose + form

In Architecture C, this is where the editorial split shows its design discipline: the agent's narration is serif, the form labels are sans, the values are sans. The two registers coexist on the same surface without competing.

Sales Proposal — AcmeInsure
Based on your inputs so far, I’ve drafted a co-development proposal that mirrors AcmeInsure’s public messaging about owning the underwriting stack. The pricing tier is set to Enterprise + 12-month evaluation; if you’d rather lead with the managed-service framing, I can swap that out before generating the PDF.
Customer
AcmeInsure
Branch
Insurance
Tier
Enterprise + 12-month evaluation
Use case
Claims triage + automated damage assessment + escalation routing

§8 — Editor inspector

The Photoshop-workspace inspector — all-sans labels + all-mono values, no prose. This is where Architectures B and C are identical (both Geist Sans + Geist Mono) and A differs (Inter + JBM). Watch the label/value rhythm.

Inspector — Brush
Size
18 px
Hardness
60%
Opacity
85%
Flow
24%
Spacing
12 px
Smoothing
42%

§9 — Decision points

A
Architecture choice — A / B / C / D
Updated recommendation: D (Editorial · Fraunces). Same architecture as C, but the Fraunces serif escapes the Anthropic-adjacency zone Source Serif 4 sits in, and the variable SOFT axis literally tunes the type to Lume's light-as-material thesis. C remains a valid fallback if Fraunces tests too characterful for productivity-tool use. Newsreader (Production Type, OFL, screen-news-reading focus) is a documented third serif option not built into this preview — easy to swap if both C and D miss.
B
Skill rule — when does the agent emit serif vs sans?
If C is chosen: the agent's prose-mode text primitive renders in serif when it's narration, analysis, or summary; sans when it's label, caption, instruction, or eyebrow. Rule needs codification in the UI Skill alongside the palette-binding protocol.
C
Type-scale revision for serif slot
Source Serif 4 at body sizes wants slightly larger than Geist sans (serifs need air). Spec needs a separate type-scale token for prose-mode, ~+1px relative to the sans body scale at each step.
D
Variable-axis usage
All families are variable. Spec should use optical-sizing on the serif automatically per font-size, and constrain weight usage to a small set (400 / 500 / 600). Geist's slant axis unused in v1. If D ships: the Fraunces SOFT axis becomes a small theme-token — SOFT 50 on Lume-lit surfaces, SOFT 70 on long-form prose panes, SOFT 30 on dense data labels. Three values total, codified, not free-form.
E
Font loading strategy
Three variable-axis families × two-three weights subset each ≈ 250-350KB total when subsetted to Latin + numerics + ligatures. Acceptable. Strategy: preload the sans for FCP, defer mono and serif. Variable axis means one file per family, not nine.
F
System-font fallback strategy
Font-display swap; system-ui sans, ui-monospace mono, Charter/Iowan/Georgia serif fallback chain so the page renders immediately and re-renders to the chosen architecture when fonts arrive. Same pattern as v0.1, fonts only change.
G
Are the three architectures user-bindable too, like the palettes?
My take: no. Palette is identity-level personal preference (warm vs cool). Typography is product-identity. Letting the user swap to "Architecture A" defeats the differentiation argument. A single architecture ships. Possibly revisit in v2 if user-research argues otherwise.