Skip to content

Shift — full v1.x+ improvement roadmap

Captured 4 May 2026 evening. Use this as the canonical "what's next" list. Items are organised by intent (audience expansion, retention, authority, etc.) so future sessions can pick a category and ship.

📖 Operating manual: For HOW to work on Shift safely (voice rules, deploy flow, audit framework, mobile patterns, the Three Dials framework, the @noble/hashes deploy gotcha), read ../cosmos/shift/playbook.md FIRST. This roadmap is the what to build; the playbook is the how to build it.


✅ Also shipped — v1.3 (5 May 2026, two-round UX audit + plain-English clarity pass)

Round 1 — UX audit fixes (17 fixes, commit pre-6138e6a)

  • Quiz "21 role dispatches" → "35 role dispatches" stale copy fix (now wired to live roleCount prop)
  • FreshnessBadge contrast — replaced hardcoded #B22222/#2D5F5F/#C9971F with --fresh-* tokens (fg + bg pairs per state, both themes)
  • Dark-mode horizontal seam fix (Playwright fullPage stitch artefact) — removed body { background-attachment: fixed }; tiled body::before noise overlay with background-size: 200px 200px; background-repeat: repeat
  • Mobile search placeholder shortened to "graphic designer, lawyer…" on <480px
  • "Skim mode ON" → "Skim mode · click to exit" (now further refined to "Quick read · click to exit" in v1.3 round 2)
  • Quiz "Copy link" button now flashes "Copied!" 1.4s
  • Featured grid bumped from 7 → 10 entries (9 displayed after lead removal = clean 3×3, no orphan)
  • "Dispatch No. NN" array-index leak removed; replaced with {domain} DESK · SHIFT WIRE
  • Adjacent + Related dispatches deduplicated — relatedFor(slug, max, excludeSlugs[]) seeds seen set with curated adjacent slugs
  • "⌘ Copy link" → "🔗" icon (platform-neutral, no Mac key)
  • Mobile sources list bumped to var(--t-body) on <760px
  • Pivot callout flag (show_pivot_callout: true + pivot_callout_text) added to 4 heavy-tier roles: graphic-designer, corporate-lawyer, copywriter, translator (validator-enforced ≥30 chars)
  • Mobile masthead 2-row priority layout (later replaced by hamburger in round 2)
  • New /data/ page — human-readable role-index table (5 stat tiles + machine-feed JSON callout + alphabetical band table); skeptic-conversion lever
  • Footer link "Data Feed" → "Data" pointing at new page (raw JSON moved to a callout on the data page)
  • Method page "EDITOR'S NOTE" section-rule label + "About the launch dates" honest-disclosure section (replaces fake hash-staggered dates approach)
  • Audit script qa/live-audit.mjs accepts SHIFT_BASE + SHIFT_OUT env vars for local-preview runs

Round 2 — mobile UX fixes (commit-block in 6138e6a)

  • .section-rule no longer overflows on mobile — added flex-wrap: wrap, overflow-wrap: anywhere, tighter letter-spacing under 560px
  • /wire/ newsletter feature-disabled — removed from masthead nav + footer, <meta name="robots" content="noindex,nofollow,noarchive">, sitemap excludes /wire/. Direct URL still 200 for graceful re-enable
  • Mobile masthead collapsed into hamburger pattern — desktop nav unchanged; <860px collapses to [☰] [◐] row, 5 nav items hide until tapped, 44px tap targets, ✕ close icon, closes on link click + Escape, icon-only at <480px. Theme-toggle pulled out of nav as sibling

Round 2 — plain-English clarity pass (commit 6138e6a, deploy 4fe62eba)

  • New <ThreeDialsStrip> Astro component — coloured-dot explainer for automation/augmentation/resilience, placed on home (between launcher and Lead Dispatch) and at the top of every role page (above the headline), so first-time non-tech readers meet the framework before any deck text uses the words. data-skim-hide so Quick Read mode hides it
  • Home front-deck rewritten — drops "citation-anchored / knowledge-worker / dossier"; names 5 concrete jobs ("designers, teachers, lawyers, doctors, accountants, more") so chef/teacher/hairdresser instantly know if they're covered
  • lib/dispatch.ts deck generator REWRITTEN — three lookup tables (one per dial × trajectory verb) replace the analyst-prose composer; every role's deck now reads in plain English (e.g. "AI is rapidly taking over more of this work. The big workflow changes are settling down. The parts that need a real person are holding.")
  • lib/dispatch.ts body generator (fallback path) rewritten — drops "production by model / at the ceiling / generative tooling / marginal improvement / out of the wind"
  • Quiz framing rewritten — drops "AI pressure profile / interpretive prediction not diagnosis"; new copy "Six quick questions about your typical work day. We'll match you to the closest of our 35 jobs."
  • About first paragraph plain English — drops "wire / knowledge work / augmenting / bridges / pivot"; keeps Sush's "stays stubbornly human" line
  • Method page — new id="three-dials" anchor (target of footer Glossary link); inline plain-English glosses next to each pressure-defs term ("Automation pressure — what AI does instead of you" etc.)
  • "VIEW EDITION" → "Year:" on time machine
  • Skim mode → "Quick read (60 sec)"
  • Sweep button → "Animate"
  • Launcher hint mobile-friendly: "35 jobs covered. Type yours, or tap a result." (drops desktop-only keyboard hints)
  • Footer "Glossary" link → /method/#three-dials

