Resumaire
A job-search workspace that connects application tracking, a structured base and tailored resume.
Project Overview
Building a grounded resume-tailoring workspace that treats jobs, resume data, and tailored outputs as one connected system instead of three separate tools.
Resumaire started from a common job-search mess: applications live in one tracker, the base resume lives somewhere else, and tailored versions turn into an untraceable folder of copies. I built the MVP as a split product with a React 19 + Vite SPA in `frontend/` and an ASP.NET Core 10 API in `backend/`, backed by PostgreSQL, Entity Framework Core, and ASP.NET Identity. The current product already handles authentication, job records, structured base-resume editing, role-specific tailored resume versions, and export preview/PDF endpoints. The next major product step is fully implementing AI tailor so suggestions stay grounded in real resume evidence rather than becoming another hallucination-prone rewrite tool.
Key Highlights
- Core workflow
- Jobs, base resume, tailored versions, and export flow inside one authenticated workspace
- Frontend stack
- React 19, TypeScript, Vite, React Router
- Backend stack
- ASP.NET Core 10, EF Core, PostgreSQL, ASP.NET Identity
- Future direction
- Implement AI tailor on top of existing keyword comparison and guardrail foundations
The Challenges
- Job applications, base resumes, and tailored resume copies usually live in disconnected tools, which makes it hard to understand which version was used for which role.
- Most AI resume tools optimize for fast rewriting, but they do not make it easy to prove that a suggested change is actually supported by your real experience.
- If resume data stays as an unstructured document, downstream features like keyword comparison, tailored-version history, and PDF export become much harder to implement cleanly.
Project Goals
- Keep the job tracker, base resume, and tailored resume versions inside one authenticated workspace so the product has a clear source of truth.
- Model resume content as structured data that can power editing, previews, exports, keyword comparison, and future AI-assisted workflows.
- Lay the backend groundwork for AI tailoring with evidence-aware comparison and guardrails instead of bolting AI onto a loose text area later.
- Keep the local developer workflow reproducible with Dockerized PostgreSQL, user secrets, and a clean split between the Vite frontend and ASP.NET Core API.
System Architecture
Workspace shell and product navigation
The frontend is a React 19 SPA that separates the product into three primary surfaces: jobs, resume, and tailoring. Anonymous users see a lightweight landing page, while authenticated users move through a workspace shell that keeps these domains connected instead of scattering them across unrelated pages.
Jobs domain and application tracking
The jobs area is built around CRUD plus status transitions, with each record carrying the role, company, notes, applied date, and links to any selected base or tailored resume. That relationship is important because it turns the job tracker into a real workflow anchor rather than a standalone kanban list.
Structured base resume and export pipeline
The base resume is stored as structured JSON content rather than a raw document blob. That lets the frontend render section editors for personal info, summary, skills, experience, education, certifications, and links, while the backend can turn the same schema into preview HTML and downloadable PDF output.
Tailoring analysis and versioned outputs
The tailoring area is designed around a source-of-truth base resume plus job-specific derived versions. The backend already contains keyword extraction, resume keyword comparison, tailored-resume version endpoints, and guardrail logic that validates whether suggested content is grounded in supported resume evidence.
Identity, persistence, and local development
ASP.NET Identity handles authentication, EF Core maps the job and resume entities, and PostgreSQL runs locally through Docker during development. User secrets keep connection strings and AI provider settings out of source control while still making the split frontend/backend app easy to start on a fresh machine.
Technology Rationale
Tradeoffs & Constraints
Structured schema vs. document freedom
A sectioned resume editor gives the system better data to work with, but it is less free-form than letting users dump arbitrary text into a document canvas.
Grounded suggestions vs. quick AI output
An evidence-aware tailoring flow is slower and more constrained than unrestricted AI rewriting, but it is much closer to the trust model this product actually needs.
Lessons Learned
- Job tracking only becomes truly useful when it is connected to the exact resume artifacts you used for each application.
- Structured resume data unlocks much more than editing convenience; it is the backbone for previews, export, comparisons, and safe AI suggestions.
- AI-assisted resume tooling needs explicit grounding and review states as first-class product concepts, not as optional polish added at the end.
- A clean local setup story matters for solo products too, especially once the stack includes Node, .NET, PostgreSQL, migrations, and provider secrets.
Outcomes & Next Steps
The current result is a credible MVP rather than a landing-page mock: authenticated users can manage job entries, maintain a structured base resume, create job-linked tailored versions, and preview or export resume output through the backend. The product is strongest as a foundation system that gets the data model and workflow boundaries right before the AI-assisted layer is turned on end to end.
- Implement AI tailor end to end so users can extract job keywords, review grounded suggestions, accept or reject changes, and save a new tailored resume version with confidence.
Project Gallery