Engineering

Project 01 / 06

Job Fit & Skill-Gap Analyzer

Full-stack tool that compares résumé and job-description skills, surfaces matched and missing skills, and tracks recurring gaps across saved roles.

One captured analysis result

One captured résumé-to-role resultCaptured Smart AI result for Robotics — Software Development Engineer at Amazon: 8 matched skills and 23 missing skills. This is one analysis state, not an accuracy or hiring-quality measure.
Job Fit and Skill-Gap Analyzer result for an Amazon robotics software role showing 8 matched skills, 23 missing skills, and a warning to review the AI output.

The captured analysis makes one résumé-to-role comparison inspectable by separating eight matched skills from twenty-three missing skills and warning that AI output requires human review.

01One comparison, made inspectable

The captured interface separates one résumé-to-role comparison into visible matched and missing skill sets while keeping a human-review warning beside the result.

The screen identifies a Robotics — Software Development Engineer role at Amazon, reports 8 matched skills and 23 missing skills, and lists all eight matches alongside part of the missing set. It also states that Smart AI may make mistakes and should be reviewed before action.

That is the evidence boundary for the image. It does not expose the submitted résumé or job description, prove which analysis path produced the result, show that the result was saved, or establish whether any skill classification is correct.

02Deterministic matching is the baseline

A rule-based path creates the comparison independently of optional AI availability.

Canonical terms before comparison

The committed analysis code lowercases input, searches for canonical skills and documented aliases with boundary-aware regular expressions, and deduplicates matches into a common vocabulary. It then compares résumé skills with job-description skills to form matched and missing sets.

At the inspected source revision, the configured taxonomy contains 23 categories, 250 canonical skills, and 99 alias groups. Those counts describe source configuration, not coverage quality or matching accuracy.

Deterministic comparison stages
StageDocumented behaviorClaim boundary
NormalizeLowercase text and map documented aliases to canonical skill namesNo general language understanding is implied
DetectUse boundary-aware regular expressions to avoid simple substring matchesNot semantic matching, embeddings, or vector search
CompareIntersect résumé and job skill sets for matches; retain job-only skills as missingNo candidate ranking or fit formula
Configure23 categories · 250 canonical skills · 99 alias groups at source revision f12bd47Configuration counts, not performance metrics

The current 99-alias configuration postdates an earlier fixture report that documented 98 alias groups; those two revisions are not conflated.

03AI is optional—and bounded

The OpenAI path adds structured analysis without becoming the workflow's only route to a result.

When configured, the FastAPI service calls the OpenAI Responses API with a strict structured-output schema for matched skills, missing skills, and a summary. The request disables provider-side response storage in the inspected service code.

The web layer canonicalizes and deduplicates returned skills, reconciles them with deterministic overlap, and prevents a skill from remaining in both matched and missing sets. If AI is disabled, fails, or returns an unusable payload, the route returns the rule-based result instead.

Public product framing

Public Job Fit and Skill-Gap Analyzer homepage describing Smart AI plus rule-based analysis, a limited public beta, résumé-to-role comparison, a fictional structured skill result, and privacy controls.
Public homepage — product framingThe public interface presents Smart AI alongside rule-based analysis, limited-beta framing, and privacy controls. The screenshot documents that product framing; committed source separately establishes deterministic fallback behavior.
Optional AI path and guardrails
ConcernImplemented treatmentWhat it does not prove
Output shapeStrict structured response for skills and summaryThat the response is correct
VocabularyCanonicalization and deduplicationComplete occupational coverage
Set consistencyDeterministic overlap reconciles matched and missing skillsElimination of every model error
Service failureAutomatic fallback to rule-based analysisMeasured reliability or high availability

Optional AI output remains planning guidance and is not a hiring decision or validated recommendation.

04Sensitive inputs cross explicit service boundaries

The hosted workflow separates authenticated request handling, analysis, document extraction, optional AI, and explicit persistence.

Authenticated Next.js routes proxy analysis requests to FastAPI. The backend exposes deterministic analysis, document extraction, and optional AI endpoints; PDF, DOCX, TXT, and Markdown content can be converted to transient text, while OCR is not implemented.

Request-size and timeout checks bound the inspected routes. These are implementation controls, not evidence of a security audit, compliance certification, production scale, or universal privacy guarantee.

Analysis workspace — input surfaces

Analyze a role workspace showing a saved résumé profile, job-description input, supported document-upload formats, privacy and data controls, and sample-input messaging.
Analyze workspace — visible input surfacesThe workspace exposes saved-profile and job-description inputs, document upload, privacy controls, and a visible distinction between loading sample data and running or saving an analysis. Service routing, persistence, and access-control claims remain grounded in committed source—not inferred from this interface.
Request, processing, and persistence boundaries
BoundaryDocumented behaviorQualification
Browser → Next.jsAuthenticated server routes receive and validate analysis requestsNo throughput or availability benchmark
Next.js → FastAPIServer-side proxy calls deterministic, extraction, or optional AI servicesNo claim of enterprise-scale microservices
Document extractionPDF, DOCX, TXT, and Markdown text extractionNo OCR or arbitrary document understanding
Analysis → savePersistence is a separate explicit action using structured fieldsThe screenshot does not prove that its result was saved

05Structured results support saved comparison

An explicit save turns one transient result into structured records that can be revisited across roles.

The current cloud-save mapping omits raw résumé and job-description bodies and writes structured analysis metadata plus matched and missing skill rows. Supabase row-level policies scope those stored records to their owning user.

The committed application includes search and filtering for saved analyses, role comparison, export and delete controls, and recurring-gap aggregation. Recurring-gap percentages count unique saved analyses associated with each canonical skill; they describe one user's saved set, not the wider labor market.

Saved-workspace capabilities and evidence limits
CapabilityDocumented basisPublic boundary
Structured saveRun, role, matched-skill, and missing-skill recordsExplicit save; not every transient analysis
Owner scopeSupabase row-level policies tied to the authenticated userImplemented policy, not a penetration-test result
Saved comparisonSearch, filter, compare, export, and delete controlsNo user-adoption or decision-quality evidence
Recurring gapsUnique saved-analysis counts grouped by canonical skillNot labor-market prevalence

06Validation is versioned, not universal

The source preserves automated and manual checks, but every result remains attached to its fixture set and revision.

Documented validation evidence
EvidenceRecorded resultVersion boundary
Taxonomy fixtures21 fictional role cases · 19 negative controls · 49 alias-driven detections · 0 final failuresVersion 22 and its 98-alias configuration
Production QA checklist17/17 checksVersion 23 at cited commit 5a6293
Launch verification7/7 checks plus documented manual reviewVersion 25 at cited commit 0ceb8b88
Current committed sourcePython, TypeScript, browser tests, and CI configuration presentHEAD f12bd47; older pass totals are not reassigned to it

These records establish implementation coverage at cited revisions. They are not an accuracy study, a recruiter/user study, or a universal reliability result.

The source history documents an engineering progression from a deterministic command-line workflow through reusable analysis, storage, interfaces, hosted services, privacy controls, structured profiles, and optional AI with fallback. It also documents substantial AI coding assistance.

The protected public role is Developer. The available record supports project-level implementation claims, but it does not establish sole personal ownership of the architecture, matching logic, interface, backend, AI integration, deployment, or every test.