Deploy infrastructure

  • scripts/deploy-pages.mjs updated for @noble/hashes v2.x — export paths now require .js extension (./blake3.js, ./utils.js); blake3() input now requires Uint8Array (use new TextEncoder().encode(...))

Audit artefacts

  • qa/mobile-fixes-audit.mjs — new targeted regression suite for the 3 mobile fixes (section-rule + hamburger + /wire/-leak detection); 32 screenshots
  • qa/desktop-spotcheck.mjs — quick desktop + wire-page direct-access spot check
  • All audit artefacts now gitignored (qa/**/*.png, findings.json, index.html)

Live verification

  • 80 post-clarity-pass screenshots in qa/clarity-pass/, 0 errors, 0 warnings
  • 10 production URLs verified 200 after deploy
  • Home page strings present, /wire/ correctly unlinked, noindex preserved

✅ Already shipped (v1 + v1.1 + v1.2 — 22 commits across 3 repos, 4 May 2026 — LIVE)

Live URLs

URL
Shift main https://shift.aguidetocloud.com/
Quiz https://shift.aguidetocloud.com/quiz/
Public data feed https://shift.aguidetocloud.com/role-index.json
Wire newsletter https://shift.aguidetocloud.com/wire/
Brain Bar MCP https://mcp.aguidetocloud.com/mcp
Shift MCP https://mcp-shift.aguidetocloud.com/mcp

What deployed

Shift main site

  • 35 role dispatches across 13 domains (was 21 across 12 in v1)
  • All 35 dispatches hand-written in Sush voice (4 paragraphs each, ≥600 chars, validator-enforced)
  • Wire + Gauge atmosphere (Playfair Display + Source Serif + paper-and-ink)
  • Tape ticker masthead + analog gauge instrument with needle-swing motion
  • Animated 2026→2030 needle sweep ("sweep" button, 4.5s ease-out)
  • AI Pressure Quiz at /quiz/ — 6 questions → predicted role with confidence + shareable result URL
  • Per-role OG cards horizontal (1200×630) + vertical (1080×1920) for Stories/Reels
  • "Save this dispatch" with Wide + Story download buttons
  • Share row (copy URL + LinkedIn / X / Bluesky / email)
  • "You should also read" 3-related cross-link
  • OpenSearch description + browser address-bar shortcut
  • Auto-incrementing Vol. N · No. WW issue numbers
  • Freshness badges (REVISED / FRESH / REVIEW DUE / STALE)
  • Welcome back · your dispatch (cookie-based personalisation)
  • Read in 60 seconds skim toggle
  • Closest-role matcher (synonyms — "UX writer" → copywriter etc.)
  • Print stylesheet — clean two-column research brief on Save-as-PDF
  • Shift Wire newsletter scaffold at /wire/ with signup + sample edition + template
  • Comparator (595 canonical static pairs from 35 roles)
  • Method page + About + All catalogue + Quiz CTA on home
  • Build-time paid-content firewall + 14 contract tests + Playwright audit (0 errors)
  • Practice Exam SLA verified GREEN at 6+ checkpoints

Shift MCP server (separate repo: C:\ssClawy\shift-mcp\)

  • 5 tools (shift_search, shift_get_role, shift_compare, shift_list_domains, shift_recent)
  • 13/13 offline tests pass via Node --experimental-strip-types
  • Pure JSON-RPC 2.0, zero runtime deps, paid-content firewall enforced via constant
  • Awaits wrangler login && wrangler deploy + custom-domain step

✅ TOP 8 BATCH — all shipped 4 May 2026 evening (v1.2)

# ID What Status
1 rb2-quiz A1 — AI Pressure Quiz (6-question funnel → predicted role + tier) ✅ shipped
2 rb2-slider E2 — Animated time-machine slider (smooth needle sweep) ✅ shipped
3 rb2-newsletter R1 — Shift Wire newsletter scaffold (signup + Tue-morning recap template) ✅ shipped
4 rb2-vertical A4 — Vertical 1080×1920 Story poster per role ✅ shipped
5 rb2-print E3 — Print stylesheet (clean PDF-feel role brief) ✅ shipped
6 rb2-handwritten T6 — Hand-written dispatch bodies for all 21 roles ✅ shipped (35 roles)
7 rb2-scale C1 — Scale 21 → 35 roles ✅ shipped (chef, electrician, photographer, real-estate-agent, social-worker, dentist, hairdresser, paramedic, actuary, music-producer, hr-business-partner, podcaster, teacher-secondary, supply-chain-planner)
8 rb2-mcp X1 — MCP server tools ✅ shipped (separate repo shift-mcp/, 5 tools, 13 tests pass)

