Feed resume review edits through Avocet corrections pipeline #112

Open
opened 2026-05-05 13:17:59 -07:00 by pyr0ball · 0 comments
Owner

Context

As of v0.9.2, the Resume Review modal lets users edit the proposed summary and experience bullets before accepting them. Each edit is a (proposed, accepted) pair: the LLM output and what the user actually wanted.

Goal

Feed these correction pairs into the Avocet corrections pipeline so they can be used to fine-tune the resume optimizer LLM.

Data shape

When a user edits and approves:

  • Summary: { proposed: string, accepted: string } — a text_diff correction
  • Experience bullets: { proposed: string[], accepted: string[] } — a bullets_diff correction

Both can be extracted from the decisions dict that the /review endpoint already receives.

Implementation sketch

  1. In dev-api.py POST /resume_optimizer/review, after applying decisions, check if any edited_text or edited_bullets differ from the original proposed values.
  2. If so, write correction records to a resume_optimizer_corrections table (job_id, section, proposed_json, accepted_json, created_at).
  3. Export endpoint or Avocet import hook to turn these into SFT (supervised fine-tuning) candidates.
  4. Wire into Avocet label queue for human review before training inclusion.

Notes

  • The correction only fires when accepted=true AND the text was modified (proposed != accepted).
  • Rejections (accepted=false) are not corrections — they revert to original and carry no training signal.
  • This is the same Deterministic Bootstrap pattern used in Peregrine job_quality and Snipe listing_trust: high-confidence accepted edits self-certify; uncertain or sparse edits go to Avocet queue.

Labels

  • backlog
  • fine-tuning
  • avocet-integration
## Context As of v0.9.2, the Resume Review modal lets users edit the proposed summary and experience bullets before accepting them. Each edit is a (proposed, accepted) pair: the LLM output and what the user actually wanted. ## Goal Feed these correction pairs into the Avocet corrections pipeline so they can be used to fine-tune the resume optimizer LLM. ## Data shape When a user edits and approves: - **Summary**: `{ proposed: string, accepted: string }` — a text_diff correction - **Experience bullets**: `{ proposed: string[], accepted: string[] }` — a bullets_diff correction Both can be extracted from the `decisions` dict that the `/review` endpoint already receives. ## Implementation sketch 1. In `dev-api.py` POST `/resume_optimizer/review`, after applying decisions, check if any `edited_text` or `edited_bullets` differ from the original proposed values. 2. If so, write correction records to a `resume_optimizer_corrections` table (job_id, section, proposed_json, accepted_json, created_at). 3. Export endpoint or Avocet import hook to turn these into SFT (supervised fine-tuning) candidates. 4. Wire into Avocet label queue for human review before training inclusion. ## Notes - The correction only fires when `accepted=true` AND the text was modified (proposed != accepted). - Rejections (accepted=false) are not corrections — they revert to original and carry no training signal. - This is the same Deterministic Bootstrap pattern used in Peregrine job_quality and Snipe listing_trust: high-confidence accepted edits self-certify; uncertain or sparse edits go to Avocet queue. ## Labels - backlog - fine-tuning - avocet-integration
pyr0ball added this to the Fine-tuned Models milestone 2026-05-13 11:21:51 -07:00
pyr0ball added the
enhancement
label 2026-05-13 11:22:08 -07:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#112
No description provided.