Full-stack product case study

Re-vsion

A cybersecurity-focused resume enhancement platform that helps job seekers analyse their resume, target a specific role, and understand the gaps between their current experience and career direction.

Completed project React + TypeScript FastAPI PostgreSQL Anthropic API

Overview

A focused product built around a real application problem.

Re-vsion began with a problem I could see in cybersecurity and IT job applications: people often have useful experience, study, labs, and projects, but struggle to connect that evidence to the language of a technical job description. I built the platform to make that process more structured and easier to work through.

The application brings account management, resume upload and parsing, pre-enhancement analysis, job targeting, document generation, and cybersecurity career-path guidance into one workflow. Building it pushed me beyond a simple website and into the decisions involved in a multi-user product: data ownership, protected routes, long-running tasks, AI input design, deployment, and the experience of moving between several connected features.

Re-vsion reached a deployed product state, but it is no longer under active development. This case study documents what I built and learned without presenting the platform as a currently maintained commercial service.

Product view

Re-vsion application landing page.
The public Re-vsion interface introduces the product before users enter the account workflow.

Problem

Technical candidates often know more than their resume shows.

General resume builders can improve formatting, but they do not always help a cybersecurity student, IT support worker, or career changer explain tools, projects, labs, and transferable experience in a way that matches a specific role. A second problem is timing: generating polished text before identifying weaknesses can hide the reason an application is not working.

Re-vsion separates analysis from enhancement. The user can first see what appears weak, missing, or poorly aligned, then provide a job description and generate a more targeted application. The intent is to improve how real experience is communicated, not create experience the user does not have.

Target users

I designed the product for cybersecurity students, entry-level IT workers moving toward security roles, help desk staff aiming for analyst positions, career changers, and applicants who need to tailor one resume to a particular technical vacancy. That narrow focus shaped both the wording of the analysis and the later career-path feature.

Key features

01
Create an account

Sign-up and sign-in lead into a protected dashboard with user-owned data.

02
Upload and analyse

PDF, DOCX, or text resume content is parsed and reviewed before enhancement.

03
Add a target job

The user records the job title, company, and description rather than requesting generic advice.

04
Generate targeted documents

The workflow supports a job-aligned resume, analysis results, comparisons, and cover-letter output.

05
Map a career direction

Current role, target cybersecurity role, and known skills are used to identify matching and missing areas.

Technical implementation

A React frontend connected to a Python API and relational data model.

The frontend uses React 18 and TypeScript, built with Vite. React Router handles the application routes, Axios connects the dashboard to the API, and react-dropzone supports the upload interaction. The UI has to coordinate forms, empty states, loading states, generated results, protected navigation, and status updates across a multi-step process.

The backend is built with FastAPI and Pydantic. SQLAlchemy and Alembic manage the PostgreSQL-backed data model for users, resumes, jobs, enhancements, and saved career paths. API routes keep those resources separated by user ownership, while document-processing utilities extract text from uploaded PDF and DOCX files and generate downloadable output.

The deployed configuration separates the static frontend and Python backend on Render, with environment-specific API URLs, a managed PostgreSQL database, custom-domain configuration, and HTTPS. Working through DNS, environment variables, migrations, and production-only failures was a substantial part of turning the project into a public product.

AI integration

Structured inputs, constrained outputs, and an honesty requirement.

Re-vsion includes Anthropic-backed resume analysis and writing assistance. The AI service receives structured resume and job information rather than an unbounded prompt. Separate prompt paths cover resume-quality analysis, writing-style previews, and job-targeted content, with token limits and response parsing around the model calls.

Resume and job-description text are treated as untrusted user content. The backend sanitises those inputs and wraps them in explicit XML data boundaries so instructions embedded inside an uploaded document are not treated as trusted system directions. The prompts also emphasise presenting the user's real background more clearly instead of fabricating experience.

The career-path feature is intentionally different: it maps selected roles and self-assessed skills against structured cybersecurity role data to calculate matching and missing skills. This gives the product a useful career-planning function without pretending every decision requires generative AI.

Security implementation

Security mattered because the application handles account data, resumes, generated documents, and paid-feature groundwork. The current backend uses authenticated routes, user ownership checks, password hashing, short-lived access and refresh-token handling, restricted CORS origins, and role-aware dependencies. Secrets such as the AI key and signing key remain in backend environment variables rather than frontend code.

Additional controls include upload and AI rate limits, path validation around downloadable files, sanitised public error responses, security headers such as CSP and HSTS, no-store caching for API responses, audit-oriented request logging, and startup validation for unsafe production settings. These controls do not make the product automatically secure, but they show the practical security review needed when a prototype becomes a public, multi-user application.

Product and entrepreneurial thinking

The strongest product decision was choosing a specific user rather than building another general resume editor. Cybersecurity applicants need to communicate labs, tools, certifications, projects, troubleshooting, and progression from adjacent IT roles. That gave me a clearer basis for deciding which workflow steps mattered and which features could wait.

Adding career-gap guidance expanded the idea from document generation into career planning. It also introduced product questions about free and paid access, usage limits, reusable content templates, and which features provide enough value to justify continued development. The project has taught me to evaluate a feature by the user problem it solves, not only by whether I can build it.

Challenges

Making separate systems feel like one product.

The main engineering challenge was connecting authentication, uploads, database records, AI requests, generated files, status changes, and dashboard navigation into a predictable sequence. A failure in one stage has to be explained without exposing private data or leaving the user unsure whether a task is still running.

AI output created a second challenge. A fluent response is not automatically accurate or appropriate for a resume, so prompts, input boundaries, output parsing, and fallback behaviour all needed deliberate handling. Deployment added another layer through database migrations, CORS, SSL/TLS, DNS, worker behaviour, and differences between local and hosted environments.

What I learned

  • How to structure a full-stack application around a real user workflow rather than isolated pages.
  • How authentication and ownership checks affect every data route in a multi-user product.
  • Why AI integration needs input sanitisation, prompt boundaries, output validation, limits, and honest fallbacks.
  • How relational models connect users, resumes, target jobs, generated outputs, and saved career paths.
  • How deployment, DNS, HTTPS, environment configuration, and database migrations become part of the engineering work.
  • Why product scope is easier to manage when each feature is tied to a specific user problem.

Outcome

Re-vsion reached a deployed, multi-user product state with a protected dashboard, resume and job workflows, AI-assisted analysis, document generation, and cybersecurity career-path mapping. It is the project that best represents my interest in combining software development, AI, security thinking, and experimentation around a focused idea.

Development has now concluded. If I revisited the idea, the clearest improvements would be stronger account-recovery paths, more automated end-to-end coverage, further testing of generated-document quality, and more direct validation with job seekers.

Skills demonstrated

Full-stack development React + TypeScript FastAPI PostgreSQL Authentication AI integration Prompt security File workflows Deployment Product design