A copy, voice, and UX audit of every surface a real AINA user reads, sees, and feels — landing, assessment chat, and the results screen where the journey stalls.
AINA's substance is good — a chat-first diagnostic, five named learner postures, a genuine founder manifesto. But the front door promises an experience the product doesn't deliver, the results screen ends on a placeholder ("your shape.") instead of a payoff, and the voice carries a recognisable AI cadence the copy never gets edited out of. This is not a rebuild. It is a coherence problem: pick one vocabulary, make the landing tell the truth, and finish the one screen where the user is most ready to commit.
"No separate report page, no jarring redirect. After Q6, AINA hands back your score as a structured message in the same conversation."
StickyShellStage.astro:41A hard browser redirect to a standalone results page the moment question 6 is answered.
DiagnosticChat.tsx:266 — window.location.href = '/score/…'The hero scroll-stage (Scene 02) promises the score arrives inside the chat, with no redirect. The real product redirects to a separate page the instant Q6 is answered (see the strip above). The most prominent demo on the homepage is a mockup of a flow that was never built. The stated ICP is skeptics — and a skeptic who spots the bait-and-switch is gone. This is the most important thing in the audit; it forces Decision D1.
The results headline reads "Here's what I see, your shape." — and the script that should personalise it literally writes the placeholder back in:
el.textContent = 'your shape.'; // score.astro:529
The data-name slot was built for a real value (a name, or the posture) but renders the literal words "your shape." It reads like a template with the blank still showing. Worse, the genuinely good posture copy that already exists — "Skeptic — ROI grounding, no hype", "Founder / Operator — systems-level leverage" — sits in a block that is hidden by default (score.astro:35) and only appears if a posture slug happens to arrive. The best copy is buried; the placeholder leads.
The results page does have buttons, but the primary one is hardcoded for everyone — "Start Lesson 01 — Structure a Better Request" (score.astro:72) — the same lesson regardless of the posture just computed, pointing at a sandbox demo rather than an enrolled path. The footer then asserts "Path locked. 32 lessons · ~14 hours · 3 milestones" (score.astro:201): a confident, specific promise that nothing in the flow actually fulfils.
The user is asked to track four overlapping concepts: a score (0–100), a band (Cautious Start → Native), a posture (five named types), and a shape — used in three places (quiz-data.ts:34, DiagnosticChat.tsx:536, score.astro:27) and defined in none. "Shape" is the vaguest and the only one with no data behind it.
| /assessment | /quiz (orphan) | |
|---|---|---|
| Component | DiagnosticChat | QuizChat |
| Questions | 6 | 7 |
| Title | "Discover Your AI Readiness" | "Which AI Learner Are You?" |
| Role options | … manager / director / founder | … manager / leader / founder |
| Linked from site? | Yes, everywhere | No inbound link anywhere |
Both compute the same five postures with different questions and role taxonomies. /quiz is reachable by URL but linked from nothing — a live-but-dead surface fragmenting the voice, the analytics, and the maintenance burden.
Two patterns mark the copy as machine-written — and neither is "too many em-dashes" on its own. First, the "[statement] — [punchy fragment]" rhythm repeated relentlessly: five in one screen of the scroll-stage. Second, the triple-beat cadence — "Three minutes. Six honest questions. A real readiness score." / "AINA explains. You try. You get scored. You retry." Third, the "honest" tic — the word is load-bearing in at least five separate places.
At least eight labels for what should be one or two canonical actions: "Start your AI Readiness Assessment", "Start Assessment", "Start your assessment", "Find your baseline", "Join the beta", "Notify me when it's live", "Re-take assessment", even "Start Lesson 01" vs "Start Lesson 1". Plus /index-pre-v6 (an old landing still reachable by URL), an About CTA that hops "Join the beta" → /waitlist → redirect → /assessment, and two different nav systems.
First five seconds. The hero — "Stop watching AI courses. Start simulating your future." — is strong and ownable; "flight simulator" is the best asset in the copy. But the sub-line immediately stacks four nouns ("diagnostic, lesson, evaluator, all in one streaming conversation"). Lead with the feeling, defer the mechanism.
ICP fit. The About page defines the buyer sharply: the 80% in the middle, skeptical-but-willing, failed by too-technical and too-hype resources. The diagnostic voice often serves them ("we will not embarrass you"). But the product then leans on insider terms they won't parse — the five levels (MetaPrompting, Operator, Centaur, Builder, Orchestrator), "L1.2", "Tool Variant", "exposure ceiling". And the ICP/persona definitions live in the PKM wiki and docs/_archive, not in the repo.
UX & journey. The break is between "I got my score" and "I am actually learning" — the post-score routes are demos and a sample dashboard, with no real bridge into an enrolled path. The journey looks complete in the landing mockup and dead-ends in reality.
Conversion. The funnel breaks at both ends of the score moment: the landing over-promises score delivery (F1), the results page under-delivers the next step (F2, F3). Between a strong hero and a strong manifesto sits the one screen that loses the user.
The About manifesto is genuinely good writing and the clearest articulation of the ICP — make it the voice north star. The chat-first diagnostic is differentiated, polished, resumable. The posture system offers five specific, non-generic narratives — real substance, not horoscope copy. The "flight simulator" metaphor is ownable; keep it and stop stacking other metaphors on top. Theming and the mobile-native chat shape are solid foundations. The job is to edit and connect what exists, not replace it.
| Pri | Area | Move |
|---|---|---|
| P0 | Landing truth | Resolve the score-delivery contradiction (D1). |
| P0 | Score hero | Replace "your shape." with the computed posture + a real sentence; surface the narrative that already exists. |
| P0 | Next step | Make the post-score CTA posture-specific and real, or honestly frame it as preview. Back or cut "Path locked. 32 lessons…". |
| P1 | Vocabulary | One primary model — recommend posture (label) + score (number); demote "shape". |
| P1 | Intake | Consolidate /assessment and /quiz; retire or redirect the orphan. |
| P1 | CTAs & stale surfaces | One canonical CTA label; retire /index-pre-v6; fix the About→beta→assessment hop. |
| P2 | Voice guide | Author a repo-local guide (from About + PKM ICP): cadence, em-dash, "honest" tic, jargon ladder. |
| P2 | Copy sweep | De-AI-ify every user-facing surface against the guide. |
| P2 | ICP import | Adapt personas/ICP into the marketing folder. |
| P3 | Journey & IA | Map first-touch → enrolled; fix demo-vs-real boundary; unify the two navs. |
content/ currently holds only AGENTS.md — there is no home for copy, voice, or ICP, which is exactly how the placeholder and the contradiction crept in. Recommend creating content/marketing/ (markdown-first, CSV mirror for structured data):
The payoff: engineers pull reviewed copy from the deck instead of inventing it inline. Source material (reference only, none canonical): PKM wiki AINA Personas & ICP and AINA Marketing & SEO, plus the practice-repo dumps in docs/_archive/.../marketing-positioning-and-research.
/assessment (6Q) canonical and retire /quiz (7Q)? Or merge the best of both?content/marketing/ as proposed, or a different home?On your green light, the work cuts into vertical tracers, each through one surface — one Linear issue, one branch, one PR, per repo rules. No issues are created until you approve scope and answer D1–D4.
Fix the one screen where the user is most ready to say yes — the results page — and make the homepage tell the truth about it. Everything else is editing.