Skip to content

WorkWingman Personas × Journeys — FIRST DRAFT

Status: FIRST DRAFT for refinement. For Chris Powell (Talmetrix), Andrew, and the team to mark up and prioritize against. Not a finished spec. Grounded in what the app actually does today (routed pages, seeded demo personas) plus what is explicitly on the board as design-stage. Where a persona or capability is aspirational rather than shipped, it is flagged inline. No demand, traction, or usage metrics are asserted — per venture-evidence discipline, each persona/journey carries falsifiable assumptions we still need to validate, not claims we have already proven.

Last updated: 2026-08-14 · Track: discovery (no two-track twin) · Author: Clahadore (Claude)

Why this lives in docs/discovery/ and not docs/plain/: it is a point-in-time working draft for markup, not a description of how the app works, so the two-track pairing rule does not apply to it. It sat in docs/plain/ for one commit and reddened both docs gates on master (no technical twin, and unlinked from any other doc). When these personas/journeys turn into shipped behaviour, that behaviour gets documented as a technical/ + plain/ pair; this draft stays here as the record of what was proposed. Moved under WING-498.


0. The core model — TWO axes (do not conflate them)

An earlier draft mixed these together. They are different things:

  • AXIS 1 — WHO (target-market personas / "tenants"). Who the user is. Four target markets, each with one defining constraint. These are relatively stable identities.
  • AXIS 2 — HOW (interaction journeys / use-cases). What the user is trying to do in the app right now. These are Chris Powell's five categories. Critically, these five are also the ONBOARDING ENTRY POINTS — a new user of any persona should be able to start in whichever journey fits their situation, instead of being forced down one linear path. This is the concrete UX form of WING-467's multiple-entry-point requirement.

A user is one WHO moving through one-or-more HOWs. Section C is the 4×5 matrix of how each WHO experiences each HOW.

Grounded vs. new (honesty summary)

Element Grounded in Confidence
Personas: first-timer, switcher, veteran Real seeded demo packs src/WorkWingman.Api/DemoSeeds/{firsttimer,switcher,veteran} (WING-305; keys in DemoPersonaConstants, seed version 2026-08-02). Quoted from each story.md/profile.json. High
Persona: 50s career-changer (anti-ageism) NOT seeded. WING-441 "experienced." No experienced/50s seed exists in main (only the three above). New — to-be-seeded. Design intent only
"Laid-off" framing of the switcher Partial gap. The switcher seed (Nia) is a voluntary, self-taught switcher, not an involuntary, needs-fast-re-employment laid-off person. Reframe or add a proper laid-off persona. Seed mismatch flagged
The 5 journeys Chris Powell's categories, tied to real routes in frontend/src/app/app.routes.ts. High (routes exist)
Friction points chris-powell-feedback-r1 tickets WING-467–474, 478 (summarized from brief; verify wording in Jira). Medium

Flags: [SEEDED] real loadable pack · [NOT SEEDED] design intent, needs adding · [SEED MISMATCH] a seed exists but its framing differs from the target persona · [SHIPPED] route exists · [GAP] a Chris-identified friction point.


Section A — WHO: the 4 target-market personas

Each persona has one defining constraint — the thing the product must solve for them specifically.

A1. College student / first-timer — constraint: thin material [SEEDED: firsttimer]

  • Who: Elena Brooks, Information Systems student in Raleigh, NC; library job + one class project; seeking an internship / entry-level BA / IT-support / product-ops role. (DemoSeeds/firsttimer.)
  • Defining constraint: Almost nothing to work with. The product's job is to build a credible brand from coursework, small projects, and academic evidence — and to not overwhelm a new grad with features they don't need yet.
  • Seed status: Fully seeded, incl. academic transcript.json/dar.json.

A2. Laid-off person (mid-career, involuntary) — constraint: speed + confidence [SEED MISMATCH: switcher]

  • Who: Mid-career professional, suddenly job-searching after a layoff. Needs fast re-employment; morale/confidence is a first-class concern, not a footnote.
  • Defining constraint: Time pressure and emotional load. The product must get them applying quickly to fitting roles and protect confidence (framing their exit, reactivating their network).
  • Seed status: Closest seed is switcher (Nia Calder) — but she is framed as a voluntary, self-taught career changer moving into data analytics at her own pace. That is a different JTBD from an involuntary layoff. Recommendation: add a proper "laid-off" persona seed, or clearly split the switcher into "voluntary switcher" vs "involuntary/laid-off." Do not silently treat Nia as the laid-off persona — the constraints differ (paced upskilling vs. urgent re-employment).

A3. Military person / transitioner — constraint: translation [SEEDED: veteran]

  • Who: Marcus Ellery, ~9-yr Army Infantry Squad Leader, Colorado Springs; on TAP + SkillBridge; targeting operations / logistics / program-coordination / security-ops. (DemoSeeds/veteran, military onboarding toggle on; ships a USAJOBS seed jobs-usajobs-real.json.)
  • Defining constraint: Translating military experience (MOS, readiness, supply discipline) into civilian-legible language a non-veteran hiring manager trusts.
  • Seed status: Fully seeded.

