Import Parsed Resume
kb_ingest_resumePersist a parsed resume into your Career KB as draft points, keeping them hidden until you approve them.
Instructions
Persist one caller-parsed resume into the Career KB. No in-house LLM.
Points land as DRAFTS and appear on no resume until approved with
kb_approve_points (or at /career), which records the user's approval.
HONESTY: `data` is stored as the user's own resume content, so a faithful
transcription is expected. The server does not detect embellishment,
rewording or invented metrics (same trust model as caller-authored tailor
ops); approved points become part of the career record.
ENTITY NAMES: matching is two-pass. Exact identity-key first (experience:
company+role+start_date; projects: name; education: institution+degree;
certs: the string), then a near-identity pass for experience/projects/certs
(token-subset; projects allow ≤2 extra tokens). Education and extra are
identity-key-only. Different spellings can merge on the second pass;
names outside its coverage still fork.
Re-running the same resume_key is a merge: no duplicate entities; a bullet
already on the entity (even retired) is not re-created. resume_key must
match ^[a-z0-9][a-z0-9_]*$.
`data` is ResumeData (only contact.name and contact.email required).
Sections: contact, summary, skills[{category, items}], experience, projects,
education, certifications[str], extra_sections. Experience:
{company, role, location?, start_date?, end_date?, bullets[str]}.
extra_sections are NOT stored in the KB (report warns); they can be added to
a base resume after it exists. skills/contact/summary go to the KB profile
(no draft state). Profile seeding is first-write-wins, so the first resume
ingested determines the profile.
Response {report, next}. report: created/matched entity ids, DRAFT point
ids, counts, warnings. next is a hint (null when suppressed/unavailable); brief=True
(multi-resume loops) suppresses it before any settings read. 422 on a
ResumeData validation failure or duplicate source key (atomic).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ResumeData. Only contact.name and contact.email are required. 422 if any source fails validation or on a duplicate SOURCE key (re-running the same resume_key is a merge, not an error); atomic either way: nothing persisted on a 422. | |
| brief | No | ||
| resume_key | Yes |