This is the single source of truth for your identity. All modes read from here.
Key sections:
- candidate: Name, email, phone, location, LinkedIn, portfolio
- target_roles: Your North Star roles and archetypes
- narrative: Your headline, exit story, superpowers, proof points
- compensation: Target range, minimum, currency
- location: Country, timezone, visa status, on-site availability
The archetype table in _shared.md determines how offers are scored and CVs are framed. Edit the table to match YOUR career targets:
| Archetype | Thematic axes | What they buy |
|-----------|---------------|---------------|
| **Your Role 1** | key skills | what they need |
| **Your Role 2** | key skills | what they need |Also update the "Adaptive Framing" table to map YOUR specific projects to each archetype.
Copy from templates/portals.example.yml and customize:
- title_filter.positive: Keywords matching your target roles
- title_filter.negative: Tech stacks or domains to exclude
- search_queries: WebSearch queries for job boards (Ashby, Greenhouse, Lever)
- tracked_companies: Companies to check directly
The HTML template uses these design tokens:
- Fonts: Space Grotesk (headings) + DM Sans (body) -- self-hosted in
fonts/ - Colors: Cyan primary (
hsl(187,74%,32%)) + Purple accent (hsl(270,70%,45%)) - Layout: Single-column, ATS-optimized
To customize fonts/colors, edit the CSS in the template. Update font files in fonts/ if switching fonts.
The negotiation section provides frameworks for salary discussions. Replace the example scripts with your own:
- Target ranges
- Geographic arbitrage strategy
- Pushback responses
Career-ops can integrate with external systems via Claude Code hooks. Example hooks:
{
"hooks": {
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "echo 'Career-ops session started'"
}]
}]
}
}Save hooks in .claude/settings.json.
The canonical states rarely need changing. If you add new states, update:
templates/states.ymlnormalize-statuses.mjs(alias mappings)modes/_shared.md(any references)