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.
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.
D · Editorial — Fraunces (with SOFT axis)
Geist · Geist Mono · Fraunces (var. opsz + SOFT)
Same editorial-mix architecture as C, but Fraunces in the serif slot instead of Source
Serif 4. Fraunces is an old-style-revival by Undercase Type — characterful (ductus,
stress, distinct terminals), OFL-licensed, with two extra variable axes beyond weight:
opsz (9–144 optical sizing) and SOFT
(0–100, where 0 = sharp letterpress, 100 = soft marshmallow).
For: escapes the Anthropic-adjacent room that C sits in. Fraunces has voice —
when the agent narrates, the prose has personality, not just "editorial dignity".
Lume-specific: the SOFT axis literally responds to the
material. We tune SOFT 50 on Lume surfaces (the agent's lit chrome) and could push SOFT
70 on a longer prose-pane (more "warmth as light spreads through paper"). The type
itself participates in the material story — neither A, B nor C can do this.
Against: characterful serifs are polarising — some users love them in
productivity tools, others find them too literary. Test in §3 below before locking.
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.
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.
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 |
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 → != >= -> => <= == && ||
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)
!= >= -> => <= == && ||
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.
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.
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.