Sales Lab · Changelog
Newest first. Each entry is something a customer can now do (or trust) that they couldn’t before. We curate this list — if a change didn’t move the surface a customer touches, it doesn’t earn a row.
The three trilogy calculators (/skill-gap, /playbook, /roi) were only reachable via the /pricing on-ramp. That puts the carriage before the horse for enterprise CROs who want to build their internal case BEFORE seeing pricing. /procurement frames them as a 3-step procurement playbook (diagnose → design → cost), each step labeled with its input and output, with the honesty rail naming what the toolkit is NOT (a sales funnel disguised as calculators; LLM-generated; net of Sales Lab cost). Linked from the main nav (Verticals · Procurement · Enterprise) and the For-your-team footer column.
Open /procurement →The /skill-gap → /playbook → /roi trilogy was emitting client-side events; the operator could not see them. Built a server-only HogQL helper that queries PostHog from /internal/ops and renders a five-bucket card (diagnose / plan / cost / share / nav) for last 7d and last 30d. When the operator has not finished wiring the PostHog query keys, the card renders the empty state with the exact env vars to set — not a fake loading state. /admin/preflight surfaces the gap at info severity so it is one click away.
Three self-serve surfaces a CRO can run against their own numbers, share via URL with their CFO or VP, and walk back the answer they reached. /skill-gap diagnoses where deals are slipping (stage × loss-reason × cycle × objection). /playbook generates a 30-day pilot designed for that team. /roi computes the annual cost-of-not-training with every multiplier footnoted to published research, not vendor wishful thinking. Defensible by design — the math is in the open so the buyer never has to take our word for it.
Start at /skill-gap →An external accessibility audit caught the system blue accent failing the 4.5:1 contrast floor by a hair. The current product standard restores Apple system blue exactly, then keeps contrast-sensitive layouts on semantic ink, paper, or fill tokens. Also collapsed duplicate <main> landmarks across every marketing page and wired aria-expanded on the mobile-nav burger. 73 files touched in one batch.
Every page a buyer, journalist, developer, or recruiter could paste into Slack now arrives as a bespoke 1200×630 share card with its own headline + supporting line. Covers the buyer funnel, credibility surfaces, role landings, developer docs, product detail pages, and the risk/career surfaces (/guarantee, /jobs). No more falling back to the generic wordmark card.
Caught and fixed: ordered-list numbering broke across blank-line blocks on /docs/quickstart (showed 01 · 01 · 01 instead of 01 · 02 · 03); endpoint descriptions on /docs/api-reference rendered literal backticks instead of code chips; four Supabase-backed markdown fields (narrative_md on /transparency, summary_md on /security, body_md on /retros/[slug], description_md on /university) were rendering as raw text inside <pre> blocks — now piped through the shared DocsBody / inline() helpers.
A nine-cluster comparison between what the four-minute demo proves and what the paid product actually delivers. Surfaces the real delta — your data, your rubric, your audit log, your sales engineer, your guarantee — without apologizing for the demo. The page a procurement team can read end to end before they take the call.
Open what-you-get →A static public surface that shows the actual production scorecard with representative data and a fully-fired reveal animation. For visitors who do not want to take the live demo but want to see what their reps would see in the eight seconds after hangup. Linked from the home hero and the product menu.
Open sample scorecard →Nine pages — /thesis, /what-you-get, /sample-scorecard, /pricing, /enterprise, /product, /for/cro, /for/enablement, /for/revops — now ship with their own 1200×630 OpenGraph image in magazine-cover restraint. When a buyer pastes a Sales Lab link into Slack, the share card is specific to the page they shared, not the generic wordmark card.
Four chips below the enterprise hero — Security posture, 24-hour deployment, Procurement Q&A, DPA · SLA · Security. A reader arriving from a vendor-review checklist can scan to their checkpoint in under two seconds instead of scrolling past four sections.
Open enterprise →Every transactional email — magic-link, scorecard delivery, Monday-morning 1:1 brief, weekly call-simulation digest — now ships from a shared shell with system-blue CTAs and unified type hierarchy. They read as one brand in the inbox.
The large voice-practice bundle no longer ships on the /demo landing form. It loads only after a persona is resolved and the call surface is about to mount — Lighthouse perf score 50 → 68 on desktop /demo, LCP -740ms.
Color-contrast violations on /, /product, /pricing, /demo, /login, /security collapsed 95% — from 323 nodes flagged by axe-core to 17. Label-2 and label-3 tokens bumped on the light side; dark mode already passed.
Every serious buyer asks the same five questions during procurement — contract length, onboarding shape, what happens when a rep leaves, security questionnaire process, the money-back guarantee. They are answered on the pricing page so the buyer never has to leave.
Open →The portable Sales Lab Score now has a working public sample card at /score/demo (was a 404 referenced from /wage-index). /science gets TechArticle schema; /retros gets CollectionPage schema with up to 20 Article entries.
Open the sample score →Signed audio URLs were issued for 365 days AND persisted to the sessions row. Now: 300 seconds, re-signed on every read from a non-secret storage key. A leaked row stops being a year-long bearer credential.
Three surfaces teased in the navigation that previously 404'd are now full pages. Hardware lays out the desk-pad, headphones, and stress ring. Live is the annual conference page. API platform is the developer entry point.
Open →A single source of truth for the visual layer: §3 raw palette in globals.css, dark mode first-class, every semantic token resolving through it. System blue, true blacks, real grays. No tints, no approximations.
How this list is maintained
We write each entry by hand the day it ships. We don’t auto-generate from git — noise is the enemy of credibility. For the postmortem on every customer we’ve lost, read the public retros.