// the find
Nutlope/self.so
LinkedIn -> personal site generator
Upload a PDF resume, get a personal site at self.so/username. The LLM parses your resume into structured JSON and renders it as a public page. Built for people who want a live URL without touching HTML.
Llama Guard safety check on uploaded PDFs before passing to the LLM is a thoughtful detail most side projects skip. Using Redis (Upstash) as the primary datastore keeps the ops surface tiny — no RDS to babysit for what's essentially a key-value workload. The structured output extraction via Qwen3 Coder with JSON mode is the right tool for this job: deterministic schema, no prompt-hacking to parse freeform text. Tests exist and run in CI, which is more than most 3k-star weekend projects bother with.
Redis as the only persistence layer means the data model is essentially flat — adding relations (multiple resumes, revision history, per-section themes) will require a real database migration that Redis won't help with. The editing experience is still half-baked by the maintainer's own admission: links and sections aren't fully editable yet, so what you get from the PDF parse is largely what you're stuck with. Five external SaaS dependencies (Together, Clerk, S3, Upstash, Helicone) means five things that can break or charge you before you've served a single user — the self-hosting story is genuinely painful. No export: once your site is there, there's no way to take your data and leave.