I Built a Resume, Cover Letter, and Motivational Letter Builder as One Side Project
By Khalid Danishyar 04-08-2026 1
Most resume builders do one thing: resumes. I wanted AsliCV to handle the resume, the cover letter, and — because a lot of the people I was building this for were applying to EU jobs, scholarships, and Erasmus programs — the motivational letter too, which is a genuinely different document with a different purpose that most builders don't separate out at all.
That decision to support three related-but-different document types from day one turned out to be the hardest technical call in the whole project, harder than picking a stack or a PDF export method. This post is about that decision, not a feature tour.
The wrong way to build this (which I started with)
My first instinct was the obvious one: three separate builders, three separate forms, three separate data models. Resume fields in one table, cover letter fields in another. It worked, until a user filled in their resume, then went to build a cover letter, and had to retype their name, their target job title, and their contact details from scratch. That's a bad experience for a tool whose entire pitch is "get your whole application done in one place."
The fix was treating personal and career data as one shared model — name, contact info, work history, education — with each document type (resume, cover letter, motivational letter) as a separate rendering layer on top of the same underlying data, not a separate data entry flow. A cover letter and a motivational letter pull from the same profile but format and select from it differently, since a motivational letter's purpose (explaining personal motivation to an admissions or scholarship committee) is genuinely different from a cover letter's purpose (explaining job fit to a hiring manager). Getting that separation right — shared data, separate presentation and tone — is what let switching between document types feel instant instead of like starting over.
The public profile feature nearly got cut
The aslicv.com/username public profile page — a live, shareable version of a resume — was almost cut for scope reasons. It meant dynamic route generation per user, handling the case where someone changes their username after already sharing the old link, and deciding what happens to a public page when the underlying resume is still being edited (you don't want a recruiter opening a half-finished draft mid-edit).
I kept it because of who I was building for. A meaningful share of the people using AsliCV are diaspora applicants — Afghan job seekers applying in the UK, Germany, Canada, the US, and Australia — where a shareable link solves a real problem: it works when an application portal has upload limits, when an email client strips attachments, or when someone wants one permanent link for a LinkedIn bio instead of re-uploading a PDF everywhere. The technical complexity was worth it because it wasn't a nice-to-have for this audience, it was the actual ask.
Template switching without content loss
Because the underlying data model is shared, letting someone switch between an ATS-friendly template, a Europass-style layout, and a more visual "professional" template without losing their content was mostly a rendering problem, not a data problem — once the content/presentation split existed for the multi-document decision above, template switching came almost for free. That wasn't planned upfront; it fell out of solving the harder problem first.
What I'd tell someone building something similar
If you're building a tool that produces more than one type of output from the same user input — resumes and cover letters, invoices and quotes, whatever your version of this is — resist building separate flows per output type before you've thought through the shared data model underneath. It's slower to build the shared model first. It's much slower to retrofit it after three separate flows already exist and users already have data trapped in each one.
Try it
The resume, cover letter, and motivational letter builders — plus the public profile page — are free to use at aslicv.com. If you're building something with a similar shared-data-multiple-outputs shape, I'd like to compare notes in the comments.
Tags : resume cv cv builder resume builder