Skip to content

Resume Tailor v1.2.0

Choose a tag to compare

@dtsoden dtsoden released this 02 May 21:01
· 5 commits to main since this release

v1.2.0 — Major architecture rewrite

What changed

The résumé is now stored as a structured object (header / summary / skills / experience tenures with stable section ids / education / certifications). Markdown is rendered FROM the struct, not edited as it. Every rubric item is tagged with the section that proves it.

The score verifier short-circuits per section: refining one tenure literally cannot move items in any other tenure or section. This kills the "score collapses on additive refine" pattern that bit us repeatedly in v1.0.x.

Three refinement paths now operate on the struct

  • Chat-to-refine accept: appends the bullet to the named tenure (or Skills), re-renders markdown, scores with changedSections = {tenure_id, "global"}. Untouched sections are byte-identical to the parent.
  • Refresh-from-corpus: same pattern, looped over each tenure that has new corpus material.
  • Manual edit: parses the user's markdown back into the struct so the canonical struct stays in lockstep with on-disk markdown.

Initial generation and the Refine button (full rewrite) flow unchanged operationally — both still produce a fresh struct via the writer + parse pipeline.

Breaking change for existing users

Pre-1.2 résumé rows have no structured form. The refinement code parses their markdown on the fly so they keep working, but parser fidelity is best-effort. If a v1.0.x résumé had unusual formatting, the parsed struct may lose minor cosmetic detail on first refine. New résumés (v1.2.0+) round-trip exactly. This was a deliberate "clean break, no migration code" decision since the install base is still small.

Downloads

  • Windows: Resume Tailor Setup.exe (attached below). Same wizard installer as v1.0.x; SmartScreen will warn on first launch — click More info → Run anyway.
  • Mac: DMGs incoming once the Mac build host picks up the v1.2.0 tag.

Under the hood

  • New schema column GeneratedResume.resumeStructured with runtime migration
  • Rubric cache key bumped to :v2 so v1.0.x cached rubrics never match v1.2 code paths
  • New tests/unit/lib/resumeStructured.test.ts covers the parse↔render round-trip