Project

Myself.engineer

AI SaaS — Next.js, TypeScript, Gemini AI, Redis, AWS S3

Code ↗Live ↗

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.