Resume pipeline

LLM structured extraction behind an idempotent API.

Unstructured documents in, typed records out, with the same input always producing the same stored result.

  • Schema-constrained extraction with validation before write.
  • Idempotency keys so retries never duplicate a record.
  • Failure paths captured for review instead of dropped.
  • Batch and single-document requests share one code path.

Problem

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.

Approach

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.

Build

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.

Outcome

Callers can retry freely. The store holds one record per document, and the fields downstream features depend on are typed rather than guessed.