Skip to content

Add plain Product Manager archetype to packages/core (no AI keywords) #90

Description

@SaharPak

Why this matters for Tech Immigrants

The community MVP today ships an ai-product-manager archetype in
packages/core/src/archetypes/index.ts, but no plain
product-manager
. The Tech Immigrants audience has many members
who are non-AI product managers (fintech, edtech, marketplaces,
travel, gaming, B2B SaaS). For those members, the live detector
falls back to backend-engineer (the DEFAULT_ARCHETYPE in
core), which produces a misleading scorecard ("Detected archetype:
Backend Engineer" on what is actually a PM resume).

This was flagged as the highest-priority gap in
docs/ARCHETYPE_GAP_AUDIT.md.

Expected behaviour

After this issue is closed:

  1. A user whose CV uses non-AI product language (roadmap, OKRs,
    discovery, user research, A/B test, Jira, stakeholders)
    gets correctly classified as product-manager in the CLI
    evaluate output and in the Web UI results page.
  2. The existing ai-product-manager archetype continues to win
    when AI keywords (llm, gpt, rag, embeddings) are
    present.
  3. No regression in golden fixtures or in the existing 7 archetypes.

Implementation guidance

File to change

  • packages/core/src/archetypes/index.ts — add a new entry matching
    the existing shape (no version field; matches
    RoleArchetype in packages/core/src/types.ts).

Expected keywords (15+)

Discovery, user research, A/B testing, experiment, roadmap,
prioritization, OKRs, KPIs, retention, activation, funnel, churn,
stakeholder, agile, sprint, Jira, Linear, Amplitude, Mixpanel,
go-to-market, pricing, north-star metric.

Expected action verbs

Launched, Owned, Drove, Grew, Defined, Prioritized, Increased,
Reduced, Shipped, Aligned.

Expected anti-patterns

passionate about products, leveraged synergies, wore many hats, helped with, responsible for the product, various product initiatives.

Suggested weights

A starting point — tune against the eval harness.

evaluationWeights: {
  shippedEvidence: 0.25,
  quantifiedImpact: 0.25,
  toolingVisibility: 0.1,
  atsCompatibility: 0.15,
  keywordMatch: 0.15,
  publicProof: 0.1,
}

Detect tie-breaker

In core.detectArchetype, prefer the new product-manager over
ai-product-manager when AI keywords are not matched. Simplest
implementation: if the keyword score for AI-PM is 1 or 0, fall
through to PM. Until then, AI-PM will still win on shared keywords
(roadmap, OKRs), which is fine — what matters is that a
plain-PM CV doesn't get bucketed as backend-engineer.

Acceptance criteria

  • pnpm --filter @cv-builder/cli start archetypes lists
    Product Manager (in addition to the existing 7).
  • pnpm --filter @cv-builder/cli start evaluate ./example-pm-cv.md
    prints Archetype detected: Product Manager for a realistic
    non-AI PM resume.
  • A CV heavy on AI terms still resolves to AI Product Manager.
  • pnpm test, pnpm lint, pnpm build all pass.
  • No regression in existing
    packages/eval/fixtures/{swe,pm,data-ml}-strong cases (these
    target intelligence, not core, so they should pass
    unchanged; verify anyway).

Tests needed

  • One unit test for core.detectArchetype:
    • Plain-PM CV resolves to product-manager.
    • AI-PM CV resolves to ai-product-manager.
    • CV with both signals resolves to ai-product-manager (AI is the
      more specific signal).
  • One optional integration test through
    packages/core/src/evaluator/index.ts to confirm the
    EvaluationResult.archetype.name is Product Manager.

Docs / update needed

  • README.md — add Product Manager to the Supported Role
    Archetypes
    list (it will be the 8th entry).
  • Bump the roadmap [x] 7 role archetypes to [x] 8 role archetypes.
  • Mention the new fallback tie-breaker in docs/ARCHITECTURE.md
    Step 3 (classify).

Related issues / docs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions