Tailor Resume Session
tailor_sessionGenerate a job-specific application by applying saved resolutions and edit operations, then score and render the tailored resume as a PDF.
Instructions
Run the tailor pipeline for a session: saved resolutions -> edit ops -> the job's tailored application, scored and rendered.
Three ways to produce the edits:
- ops omitted: Maestro's AI writes them, only when the user's writer setting
(get_setup_status) is Maestro's AI; otherwise refused (409).
- ops: the caller's own typed edit ops, the shapes edit_application takes
(its ops schema lists each kind), carrying only the changed fields; no
model call.
- no_new_text=True: no new wording and no model call, under either setting.
The ops and no_new_text parameters say which saved answers the server
applies; answers_left_to_ops lists the ones that need wording.
Caller-supplied ops are applied as authored: the server validates structure
only, so nothing gates fabricated skills, experience, metrics, or dates. A
skill the candidate cannot evidence goes only in the skills list
(add_skill_item), not in a bullet; the compare view audits any edit beyond
the saved resolutions. Resume text is implied first person: an edited line
in I/he/she voice or naming the owner is a 400 naming the lines.
Optional user_prompt adds free-form tailoring guidance. Writes the job's ONE
application from the base plus the edits: it rebuilds the draft (version
history keeps the old draft) and renders its PDF; pdf_ready is false when
that render failed. compare (before/after match score deltas) may be null
with compare_error set: the tailor still succeeded. unbacked_skills names
missing skills this tailor put on the resume that career history does not
back. kb_writeback_skips derives from each user_input resolution's STORED
placement_target from resolve_gaps, not from the ops, so ops that disagree
with the stored target produce a spurious wrong_section skip. `next` (null
when off or unavailable): render_pdf if pdf_ready is false, else apply
readiness; no_new_text's answers left come first.Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ops | No | Typed edit ops, the shapes edit_application's ops parameter lists; omitted (and no_new_text false), Maestro's AI writes them when the user's writer setting is Maestro's AI. With ops the server itself applies only the saved enable_entry and port_kb_point answers: user_input and attach_project answers reach the resume only through these ops, and answers_left_to_ops lists them. On every path a saved add_keyword whose word (its wording, else the gap's jd_skill) is not on the result is added to the skills list, in the category it chose, else Additional Skills, never as a bullet; keywords_added lists those words. | |
| no_new_text | No | True: Maestro writes no new wording and calls no model, whichever writer setting the user chose. It applies only the saved answers that need none: enable_entry, port_kb_point (an approved career-history bullet) and add_keyword into the skills list (keywords_added lists the words). An add_keyword placed anywhere else needs a rewritten line: its word lands in the skills list when the resume lacks it, and otherwise the answer is listed in answers_left_to_ops beside the user_input and attach_project answers; nothing listed there reaches the resume. With non-empty ops it is a 422; when nothing can be applied without new wording it is a 400 that says so. | |
| user_prompt | No | ||
| tailoring_session_id | Yes |