Skip to content

thedandano/callback

v1.8.0MIT

Job application MCP workflows for profile onboarding, resume tailoring, lead scanning, and application review.

Changelog

Unreleased

Features

  • required_any OR-groups + atomic keyword extraction — disjunctive requirements ("one or more of A, B, C") now score as a single required unit matched if any member matches; unmatched groups surface as score_gap.required_missing_any.
  • preferred_any OR-groups — the same primitive on the preferred side: disjunctions in a nice-to-have section score as a single preferred unit at preferred weight; unmatched groups surface as score_gap.preferred_missing_any.

Miscellaneous

  • chore: remove deprecated go-apply bridge (bridge.py) and its tests — the module was wired into nothing at runtime.

Important Upgrade Note

  • Existing users must re-run onboard_user after upgrading to the HTML renderer + extractor fixes. Older sections.json files may contain corrupted contact fields (for example duplicated email or incorrect location).
  • A host that emits required_any or preferred_any against an OLD callback server is silently degraded: dataclass_wizard drops the unknown key, so the group is ignored (not matched, not reported). Upgrade the server before relying on either.

1.8.0 (2026-10-03)

Features

  • flag ats_input_suspect when zero section headers match (#120) (760aa5f)

1.7.0 (2026-10-02)

Features

Documentation

  • define cross-harness plugin packaging (#113) (0cb2af3)

1.6.1 (2026-09-27)

Bug Fixes

1.6.0 (2026-09-27)

Features

  • callback owns its settings file, stop writing host MCP configs (#105) (0751554)
  • honor XDG_STATE_HOME; move session DBs and log to state dir (#107) (29804f5)
  • support installation as a Hermes Agent portable plugin (#103) (1ff47c0)

Bug Fixes

  • JSON archive follows output_dir the same as the PDF (#106) (55c6e5a)
  • make skills host-neutral (paths, ledger, time zone) (#104) (6b4ea4d)

1.5.0 (2026-09-25)

Features

  • eval tooling, curly-quote scoring fix, and CI cleanup (M6) (#101) (839eefa)
  • evals: add extract, tailor, and compile evals (#91) (316f5b0)
  • harden the profile-onboarding trust boundary (M1) (#95) (33bb284)
  • make the apply and profile graphs honest (M2) (#96) (551ff78)
  • profile wiki story pages are the source of truth (OKF frontmatter, M2.5) (#99) (81b4417)
  • replace the fetcher with Playwright + trafilatura (M3) (#97) (716c966)
  • shed weight — 11 runtime deps, paths.py owns data directory (M4) (#98) (e5454d3)

Bug Fixes

  • JD extraction protocol edge cases and section-map edit validation (M5) (#100) (25b8294)

1.4.1 (2026-08-25)

Bug Fixes

  • plugin: drop command wrappers that duplicate skill registrations (80e2c92)

1.4.0 (2026-08-23)

Features

  • skill: merge auto-job-apply role tables into one scored summary table (d49c7e1)

Bug Fixes

  • skill: address PR review on the auto-job-apply summary table (b60fe09)
  • skill: key remaining summary rules on condition, not label (945642b)
  • skill: widen Roles scope and details eligibility (d99cfb5)

1.3.1 (2026-08-22)

Bug Fixes

  • release: bump plugin manifests with release-please (091fa85)

1.3.0 (2026-08-22)

Features

  • scorer: surface required and preferred keyword coverage (3546039)

1.2.1 (2026-07-29)

Documentation

  • rewrite README for new users and relicense under MIT (21f786c)
  • strengthen README opening and lead with the plugin install (5397aa6)

1.2.0 (2026-07-13)

Features

  • plugin: Codex marketplace install support (#63) (e90ba7c)
  • plugin: Codex marketplace install support (#63) (ef00e74)

1.1.0 (2026-07-12)

Features

  • apply: wire required_any OR-groups into scoring and score_gap (9d5f170)
  • jd_data: add required_any OR-group schema + atomic extraction guidance (e893706)
  • onboarded profile as single source of truth for job-search criteria (#59) (2771fa8)
  • scorer: add preferred_any OR-groups mirroring required_any (a8795e7)
  • scorer: add required_any OR-group primitive to keyword scoring (9496a71)
  • skills: add hard-blocker gates and align OR-groups guidance (a646a61)

Bug Fixes

  • apply: honor absent required key in _run_score to match guard (b494ce3)

Documentation

  • remove deleted go-apply bridge from architecture diagram (e85fbd9)

1.0.0 (2026-06-26)

⚠ BREAKING CHANGES

  • composite weights and ExperienceFit semantics changed.
  • CLI is now callback, env vars use the CALLBACK_ prefix, the import package is callback, and state lives under ~/.local/share/callback/.

Features

  • add before/after scores to report, surface finalized_at in state (150dd28)
  • add LangSmith observability with thread grouping and redacted I/O (297588d)
  • add project-local pi-apply logs (5ca2301)
  • cli: add install-browsers, uninstall (--purge), and update commands (ceccae0)
  • cross-harness plugin (manifests, setup-plugin, uvx self-bootstrap) (aba59f6)
  • epic3-m1: deps + models (CreatedStory, CompiledProfile, OrphanedSkill) (f4eb5d8)
  • epic3-m2: resume repository (save, get, list — XDG-aware) (622898f)
  • epic3-m3: accomplishments repository (AccomplishmentsStore, atomic JSON) (0477e75)
  • extract_sections — SectionMap output from resume text (M3) (2a72bcb)
  • extractor,profile: improve PDF extraction and feed resume skills into compiler (56b1151)
  • implement epic 1 packaging and ci (1e389d1)
  • keyword-match refinements, report decomposition, golden determinism test (d6ba67a)
  • PreferencesStore persistence for search preferences (3a2d583)
  • profile preferences wiring + init skill; de-PII job-search skills (7cb7918)
  • profile: add ProfileCompiler with three-tier skill union and coverage lint (42b830c)
  • profile: M5 WikiRenderer — experience pages and index (9644480)
  • profile: M6 wire profile nodes to real stores (0c956d1)
  • profile: M6 wire profile nodes to real stores + update graph tests (7162b7e)
  • profile: M7 rewrite profile MCP tools to use real graph + nodes (93b3a94)
  • profile: M8 add compile_profile to graph interrupt_after (642104b)
  • profile: M9 integration tests + smoke script update (752598c)
  • rank project candidates for tailoring (da74ecb)
  • rename pi-apply to callback for v1.0.0 (db850ea)
  • render: switch resume PDFs to HTML (1952670)
  • scoring redesign v2 — reweight to 55/15/10/10/10, years-only ExperienceFit (2804146)
  • SearchPreferences domain model (e8b8b1b)
  • SectionMap data model + WikiStore + get_wiki_pages tool (M1+M2) (4b73663)
  • server: browser check at startup + check_update MCP tool + update notification (f7ad5ac)
  • server: expose workflow diagnostics (e55d61b)
  • server: remove resume_path from load_jd; add auto-discovery via registry (89510d3)
  • set/get_search_preferences MCP tools (2b754ac)
  • use candidate-company naming for rendered resumes (6256d40)
  • wire holistic tailor end-to-end (e8c7ac4)

Bug Fixes

  • cli: setup-mcp writes absolute binary path so Claude can find the server (1e77129)
  • move inline imports to module-level; guard empty primary_skill (2f0cc91)
  • profile: stabilize resume parsing and onboarding (bcfefcf)
  • render: bundle Inter font; eliminate system font scan on first call (d717526)
  • render: tolerate browser test doubles (0976633)
  • stop codex project log registration (763d9ca)
  • type: fix Pyright errors in test_server_profile.py (b1279cd)

Documentation

  • add README with install, update, uninstall, and how-to-use (22eafed)
  • clarify pi-apply architecture guidance (7d6c698)
  • cross-harness plugin packaging design + plan (38aefba)
  • mark Epic 2 complete, update dependency graph and next action (129e569)
  • onboard-profile: clarify section grouping is job_title-driven (c68bc88)
  • post-rename coherence sweep (365728d)
  • reframe callback as standalone post go-apply deprecation (6d94f78)
  • repoint CHANGELOG commit links to rewritten history (3bd4ec9)
  • retro for v1.0.0 rename and migration (31e41fa)
  • search-preferences implementation plan (fb506db)
  • search-preferences subsystem design spec (9d7c2b5)

1.0.1 (2026-06-11)

Documentation

  • post-rename coherence sweep (430424f)
  • retro for v1.0.0 rename and migration (fa7b1a3)

1.0.0 (2026-06-11)

⚠ BREAKING CHANGES

  • CLI is now callback, env vars use the CALLBACK_ prefix, the import package is callback, and state lives under ~/.local/share/callback/.

Features

  • rename pi-apply to callback for v1.0.0 (5807c84)

0.5.0 (2026-06-11)

Features

  • add LangSmith observability with thread grouping and redacted I/O (21e90b4)

0.4.1 (2026-05-21)

Bug Fixes

  • stop codex project log registration (55f31d2)

0.4.0 (2026-05-21)

Features

  • add project-local callback logs (1870e0d)
  • rank project candidates for tailoring (a1d1985)

0.3.1 (2026-05-21)

Documentation

  • clarify callback architecture guidance (d4c0af7)

0.3.0 (2026-05-18)

Features

  • cli: add install-browsers, uninstall (--purge), and update commands (881a45e)
  • extractor,profile: improve PDF extraction and feed resume skills into compiler (88f7712)
  • render: switch resume PDFs to HTML (326b714)
  • server: browser check at startup + check_update MCP tool + update notification (fb4e3cf)
  • server: expose workflow diagnostics (1e30785)
  • server: remove resume_path from load_jd; add auto-discovery via registry (34e1698)
  • use candidate-company naming for rendered resumes (b1cf280)

Bug Fixes

  • cli: setup-mcp writes absolute binary path so Claude can find the server (bfa0f76)
  • profile: stabilize resume parsing and onboarding (d6895da)
  • render: bundle Inter font; eliminate system font scan on first call (a8a8ff9)
  • render: tolerate browser test doubles (70f2d3c)

Documentation

  • add README with install, update, uninstall, and how-to-use (db1f8a2)

0.2.0 (2026-05-06)

Features

  • add before/after scores to report, surface finalized_at in state (1a67776)
  • epic3-m1: deps + models (CreatedStory, CompiledProfile, OrphanedSkill) (75c7f9e)
  • epic3-m2: resume repository (save, get, list — XDG-aware) (ad3d81e)
  • epic3-m3: accomplishments repository (AccomplishmentsStore, atomic JSON) (f0f989d)
  • extract_sections — SectionMap output from resume text (M3) (40b5e32)
  • implement epic 1 packaging and ci (18b7c22)
  • profile: add ProfileCompiler with three-tier skill union and coverage lint (fab873c)
  • profile: M5 WikiRenderer — experience pages and index (8005547)
  • profile: M6 wire profile nodes to real stores (05b015d)
  • profile: M6 wire profile nodes to real stores + update graph tests (045c680)
  • profile: M7 rewrite profile MCP tools to use real graph + nodes (d255bf0)
  • profile: M8 add compile_profile to graph interrupt_after (ef8c414)
  • profile: M9 integration tests + smoke script update (99a8c29)
  • SectionMap data model + WikiStore + get_wiki_pages tool (M1+M2) (2cf739c)
  • wire holistic tailor end-to-end (303f464)

Bug Fixes

  • move inline imports to module-level; guard empty primary_skill (95761b5)
  • type: fix Pyright errors in test_server_profile.py (be4b53a)

Documentation

  • mark Epic 2 complete, update dependency graph and next action (1bf5832)