# JobForge Profile Configuration
# Copy this file to config/profile.yml and fill in your details.
# This is the single source of truth for your personal data across all modes.

candidate:
  full_name: "Jane Smith"
  email: "jane@example.com"
  phone: "+1-555-0123"
  location: "San Francisco, CA"
  linkedin: "linkedin.com/in/janesmith"
  portfolio_url: "https://janesmith.dev"
  github: "github.com/janesmith"
  twitter: "https://x.com/janesmith"

target_roles:
  # Your North Star roles — what you're optimizing for
  primary:
    - "Senior AI Engineer"
    - "Staff ML Engineer"
  # Archetypes help the evaluation system score fit
  archetypes:
    - name: "AI/ML Engineer"
      level: "Senior/Staff"
      fit: "primary"        # primary = dream role, secondary = good fit, adjacent = stretch
    - name: "AI Product Manager"
      level: "Senior"
      fit: "secondary"
    - name: "Solutions Architect"
      level: "Mid-Senior"
      fit: "adjacent"

narrative:
  # Your professional headline (1 line)
  headline: "ML Engineer turned AI product builder"
  # Your exit story — what makes you unique
  exit_story: "Built and sold my SaaS after 5 years. Now focused on applied AI at scale."
  # Your top 3-5 superpowers
  superpowers:
    - "End-to-end ML pipelines"
    - "Fast prototyping (idea to prod in 2 weeks)"
    - "Cross-functional communication"
  # Proof points — projects, articles, case studies with measurable impact
  proof_points:
    - name: "Project Alpha"
      url: "https://janesmith.dev/project-alpha"
      hero_metric: "Reduced inference latency 40%"
    - name: "Open Source Tool"
      url: "https://github.com/janesmith/tool"
      hero_metric: "2K+ GitHub stars"
  # Optional: dashboard/demo URL with credentials
  # dashboard:
  #   url: "https://janesmith.dev/demo"
  #   password: "demo-2026"

compensation:
  target_range: "$150K-200K"     # Your target total comp
  currency: "USD"
  minimum: "$120K"               # Walk-away number
  location_flexibility: "Remote preferred, 1 week/month on-site possible"

location:
  country: "United States"
  city: "San Francisco"
  timezone: "PST"
  visa_status: "No sponsorship needed"
  # For remote roles outside your country:
  # onsite_availability: "1 week/month in any city"

# Structured location constraints — consumed by the Apply Preflight location
# filter in modes/apply.md. The prose fields above (compensation.location_flexibility,
# location.*) remain for human readability and LLM narrative context; the fields
# below govern automated, deterministic compatibility checks before dispatching
# an apply subagent.
#
# City names are lowercase, hyphenated (e.g. "san-francisco", "new-york").
# Country codes are ISO-3166 alpha-2 uppercase (e.g. "US", "CA", "GB").
location_constraints:
  remote_us: true                      # open to US-remote roles
  remote_global: false                 # open to non-US remote (visa / timezone permitting)
  hybrid_cities:                       # cities where hybrid N-days-in-office is acceptable
    - san-francisco
  blocked_cities:                      # cities that are a hard No for relocation (even if hybrid)
    - new-york
    - london
  authorized_countries:                # countries where the candidate has right-to-work
    - US
  requires_visa_sponsorship: false     # true → roles in non-authorized countries are blocked unless
                                       # the JD explicitly mentions visa sponsorship

# Optional outbound proxy for Geometra browser sessions.
# Uncomment and fill in to route browser traffic through a proxy you already
# control. JobForge never bundles proxy bandwidth and never prints these values
# in prompts or status text. JobForge passes `headless: true`,
# `browserMode: "stock"`, `blockDetection: true`, and
# `blockedSitePolicy: "manual-handoff"` by default so Geometra MCP >= 1.62.3
# keeps browser windows hidden and returns structured `blockedSite` metadata
# when a portal serves a challenge, CAPTCHA, access-denied page, or other
# manual-review state.
#
# BYO — JobForge does NOT bundle or resell proxy bandwidth. Required:
# Geometra MCP >= 1.62.3.
#
# When present, the apply / scan / auto-pipeline modes thread this into every
# `geometra_connect` call as `proxy: {...}` alongside `headless: true`,
# `browserMode: "stock"`, `blockDetection: true`, and
# `blockedSitePolicy: "manual-handoff"`. Pooling is partitioned by proxy
# identity and browser mode so direct and proxied sessions never share a
# Chromium instance.
#
# proxy:
#   server: "http://residential.example.com:8080"   # http://, https://, or socks5://
#   username: "your-proxy-username"                  # optional; omit if no auth
#   password: "your-proxy-password"                  # optional; omit if no auth
#   bypass: "*.internal,localhost"                   # optional comma-separated host patterns
