Personal MVP 15 May 2026

Resumaire

A job-search workspace that connects application tracking, a structured base and tailored resume.

React 19TypeScriptViteASP.NET Core 10PostgreSQLEntity Framework CoreASP.NET Identity
Resumaire jobs workspace showing portfolio-safe sample applications for Contoso Cloud and Northwind Labs

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.

Role Solo full-stack developer
Timeline May 2026
Team / Collaboration Solo project

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

Component 01
React 19TypeScriptViteReact Router

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.

Component 02
ASP.NET Core Minimal APIsJobsEndpointsPostgreSQL

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.

Component 03
ResumeContent schemaBaseResumeEndpointsHTML/PDF export

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.

Component 04
TailoringEndpointsKeyword comparisonGuardrailsVersioning

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.

Component 05
ASP.NET IdentityEntity Framework CorePostgreSQLDocker

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

React 19 + Vite SPA
This keeps the client fast to iterate on while making the jobs, resume, and tailoring flows feel like one coherent product surface.
ASP.NET Core 10 API
The backend needs explicit domain endpoints for jobs, resume storage, tailoring analysis, and export, so a dedicated API layer is clearer than hiding everything behind frontend-only state.
Structured resume JSON schema
Modeling the resume as structured content makes editing, export, evidence lookup, and future AI-assisted transformations much more reliable than passing around a document blob.
PostgreSQL + EF Core
A relational store fits the links between users, jobs, base resumes, and tailored versions, while EF Core keeps iteration speed high during MVP development.
Guardrail-first AI integration
If AI tailoring is added, suggestions need to be checked against real resume evidence. Building those constraints into the domain early is better than trying to retrofit trust later.

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

Tailoring screen with a dummy Platform Engineer job selected and both AI-assisted and manual tailoring modes available
Tailoring screen with a dummy Platform Engineer job selected and both AI-assisted and manual tailoring modes available
Back to all projects