Back to all work

Document automation / Applied AI engineering

ResumeAI

A document pipeline that brings resume extraction, layout interpretation and template-based PDF generation into one workflow.

Domain
Resume documents
Focus
Structured content and layout
Core stack
GPT-4 Vision, Jinja2, Playwright
Content and layout, kept separateResume documents → structured JSON → HTML/CSS templates → rendered PDF.Conceptual workflow illustration, not a live product screenshot.

The problem

A resume is both information and layout. Extracting text alone does not describe the hierarchy of a page, while copying its appearance does not produce reusable content. The task was to separate those concerns and connect them through a document-generation workflow.

My contribution

I built a pipeline using pdfplumber for extraction, GPT-4 Vision for layout interpretation and structured JSON for resume content. HTML and CSS templates provided the presentation layer, with Jinja2 connecting structured fields to markup.

Playwright and Chromium handled PDF rendering. The project brought document understanding and browser-based output together without treating generated text as the final page layout.

Engineering choices

Content structure and visual structure have different responsibilities. JSON gives the application named fields to work with; templates define how those fields appear. Vision-assisted interpretation helps describe layout, while explicit HTML and CSS carry the rendering rules.

  • pdfplumber provides a text-extraction component, distinct from visual layout interpretation.
  • Jinja2 binds structured content to templates instead of making each document an unstructured page-generation task.
  • Playwright drives Chromium to render HTML and CSS into PDF using a browser layout engine.

This separation makes content mapping and presentation independently inspectable. Extraction accuracy depends on the source PDF, while pagination depends on content length and template layout.

Proposed next step

Build a document review set spanning long entries, multi-column layouts and missing fields. Check extraction completeness, reading order and page breaks before export.