The idea
Most developers don't have a portfolio site. Building one from scratch takes time, and using a template means everyone's site looks the same. The idea: upload your résumé PDF, and the system generates a live, personalized portfolio site from it.
Pipeline
PDF → S3 → LLM parsing → structured JSON → Redis cache → SSR portfolio page.
The LLM parsing step is the interesting part. A raw PDF is unstructured — headers, bullets, tables, and formatting all collapse into text. Getting the LLM to output clean, typed JSON (with section names, date ranges, bullet content) required careful prompt engineering and a validation layer that re-requests malformed outputs.
Latency
The first load after PDF parsing is slow — LLM calls take a few seconds. After that, the structured JSON is cached in Redis with a long TTL. Subsequent page loads serve from cache via SSR, which dropped p50 response time by 45%.
S3 handles the PDF storage so the API servers stay stateless. The portfolio page is server-rendered on each request using the cached JSON, which means good SEO and no client-side loading states.