ResumesKit

A resume app for job seekers that imported an existing CV into a reusable career record and generated versions tailored to individual job postings.

Period
April 2026 – May 2026
Role
Engineer and designer
Team
Solo
Stack
Laravel 13, PHP ^8.3, Inertia 3, React 19, TypeScript, Tailwind 4, laravel/ai, OpenRouter, Pest 4
Status
Closed

I wanted ResumesKit to reduce the work of writing another CV for another application. The person using it would keep a record of their experience, then use that record to prepare a version for a particular job. They should not have to reconstruct their career from an old PDF every time.

The web app started with an existing resume. A user uploaded a PDF, an agent parsed its contents, and the user reviewed the result in a rich-text editor. Another agent turned that reviewed content into records for the different resume sections.

I kept some fields structured, including company names, roles, and dates. Longer descriptions lived in a content field. This let the interface display and edit a section without making every sentence another database column. The source record could remain useful across several job applications.

For each application, the user supplied a job posting and chose a template. The generation pipeline read the career record and produced a tailored CV, then sanitized its HTML and saved the result for preview. Importing a record and generating a CV were separate jobs, with separate agents, because they worked with different inputs and failed in different places.

The guards also had specific jobs. The parsing and structuring guards screened content for prompt injection and abuse. The generation guard cleaned the user's instructions before generation. These checks did not establish that every statement in a generated CV was true. The aim was to use the person's source record, and reviewing the result still mattered.

I built the web version with Laravel 13 and Inertia 3, using React 19 for the interface. Its PHP requirement was ^8.3. There was also a separate Electron desktop app with React and TypeScript. Both repositories are private.

ResumesKit never reached a public launch. The last push to the web repository was in May 2026, and the domain no longer resolves.

Separating the career record from each generated CV meant a tailored document could leave details out without deleting them from the person's history. I would describe the AI validation more carefully. A guard needs a stated job and a limit on what its result tells you.