AI Resume Platform by Windson Infotech, built on React 18, Flask, Gemini Pro over 8 weeks.
A resume builder is two products wearing one name. The first is a document editor — templates, live preview, and an export that survives contact with a recruiter's inbox. The second is an analysis engine — language processing, scoring, recommendations. They have opposite shapes. One is chatty, stateful and latency-sensitive. The other is slow, CPU-bound, and written in Python because that is where the language tooling lives. Run both in one process and the export queue and the model inference spend the day fighting each other for the same thread.
Three services, split along that seam rather than wherever the diagram looked tidiest. A React and TypeScript front end owns editing and real-time preview. An Express and MongoDB API owns authentication, resume storage and PDF generation through Puppeteer, so the export matches the preview exactly. A separate Flask service owns analysis — Gemini Pro for scoring, with spaCy, scikit-learn and textstat doing the language work — and writes its results back to MongoDB for the API to serve. The schema keeps users, resumes and analyses apart, so re-scoring a document never mutates it.
Two products, three services, one seam — cut where the workloads actually differ rather than where the diagram looked neat.
SYSTEM DELIVERABLES
What we actually built, and why each piece had to exist — the scope as it shipped.
Template Engine And Live Preview
Eleven templates spanning modern, classic, creative, executive, technical and LaTeX styles, rendering as the document is edited rather than on save.
Multi-Format Export
PDF rendered through Puppeteer so the file matches the preview exactly, plus DOCX and plain text for the systems that will not parse a PDF.
Separate Analysis Service
A Flask process running Gemini Pro scoring alongside spaCy, scikit-learn and textstat, writing strengths, weaknesses and recommendations back for the API to serve.
Auth And Data Model
JWT with bcrypt across the service boundary, and a schema separating users, resumes and analyses so a re-score is additive rather than destructive.