A4. 50s career-changer — constraint: anti-ageism framing [NOT SEEDED — WING-441 "experienced"]

  • Who: A 50s+ candidate changing direction, with deep experience that can read as "overqualified" or "dated" and trigger age bias.
  • Defining constraint: Age-bias mitigation. The product must help present experience without triggering ageism — how to frame the brand, how much career history to show, which roles to target, how to signal current/relevant skills over tenure length. This is the persona's whole reason to exist and its differentiator.
  • Seed status: NOT seeded in main. WING-441 intent only. Needs a proper seed (profile, story, resume tuned for anti-ageism framing) before it can be demoed or validated.

Two adds needed for full WHO coverage: (1) the 50s anti-ageism persona seed, and (2) a true laid-off persona (or a switcher reframe). The first-timer, veteran, and voluntary-switcher are real.


Section B — HOW: the 5 interaction journeys (= the 5 onboarding entry points)

Chris's five categories, treated as first-class interaction flows. Each is also an onboarding entry point: onboarding offers these (or their plain-language equivalents) as ways-in, so any persona starts where their need is — the direct answer to WING-467 ("multiple entry points") and WING-468 ("right feature at the right stage").

BUILD REQUIREMENT — not just a conceptual model. These five journeys are a formal build item: WING-486 ("Onboarding: 5 journey entry-points selectable in the UI for any new user"), under the WING-467 journey-redesign parent. In the regular app onboarding, a new user of any of the four WHO personas picks the journey that fits their situation and lands directly in that journey's starting surface (B1→profile/story, B2→job-search, B3→recommendation-fit/connections, B4→skills-growth/gaps, B5→compare/relocation-assistance). This replaces a single forced linear path. Status: to-build (WING-486); the underlying journey surfaces are already [SHIPPED], the selectable entry-point picker is the new work.

B1. Career Profile & Brand development

  • Surfaces [SHIPPED]: onboarding/persona, profile, story, personality, self-assessment, energizing-work, equity, documents.
  • As an entry point: "I want to build/refresh how I present myself." Natural first stop for first-timers (thin material) and the 50s persona (careful framing).
  • [GAP]: WING-467 "profile jumps to jobs too early" — the brand journey shouldn't dump users into job search before the brand is built. WING-469 skill bank / WING-470 evidence attach here.

B2. Job search process (end-to-end)

  • Surfaces [SHIPPED]: job-search, import-jobs, job/:id, job/:id/company-intel, queue, documents/:jobId, run (on-the-rails apply, user present), applied, inbox-responses, recommendation-fit.
  • As an entry point: "I need to apply to jobs now." The default door for the laid-off persona (speed).
  • [GAP]: WING-471 scanner, WING-472 job discovery, WING-467 too-early jump from brand.

B3. Career planning

  • Surfaces [SHIPPED]: recommendation-fit, story, projects, guilds, warm-intro, recruiter-reactivation, connections.
  • As an entry point: "I'm not sure what to aim for / who to talk to." Fits switchers and the 50s persona choosing which roles to target.
  • [GAP]: "connections confusing" (needs a clear home — WING-473 naming / 474/478 nav).

B4. Learning & Development

  • Surfaces [SHIPPED]: skills-growth, skill-builder, study/study/:jobId, degree-completion, academic-records, academic-evidence, interview-coaching, interview-question-coach, interview-retro, gaps, profile/skills.
  • As an entry point: "I need to close a gap before I'm competitive." Anchor journey for the voluntary switcher; supports first-timers and the 50s persona (signal current skills).
  • [GAP]: WING-469 skill bank, WING-470 evidence.

B5. Tools — cost of living, relocation

  • Surfaces [SHIPPED]: offers/offers/:id, compare, compare-net, relocation-assistance, lifestyle, family (family-cost-card), financial-history, calendar. (See docs/plain/col-tax.md, lifestyle-costs.md.)
  • As an entry point: "I'm comparing offers / deciding whether to move." The door for relocation-driven users; strongest for the military persona (PCS moves) and offer-stage users.
  • Design-stage note: linked household accounts / PCS-aware joint comparison is a SPIKE (WING-463), not built; venture gate says "demand is not yet claimed." Solo cost-of-living/relocation tools are shipped.

Section C — the 4×5 matrix (WHO × HOW)

One cell = how that persona experiences that journey. Strong = core value / differentiator · OK = works, not the headline · Weak = underserved today · Add = depends on unseeded/unbuilt work.

WHO ↓ / HOW → B1 Brand B2 Job search B3 Career planning B4 L&D B5 Tools (CoL/reloc)
A1 First-timer [SEEDED] Strong — build brand from thin material; personality/self-assessment do heavy lifting OK — few entry roles; risk of too-early jump (WING-467) OK — pick a realistic first target Strong — academic evidence, starter skills Weak — rarely relocating yet
A2 Laid-off [SEED MISMATCH] OK — reframe exit, protect confidence Strong — speed to fitting roles; recruiter-reactivation, warm-intro OK — fast re-target OK — targeted gap-closing only (no time for long L&D) OK — compare offers when they land
A3 Military [SEEDED] Strong — translate service → civilian language Strong — incl. USAJOBS import OK — choose civilian lane OK — credential/skill translation Strong — PCS relocation is a headline fit
A4 50s (anti-ageism) [NOT SEEDED / Add] Strong (Add) — the differentiator: frame experience, choose how much history to show Strong (Add) — target roles that resist age bias; framing in documents Strong (Add) — which roles, how to position seniority OK (Add) — signal current skills over tenure OK (Add) — later-career relocation/retirement-adjacent comparisons

