194 lines
8.6 KiB
YAML
194 lines
8.6 KiB
YAML
# Career-Ops 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"
|
|
# Optional. Used by `/career-ops email` contact blocks in markets where WeChat
|
|
# is an expected recruiting channel. Omit or leave blank if not applicable.
|
|
wechat: ""
|
|
location: "San Francisco, CA"
|
|
linkedin: "linkedin.com/in/janesmith"
|
|
portfolio_url: "https://janesmith.dev"
|
|
github: "github.com/janesmith"
|
|
twitter: "https://x.com/janesmith"
|
|
# Optional profile photo for the PDF CV (opt-in, #264). Leave empty to omit it
|
|
# entirely: US/UK and many-market ATS penalize photos, so the photoless layout
|
|
# is the default. Set it only for DACH/European markets (Germany, Austria,
|
|
# Switzerland) where a professional photo is expected. Use a local file path or
|
|
# a data: URL — the PDF renderer inlines local images.
|
|
photo: ""
|
|
|
|
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"
|
|
|
|
# Optional follow-up cadence preferences for `node followup-cadence.mjs`.
|
|
# CLI flags still win for one-off runs (for example `--applied-days 10`).
|
|
# followup_cadence:
|
|
# applied_first_days: 7
|
|
# applied_subsequent_days: 7
|
|
# applied_max_followups: 2
|
|
# responded_initial_days: 1
|
|
# responded_subsequent_days: 3
|
|
# interview_thankyou_days: 1
|
|
|
|
cv:
|
|
output_format: "html" # "html" (default) or "latex"
|
|
# (Optional) Canva resume design ID for visual CV generation via /career-ops pdf.
|
|
# Find it in your Canva design URL: https://www.canva.com/design/DAxxxxxxx/...
|
|
# The ID starts with "D" and is 11 characters long.
|
|
# canva_resume_design_id: "DAxxxxxxxxx"
|
|
|
|
# ── Cover Letter Settings ──────────────────────────────────────────────────
|
|
#
|
|
# Used by `/career-ops cover` and the cover letter sub-flow in `/career-ops pdf`.
|
|
# All fields are optional — omit any you don't need.
|
|
|
|
cover_letter:
|
|
# Your notice period in calendar days. Surfaced as a prompt default when the
|
|
# JD requests an immediate start. The user confirms the actual value before it
|
|
# appears in the letter.
|
|
notice_period_days: 30
|
|
|
|
# Your current professional domain (used to detect domain gaps vs the JD).
|
|
# Plain English, e.g. "digital media", "fintech", "healthcare IT".
|
|
primary_domain: "your current domain"
|
|
|
|
# Languages you are actively learning. Each entry MAY produce a closing
|
|
# sentence in that language IF the JD location matches one of the listed
|
|
# countries AND the user confirms inclusion during the cover letter flow.
|
|
# Remove the block entirely if not applicable.
|
|
language_learning:
|
|
- language: Spanish
|
|
current_level: B1
|
|
target_level: B2
|
|
target_date: "end of 2026"
|
|
# The sentence to include, written in that language. Keep it one line.
|
|
sentence: "Estoy aprendiendo español y espero alcanzar el nivel B2 a finales de 2026."
|
|
# Only trigger this entry when the JD location is in one of these countries.
|
|
countries: [Spain, Mexico, Argentina, Colombia, Chile]
|
|
|
|
# ── Contact Preferences ──────────────────────────────────────────────────────
|
|
#
|
|
# Used by `/career-ops contacto` (outreach CTA) and `/career-ops email` (contact
|
|
# block) to steer drafted messages toward how you actually want to be reached.
|
|
# Optional. Omit the whole block, or set preferred_channel to "either", to keep
|
|
# today's behavior unchanged (no channel steering).
|
|
#
|
|
# contact_preferences:
|
|
# preferred_channel: "email" # email | phone | either — default "either" if omitted
|
|
# # Optional. Surfaced near the contact block in `/career-ops email` drafts and
|
|
# # can inform the CTA wording in `/career-ops contacto`. Keep it one line.
|
|
# note: "Screens unknown numbers — please email or text first to schedule a call"
|
|
|
|
# ── Outreach / greeting ─────────────────────────────────────────────────────
|
|
#
|
|
# Used by the greeting variant of `/career-ops contacto` (the short first-touch
|
|
# message for BOSS Zhipin 打招呼, job-board chat, or a cold-email opener).
|
|
#
|
|
# greeting_max_chars is the hard character budget for that message. Default when
|
|
# the key is absent: 150 (BOSS Zhipin's greeting limit). Raise or lower it to
|
|
# match the platform you're messaging on.
|
|
# outreach:
|
|
# greeting_max_chars: 150
|
|
|
|
# ── Application Email Drafts ────────────────────────────────────────────────
|
|
#
|
|
# Used by `/career-ops email` when drafting formal application emails. This is
|
|
# separate from `contacto` short outreach and `cover` full cover letters.
|
|
# All fields are optional.
|
|
#
|
|
# application_email:
|
|
# include_contact_block: true
|
|
# include_attachment_checklist: true
|
|
# # Use this when you want the email body to say "the email used to send this
|
|
# # message" instead of printing a concrete email address from candidate.email.
|
|
# # default_sender_note: "the email used to send this message"
|
|
# # signature_name: "Jane Smith"
|
|
|
|
# ── Auto-PDF threshold ──────────────────────────────────────────────────────
|
|
#
|
|
# Auto-PDF threshold during evaluation (used by `/career-ops pipeline` and
|
|
# `bash batch/batch-runner.sh`).
|
|
#
|
|
# An offer's tailored CV PDF is auto-generated only when its score is
|
|
# >= this threshold. Generating a PDF costs ~30-60s per offer (Playwright
|
|
# launch + HTML render), and most offers in a scan score 2.x/3.x and never
|
|
# become an actual application — so the gate avoids wasted renders.
|
|
#
|
|
# Default (key absent OR commented out): 3.0 — the original gate of
|
|
# `/career-ops pipeline`. Both evaluation paths apply the same default, so
|
|
# a batch run and an interactive run treat the same offer identically.
|
|
#
|
|
# Raise it (e.g. 4.0) to auto-generate PDFs only for stronger matches and
|
|
# leave the rest report-only — those can still be produced on demand via
|
|
# `/career-ops pdf {company-slug}`. Fractional thresholds work (e.g. 3.5 —
|
|
# half-point scores like 3.5/5 occur in evaluations). Set it to 0 to
|
|
# generate a PDF for every offer.
|
|
# auto_pdf_score_threshold: 4.0
|
|
|
|
# ── Re-apply Cooldown Windows ──────────────────────────────────────────────
|
|
#
|
|
# Define cooldown windows for companies where you've recently applied.
|
|
# The scanner will skip new postings at these companies during the window.
|
|
#
|
|
# re_apply_windows:
|
|
# CompanyA:
|
|
# same_role_days: 180
|
|
# cross_role_bucket: "all_EM_roles"
|
|
# applied_to: ["Senior Software Engineer"]
|
|
# last_apply_date: "2026-01-01"
|