A few days ago, I was applying to 100+ Full Stack, MERN Stack, and Flutter Developer roles. Somewhere around application #50, I noticed something: the hardest part of job hunting wasn't finding roles — it was everything that came after finding
them.
Every application meant writing a new email, tailoring a cover letter (same content, different company name, different date), and constantly switching tabs to ChatGPT just to get the wording right — then doing it all over again an hour later for the next company. Worse, after 50+ applications, I'd genuinely lost track of who I'd already applied to. I once nearly followed up with a recruiter about a role I'd already been rejected from.
None of this was actually job hunting anymore. It was repetitive admin work eating hours every week — so I decided to fix it for myself, and built Applyvio.
The Core Idea: Profiles, Not Just a Resume
Most job-search tools assume one user equals one resume. But if you're targeting multiple role types — like I was, applying to Full Stack, MERN, and Flutter roles simultaneously — a single resume and pitch doesn't fit all of them well.
So Applyvio is built around profiles instead. Each profile has its own short pitch, tech stack, and CV (with both a shareable link and a downloadable file). From a profile, you can generate:
- Tailored application emails — select the profile, enter the company name, get a ready subject line and body
- Cover letters with PDF export — same inputs, formatted and exportable
- LinkedIn outreach messages — tailored by recipient type: Recruiter, HR, Developer, or CEO
Content can be generated with AI, pulled from your own saved templates, or filled from built-in templates if you'd rather skip AI entirely. That last option mattered to me — I didn't want the tool to become useless the moment an AI provider had downtime or hit a rate limit.
Solving the Tracking Problem
Generation was only half the problem. The other half was knowing what I'd already done. So every application gets logged — company, role, status, date, contact person, and an optional follow-up reminder — with a warning before applying to the same role twice.
Technical Decisions
I built the entire product solo, from the initial PRD through full-stack implementation:
- Next.js (App Router) handles both frontend and API routes in a single codebase, deployed on Vercel
- MongoDB Atlas stores profiles, templates, and applications — a document model fit naturally here since the data isn't deeply relational
- NextAuth.js handles Google OAuth for login
- Cloudinary stores uploaded CV files
- The Gemini API powers AI-generated content, with a template-based fallback path so the app never hard-depends on AI availability
- @react-pdf/renderer generates the exportable cover letter PDFs
One design decision I'm fairly happy with: both AI-generated and static template content run through the same merge-field system — {{company_name}}, {{job_title}}, {{recruiter_name}}, and so on. That meant I didn't have to build two separate code
paths for "AI mode" and "template mode" — they share the same underlying engine, which kept the codebase a lot simpler than I expected going in.
Where It Stands Now
Applyvio is live and free to use at applyvio.vercel.app. I built it to solve my own problem first, and shipped it publicly because the pain — repetitive writing, lost tracking, constant AI tab-switching — didn't feel unique to me. If you're job hunting right now, I'd genuinely welcome feedback on what's missing or what could work better.
Top comments (0)