[002] / SELECTED WORK
·PROJECTCOVERME
AI cover letter generator. 500+ users, 1,000+ letters, sub-5-second responses.
- ROLE:
- Solo developer
- TIMELINE:
- July 2025 – Present
- STATUS:
- Shipped
- STACK:
- Next.js, TypeScript, OpenAI API
Bulk job description input, tailored cover letter output in under five seconds. Built solo as a tool for myself, opened to the public. The interesting work was on the prompt and the input flow, not the framework choice.
[METRICS]
[STACK]
- Next.js
- TypeScript
- OpenAI API
- Vercel
[01]
THE PROBLEM
Cover letters are repetitive, time-consuming, and high-stakes. Job seekers write 10–20 letters per week — each tailored to a different role, each demanding the same dance of relevant-but-not-canned. The honest version is that most people copy-paste an old letter and change the company name. The result reads like exactly that. CoverMe started as a tool for me: bulk job descriptions in, distinct tailored letters out, in under five seconds.
[02]
WHAT I BUILT
A Next.js + TypeScript app on Vercel with a single-screen flow: paste a resume once, paste a job description, get a letter. The OpenAI integration runs with streamed responses so the first words land in under a second, and full letters arrive in under five. No login required for the free tier — the goal was to remove every barrier to first-use. The app has crossed 500+ users and 1,000+ generated letters.
[03]
PROMPT ENGINEERING ITERATION
The first prompt was naive: "write a cover letter for this resume and this job." The output was generic, hedging, and full of phrases like "I am writing to express my interest." Iteration two anchored the model in three structural beats — opening hook, two specific resume-to-job bridges, and a forward-looking close — and the output got noticeably tighter. The bigger unlock was teaching the model to *not* repeat the resume. The final prompt instructs it to assume the resume is already attached and write the version that adds, rather than restates, value.
[04]
WHAT I'D DO DIFFERENTLY
I'd ship a voice-calibration step. Right now CoverMe writes in a competent but neutral register; users with strong personal voice get letters that sound less like them than their old hand-written ones. Next iteration: a quick onboarding where the user pastes a sample of their writing and the model adopts the tone.
[UP NEXT]
→ 003 / PISAYIAN DATA CLEANER