📋 BACKLOG — all other recommendations, by intent

🚀 Audience-expansion (would 10× the inbound)

  • A2 — Skill Audit / CV upload: paste a LinkedIn URL or CV/JD → extract skills → map to closest role + show where you're protected vs exposed. Personalised report worth Slacking. Stack: small server-side function (Workers), no PII stored.
  • A3 — Pivot Compass: pick your role → force-directed map of all bridges out, ranked by skill overlap. Stack: D3-force or Cytoscape island.
  • A5 — Tag a colleague: pre-fill share row with @colleague — this is your dispatch. Tighter loop than generic share. Stack: tweak ShareDispatch.astro.

🔁 Retention / return-visit hooks

  • R2 — My Watch List: bookmark roles with 📌, get notified when they update (Push API + email). Casual → subscriber. Stack: Cloudflare KV/D1 + Web Push subscription.
  • R3 — Page-turn navigation ← prev / next dispatch → at every role bottom + arrow-key support. Stack: one Astro component, prev/next computed at build time.
  • R4 — "What changed this month" delta per role. Originally cut from v1 due to freshness debt; revisit with delta field on roles.json gated to >= 7d since last entry.
  • R5 — Live cursor: "47 readers viewing this dispatch right now" (privacy-safe aggregate). Stack: Cloudflare Durable Objects or simple counter Worker.
  • R6 — Annual "Your Year in Shift": end-of-year wrap-up showing how the user's role moved across the year's dispatches. Spotify Wrapped vibe.

🏛 Authority / trust builders

  • T1 — "Where we've been wrong" page: public confidence-calibration retrospectives. Honesty advantage compounds; nobody else does this.
  • T2 — Versioned dispatches: when a role updates, archive previous reading at /role/X/v1/ with a "history" link.
  • T3 — External SME endorsements: invite real radiologists / lawyers / designers to sign off on their role's dispatch; show endorsement badge.
  • T4 — Per-source detail pages at /sources/<id>/ with verification status + "last checked" date.
  • T5 — JSON-LD schema markup on every role page (Article, Person, Dataset).

🎙 Engagement / experience polish

  • E1 — Audio version: "Listen to this dispatch" play button, ~90s narration. TTS for v1, Sush voice for v1.2. Commute audience unlocked.
  • E4 — Reader poll per role: "Are we right? How would YOU rate this?" → aggregate signal shown anonymously next to analyst score.
  • E5 — Comments / discussion per role (Cusdis, Giscus, or self-hosted).
  • E6 — Search-result hover preview: typing in launcher → small pre-rendered dispatch card hovers next to the result.

🧬 Content scale

  • C2 — Sub-roles per parent: graphic-designer splits into branding / packaging / motion / web designer.
  • C3 — Industry-segmented readings: same role, different scores by industry (corporate-lawyer at Big4 vs public defender).
  • C4 — Regional readings: AI pressure NZ vs US vs India.
  • C5 — /decade/ view: same role projected to 2035 with widening uncertainty bands.

💰 Revenue / B2B paths (longer arcs)

  • B1 — Shift Pro (~$X/mo): saved dispatches, watch-list email alerts, deep-pivot reports, audited skill mapping.
  • B2 — AI Impact Audit for orgs: Sush-led 1-week engagements applying Shift methodology to a specific company. PDF deliverable. The B2B engine.
  • B3 — Annual State-of-AI-Job-Change report: PDF / hardcopy bookzine via Ko-fi or Stripe.
  • B4 — Embed widget: <script src="..."> snippet for any blog to drop in a live Shift dispatch card.

🌌 Cross-cosmos

  • X2 — Wildcard subdomains: designer.shift.aguidetocloud.com → role page.
  • X3 — Earth Cmd+K palette includes Shift roles when Universal Palette work happens.
  • X4 — Brain Bar ↔ Shift cross-links where a term overlaps.

🔧 Engineering / ops

  • O1 — Monthly auto-refresh GitHub Action: 1st of month, surfaces stale roles via labelled GitHub issue.
  • O2 — Visual regression tests: Playwright captures gauge state in light+dark; CI fails on pixel diff.
  • O3 — Lighthouse CI: track perf budget over time.
  • O4 — npm run deploy that triggers Cloudflare Pages deploy via API.

Prioritisation guide for future sessions

When picking the next thing to build, ask:

  1. Does it expand the audience that finds Shift? (quiz, vertical posters, MCP, wildcard subdomains, scale to more roles)
  2. Does it give a return-visit hook? (newsletter, watch list, page-turn nav)
  3. Does it strengthen credibility? (where-we've-been-wrong, versioned dispatches, SME endorsements, JSON-LD)
  4. Does it enable revenue? (Pro tier, audits, report sale, embed widget)
  5. Does it reduce ops risk? (monthly auto-refresh, visual regression, deploy script)

Pick the cluster with the lowest current coverage; pick the item within it with the highest leverage:effort ratio.

Document created: Mon 4 May 2026, ~20:45 NZST. Update when batches ship.