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.mdFIRST. 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
roleCountprop) - FreshnessBadge contrast — replaced hardcoded
#B22222/#2D5F5F/#C9971Fwith--fresh-*tokens (fg + bg pairs per state, both themes) - Dark-mode horizontal seam fix (Playwright fullPage stitch artefact) — removed
body { background-attachment: fixed }; tiledbody::beforenoise overlay withbackground-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[])seedsseenset 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.mjsacceptsSHIFT_BASE+SHIFT_OUTenv vars for local-preview runs
Round 2 — mobile UX fixes (commit-block in 6138e6a)¶
.section-ruleno longer overflows on mobile — addedflex-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;
<860pxcollapses 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-hideso 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.tsdeck 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.tsbody 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.mjsupdated for@noble/hashesv2.x — export paths now require.jsextension (./blake3.js,./utils.js);blake3()input now requiresUint8Array(usenew 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 screenshotsqa/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. WWissue 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
deltafield on roles.json gated to>= 7dsince 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 deploythat triggers Cloudflare Pages deploy via API.
Prioritisation guide for future sessions¶
When picking the next thing to build, ask:
- Does it expand the audience that finds Shift? (quiz, vertical posters, MCP, wildcard subdomains, scale to more roles)
- Does it give a return-visit hook? (newsletter, watch list, page-turn nav)
- Does it strengthen credibility? (where-we've-been-wrong, versioned dispatches, SME endorsements, JSON-LD)
- Does it enable revenue? (Pro tier, audits, report sale, embed widget)
- 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.