Reading the matrix: the 50s persona is strong-but-unbuilt across the board (its anti-ageism value cuts through every journey but nothing is seeded). The laid-off persona's strongest journey is B2 job-search, which is exactly where the current switcher seed least matches (Nia is paced, not urgent). Military × Tools (PCS) and first-timer × Brand/L&D are the strongest fully-seeded cells.


Section D — Unified flow map (journeys as the onboarding entry fan-out)

The five journeys are the entry fan-out at onboarding — any persona can enter any journey — then all paths converge on the shared apply → compare → learn backbone. This fan-out is a build requirement: the five entry points are selectable in the regular app onboarding UI (WING-486, under parent WING-467), not merely a conceptual model — a new user of any WHO persona chooses their journey and lands in the matching starting surface.

flowchart TD
    Start([New user lands]) --> Who["Pick WHO<br/>onboarding/persona<br/>(first-timer · laid-off · military · 50s)"]
    Who -. "GAP WING-467: no you-are-here" .-> Who

    Who --> Entry{"Choose entry journey<br/>selectable in onboarding UI<br/>(WING-486 build · WING-467 parent)"}

    %% The 5 HOW journeys as entry points
    Entry -->|"B1"| Brand["Career Profile &amp; Brand<br/>profile · story · personality ·<br/>self-assessment · energizing-work"]
    Entry -->|"B2"| Jobs["Job search end-to-end<br/>job-search · import-jobs ·<br/>recommendation-fit"]
    Entry -->|"B3"| Plan["Career planning<br/>recommendation-fit · projects ·<br/>guilds · warm-intro · connections"]
    Entry -->|"B4"| Learn["Learning &amp; Development<br/>skills-growth · skill-builder ·<br/>study · academic-evidence · gaps"]
    Entry -->|"B5"| Tools["Tools: cost-of-living / relocation<br/>compare · compare-net ·<br/>relocation-assistance · lifestyle · family"]

    Brand -. "GAP WING-467: profile jumps<br/>to jobs too early" .-> Jobs
    Brand -. "GAP 469 skill bank / 470 evidence" .-> Learn
    Plan -. "GAP: 'connections confusing'" .-> Brand
    Jobs -. "GAP 471 scanner / 472 discovery" .-> Jobs

    %% Convergence on shared backbone
    Brand --> Backbone
    Jobs --> Backbone
    Plan --> Backbone
    Learn --> Backbone
    Tools --> Backbone

    Backbone["Shared backbone"] --> Apply["Tailor &amp; apply on-the-rails<br/>job/:id · documents/:jobId · run<br/>(user present)"]
    Apply --> Interview["Interview &amp; retro<br/>interview-coaching · interview-retro"]
    Interview --> Compare["Compare offers &amp; relocation<br/>offers · compare · compare-net · relocation-assistance"]
    Compare --> LearnLoop["Learn / close gaps<br/>skills-growth · study"]
    LearnLoop -->|"loop: new target"| Entry

    Nav["Cross-cutting: naming WING-473 · nav WING-474/478 · you-are-here WING-467"]:::x
    classDef x fill:#fff0e8,stroke:#d84,stroke-dasharray:4 3;

Section E — Falsifiable assumptions & open questions

Per-persona (venture-evidence — test, don't assume): - First-timer: will they complete the longer brand/assessment path rather than bounce? (drop-off at B1) - Laid-off: do involuntary job-seekers actually want speed-first (B2) over paced L&D (B4)? — and does the current switcher seed mislead us about this persona? (test with real laid-off users, not Nia) - Military: is the AI translation trusted enough to send unedited, and credible to a real recruiter? (recruiter review) - 50s (anti-ageism): does anti-ageism framing measurably change outcomes vs. a plain resume? — untestable until the persona is seeded. (WING-441)

Journey-as-entry-point: - Do users actually pick different doors by situation, or do most funnel into B2 regardless? (validates the multi-entry premise of WING-467)

Open questions for Chris & team: 1. Add a dedicated laid-off persona seed, or split switcher into voluntary vs. involuntary? 2. Prioritize seeding the 50s anti-ageism persona (WING-441) — it is strong across every journey but 100% unbuilt. 3. Which of the 5 journeys is the default door if a user doesn't choose? (backbone currently assumes brand-first.) 4. Is "connections/career-planning" one entry journey (B3) or a cross-cutting tool? Chris flagged it confusing.


Refine freely. Persona details trace to src/WorkWingman.Api/DemoSeeds/*; capabilities to frontend/src/app/app.routes.ts; friction points to the chris-powell-feedback-r1 Jira tickets.