# JobForge — Canonical States
# Source of truth for job-forge (writer) and dashboard (reader).
# Both systems MUST use these exact states.
#
# Rule: The status field in applications.md must contain EXACTLY
# one of these values (case-insensitive). No markdown bold (**),
# no dates, no extra text. Dates go in the date column.

states:
  - id: evaluated
    label: Evaluated
    aliases: []
    description: Offer evaluated with report, pending decision
    dashboard_group: evaluated

  - id: applied
    label: Applied
    aliases: [sent]
    description: Application submitted
    dashboard_group: applied

  - id: responded
    label: Responded
    aliases: []
    description: Company has responded (not yet interview)
    dashboard_group: responded

  - id: contacted
    label: Contacted
    aliases: []
    description: Candidate proactively reached out (LinkedIn, email) — not yet a response
    dashboard_group: contacted

  - id: interview
    label: Interview
    aliases: []
    description: Active interview process
    dashboard_group: interview

  - id: offer
    label: Offer
    aliases: []
    description: Offer received
    dashboard_group: offer

  - id: rejected
    label: Rejected
    aliases: []
    description: Rejected by company
    dashboard_group: rejected

  - id: discarded
    label: Discarded
    aliases: []
    description: Discarded by candidate or offer closed
    dashboard_group: discarded

  - id: failed
    label: Failed
    aliases: []
    description: Submission attempted but blocked by portal (spam-filter, anti-bot, broken form). May be recoverable via manual retry.
    dashboard_group: failed

  - id: skip
    label: SKIP
    aliases: [skip]
    description: Doesn't fit, don't apply
    dashboard_group: skip
