Resume pipeline
Unstructured documents in, typed records out, with the same input always producing the same stored result.
Résumés arrive as PDFs, exports, and pasted text, and every downstream feature wants the same twelve fields. Extraction with a language model solves the reading problem and introduces a new one: the same document run twice should not produce two records.
Constrain the model to a schema, validate the result before it is allowed to write, and key every request so retries resolve to the existing record. Extraction becomes a function of the document rather than of when it ran.
One code path serves single-document and batch requests. Validation failures are captured with the offending payload for review. Idempotency keys are derived from document content, so an upload retried after a timeout returns the original record.
Callers can retry freely. The store holds one record per document, and the fields downstream features depend on are typed rather than guessed.