Extract Data From Text with AI
Free text in, named fields out. The extraction prompt pattern that turns any unstructured text into consistent, parseable records.
Candidate name, current role, years, skills, education — résumés into consistent screening records, with inference kept on a short leash.
Résumés bury the same facts in a thousand layouts. Screening at scale needs the same fields out of every CV: candidate_name, current_role, years_experience, skills as a deduplicated list, education, location. The catch is inference — "is the top role the current one?" — so this setup runs conservative: the model may take one short step from the text (the role dated "2024–present" is current) but never a chain of assumptions. Missing values come back empty rather than null, keeping the record human-readable in a screening sheet.
Generate and feed one résumé per call
One CV per extraction keeps the example shape honest and the fields unambiguous.
Check the reading guidance
"Most-recent-first is common but not guaranteed — check the dates." That line saves the current_role field.
Keep conservative inference
Years of experience may be summed from dates (one short step); seniority may not be invented from job titles.
The reading guidance line — "Most-recent-first ordering is common but not guaranteed — check the dates" — tells the model to date-check before setting current_role, rather than trusting position on the page. So a role dated "2024–present" wins over one printed higher up. The AMBIGUITY POLICY caps this at one short step from the text, never a chain of assumptions.
The MISSING DATA rule deliberately returns an empty string "" for any field not found, never a guessed value, so the record stays human-readable in a screening sheet. That keeps every candidate row with the same columns — candidate_name, current_role, years_experience, skills, education, location — even when a CV omits location or education. Null is never emitted.
Scoring and fit judgment are out of scope — notFor names it directly, and the EXTRACTION RULES say "Do not summarize or interpret the document." The extraction-prompt-generator produces the extraction prompt you run in your own assistant; for evaluation, pair the resulting records with a Role Prompt. NewPrompt does not run the extraction or judge fit — the recruiter owns that call.
Free text in, named fields out. The extraction prompt pattern that turns any unstructured text into consistent, parseable records.
Invoice number, vendor, dates, total, currency — extracted into clean fields with strict no-inference rules, ready for accounts payable.
The most consequential setting in any extraction prompt: what the model does when the field isn't in the text. Four behaviors, and when each is right.
Stop getting 'Sure, here is the JSON…' — the output-contract pattern that forces models to return only parseable JSON: schema, example, and a strict rule block.
Billing, Technical, Account, How-To, Feature Request — ticket triage with definitions that decide the borderline cases for the model.
The JSON won't parse and you can't see why. Deterministic cause-sniffing — trailing commas, single quotes, unclosed brackets — and the repair prompt that fixes it.
Build prompts that extract defined fields from unstructured text — emails, invoices, tickets, résumés.
The full path to an applicant tracking system — model jobs, candidates, and hiring stages, generate job descriptions and screening prompts, parse résumés into structured data, design the hiring API, set roles, review security, then ship.
Run hiring the same way for every role — build a reusable job-description template, lay out a consistent screening sequence, and extract structured data from resumes instead of eyeballing each one.