Readack design system

The instrument panel. Dense by default, ruled like a ledger, honest about every open. Spec lives in packages/ui.

v0.1 · paper / ops

01Tokens

--rk-ink
text
--rk-ink-2
secondary
--rk-ink-3
faint
--rk-line
hairline
--rk-open
confirmed open
--rk-click
link click
--rk-warn
proxy suspect
--rk-danger
bounce/fail

Type: Archivo (variable width) for UI · JetBrains Mono for data · 0123456789 always tabular · micro labels at 10.5px / 0.08em · 4px spacing grid, 28px rows.

02Icons

double-check
check
eye
click
link
mail
send
clock
shield
filter
proxy
spark
revive
bell
doc
x
user
search
external
chevron

16px grid, 1.75 stroke, round caps. double-check is the brand mark — it only ever means a confirmed open.

03Status flags & badges

PendingSentOpenedClickedProxy fetchSelf-openBounced
draft+12% opens3 linksApple MPPblocked
ConfirmedLikelyLowNo signal

The semantic line we never blur: green is earned. A proxy fetch is amber until corroborated; a self-open is struck through and excluded from counts.

04Stats

Tracked today
148 +23
emails sent with pixel
Confirmed opens
64.2% +3.1
excludes proxy & self-opens
Click-through
11.8% −0.4
38 clicks / 12 links
Suspect fetches
19
GIP + Apple MPP, held

05Recipient table

Q3 proposal — final numbers · 7 recipients
RecipientStatusConfidenceOpensClicksLast eventClient
ines.farrow@northwind.ioClickedConfirmed7314:32:08Gmail · Chrome 137
d.okafor@hartleyglass.comOpenedConfirmed2·13:58:41Gmail · iOS app
procurement@vellum.coOpenedLikely1·12:11:55Gmail proxy (GIP)
k.lindqvist@aurora.seProxy fetchLow1·09:02:13Apple MPP prefetch
me@readack.comSelf-openNo signal··08:47:30Self-open, suppressed
old-contact@retired.netBouncedNo signal··08:45:02550 mailbox unavailable
j.barrett@coastal.devSentNo signal··

06Activity feed

Live activity7 events
  1. 14:32:08ines.farrow@northwind.io clicked /pricing in “Q3 proposal — final numbers”Clicked
  2. 14:31:52ines.farrow@northwind.io opened “Q3 proposal — final numbers” · 3rd open
  3. 13:58:41d.okafor@hartleyglass.com opened “Re: install timeline”
  4. 12:11:55Proxy fetch for “Vendor onboarding docs” — procurement@vellum.co, held for confirmationProxy fetch
  5. 11:40:19Open spike on “Q3 proposal” — 5 opens in 12 min, likely forwardedspike
  6. 08:47:30Self-open suppressed on “Q3 proposal” — sender viewed Sent mailSelf-open
  7. 08:45:02old-contact@retired.net bounced — 550 mailbox unavailableBounced

07Event timeline

ines.farrow@northwind.io · event history
  1. 14:32:08Clicked /pricing
    Gmail · Chrome 137 · macOS — wrapped link rk_c_8Hf2
  2. 14:31:52Opened — 3rd open
    Confirmed (client fetch, post-proxy) · Confidence ●●●
  3. 12:06:33Proxy prefetch
    googleusercontent.com GIP — not counted as an open
  4. 09:14:00Sent
    via Gmail · pixel rk_o_3kQ9 injected, 2 links wrapped

08Buttons & fields

Beats pixel blocklists. CNAME to px.readack.com.

Shortcuts render as + kbd chips.

09Ops theme (dark)

data-theme="dark" — same tokens, recutOpenedProxy fetchLikely
Watching
61
emails awaiting first open
Opens tonight
9 +9
Clicks
2
Live activity
  1. 14:32:08ines.farrow@northwind.io clicked /pricing in “Q3 proposal — final numbers”Clicked
  2. 14:31:52ines.farrow@northwind.io opened “Q3 proposal — final numbers” · 3rd open
  3. 13:58:41d.okafor@hartleyglass.com opened “Re: install timeline”
  4. 12:11:55Proxy fetch for “Vendor onboarding docs” — procurement@vellum.co, held for confirmationProxy fetch
  5. 11:40:19Open spike on “Q3 proposal” — 5 opens in 12 min, likely forwardedspike
  6. 08:47:30Self-open suppressed on “Q3 proposal” — sender viewed Sent mailSelf-open
  7. 08:45:02old-contact@retired.net bounced — 550 mailbox unavailableBounced