srbhr/Resume-Matcher
56.1
Adequate · 18 September 2026
41.1k
lines of production code
TypeScript
with Python
1
measurement over time
What this system is
This system is a full-stack resume management and optimization platform that enables users to create, enrich, and tailor resumes for job applications. It features an AI-driven backend that processes documents, generates content improvements, and calculates ATS scores, supported by a Next.js frontend with a Kanban-style job application tracker and multiple print-optimized resume templates. The application supports multi-provider LLM integration, internationalization, and local development workflows with SQLite storage.
How it got here
2025 — v1.3.0 feature expansion and architecture migration
38 changes.
This period focused on releasing version 1.3.0 by migrating the backend from TinyDB to SQLAlchemy/SQLite and implementing a comprehensive Swiss International Style design system for the frontend. It introduced extensive AI-driven capabilities, including resume enrichment wizards, job-matching tools, and multi-provider LLM integration, alongside new application tracking and internationalization features.
2026 — Testing infrastructure and UI modernization
14 changes.
This period focused on establishing robust testing infrastructure across both frontend and backend, including comprehensive unit, integration, and evaluation suites. Concurrently, the project modernized the user interface by introducing a CSS Modules design token system, a one-question-at-a-time resume wizard, and a Kanban-based job application tracker.
Features
ATS Score Breakdown and Resume Diff Preview components added
The Tailor section now includes two new UI components: an ATS Score Card that visualizes the overall ATS score with sub-scores (Keyword Match, Skills Coverage, Section Completeness), missing keywords, injectable keywords, and recommendations; and a Diff Preview Modal that displays a summary of resume changes (skills added/removed, certifications, descriptions, high-risk changes) and allows users to review detailed field-level diffs before confirming or rejecting the tailored resume.
apps/frontend/components/tailor · high confidence
Add customizable resume print page with template and layout options
A new dynamic route at /print/resumes/\[id\] allows users to view and print resumes with extensive customization. The page accepts query parameters to select from seven specific templates (swiss-single, swiss-two-column, modern, modern-two-column, latex, clean, vivid), adjust page size (A4 or Letter), and fine-tune layout settings including margins (5-25px), spacing levels, font families (serif, sans-serif, mono), and accent colors (blue, green, orange, red). It also supports internationalization via a 'lang' parameter and fetches resume data from the API, handling both processed and raw JSON formats with improved error logging.
apps/frontend/app/print/resumes · high confidence
Add dedicated print view for cover letters
Users can now generate a standalone, print-optimized PDF for their cover letters via a new page at /print/cover-letter/\[id\]. This view fetches the cover letter text and personal contact details, formats the content with standard margins and typography (Georgia serif), supports A4 and Letter page sizes, and respects the user's locale for date formatting and i18n strings.
apps/frontend/app/print/cover-letter · high confidence
Add utility functions for class merging and date formatting
The frontend library now includes a new \utils.ts\ module providing two key utilities: a \cn\ function that safely combines Tailwind CSS class names using \clsx\ and \tailwind-merge\, and a \formatDateRange\ function that normalizes date strings for better ATS (Applicant Tracking System) compatibility by standardizing separators and spacing.
apps/frontend/lib · high confidence
Added language settings and centralized status caching contexts
The frontend now includes dedicated React contexts to manage application state more effectively. The new \LanguageProvider\ in \language-context.tsx\ enables internationalization support by allowing users to select separate UI and content languages, persisting these choices to localStorage and syncing content language with the backend API, while also ensuring the document's \lang\ attribute is updated for accessibility. Additionally, the new \StatusCacheProvider\ in \status-cache.tsx\ implements a centralized system for caching and displaying system status (such as LLM health and database statistics), featuring optimistic UI updates for counters and periodic background health checks to keep the dashboard data current without excessive network requests.
apps/frontend/lib/context · high confidence
Added locale parity check to prevent build-breaking type mismatches
A new Python script, \scripts/check\_locale\_parity.py\, has been added to verify that all frontend locale JSON files structurally match the reference \en.json\ file. This tool detects missing keys, extra keys, and, crucially, shape mismatches where a key exists in both files but has a different JSON type (e.g., a string in \en.json\ vs. an object in another locale). By catching these discrepancies before they reach the build pipeline, it prevents \next build\ failures caused by TypeScript type incompatibilities (\typeof en\), ensuring locale files remain consistent with the frontend's type definitions.
scripts · high confidence
Added page dimension and conversion utilities for PDF rendering
A new constants file has been introduced to support PDF rendering and resume preview functionality. It defines standard page sizes (A4, Letter) in millimeters and provides helper functions to convert between millimeters and pixels at 96 DPI. Additionally, it includes utilities to calculate printable content areas based on margin settings and to determine scale factors for fitting pages within UI containers, ensuring accurate preview rendering.
apps/frontend/lib/constants · high confidence
Added support for French, Portuguese, and Korean in internationalization configuration
The frontend internationalization configuration now includes French (fr), Portuguese (pt), and Korean (ko) alongside existing English, Spanish, Chinese, and Japanese locales. This change updates the supported language list and provides corresponding locale names and flag emojis, enabling the application to display UI elements and potentially AI-generated content in these additional languages.
apps/frontend/i18n · high confidence
Adds internationalization support with translations for seven languages
The frontend now includes a new internationalization (i18n) system that allows users to switch the UI language. This change introduces support for English, Spanish, Chinese, Japanese, Portuguese (Brazil), French, and Korean. The implementation provides a \useTranslations\ hook for client components and server-side translation utilities, enabling dynamic text replacement and parameterized messages across the application.
apps/frontend/lib/i18n · high confidence
Application tracker with Kanban board and bulk management
Users can now track job applications via a new Kanban board in the frontend tracker. The board supports drag-and-drop reordering and moving cards between columns, with a horizontal scroll affordance for the seven fixed stages. You can manually add applications by selecting a resume and entering job details, and view/edit application notes in a detail modal that surfaces save errors. Bulk actions allow selecting multiple cards to move them to a different status or delete them, with a confirmation dialog for deletions. Column visibility is managed via a settings dialog, allowing users to hide stages (except the last one) to customize the board layout.
apps/frontend/components/tracker · high confidence
Backend application structure and core modules for v1.3.0
The backend application is now structured under \apps/backend/app\ with a defined version of 1.3.0. This update introduces a new FastAPI entry point (\main.py\) that manages the application lifespan, including startup migrations from the legacy TinyDB storage to a new SQLAlchemy-based SQLite data layer (\database.py\, \models.py\). It also implements a secure, encrypted API key store (\crypto.py\) and a centralized configuration system (\config.py\) with a shared cache (\config\_cache.py\). Additionally, the release adds robust AI operation management through \ai\_budget.py\ and \ai\_limits.py\, which enforce shared timeouts and input size constraints, and integrates a multi-provider LLM wrapper (\llm.py\) via LiteLLM.
apps/backend/app · high confidence
Backend migration to SQLite and introduction of application-tracker and wizard APIs
The backend has migrated its data layer from TinyDB to SQLite, including an idempotent migration script that imports existing resumes, jobs, and improvements while enforcing the single-master resume invariant. New API endpoints have been added to support an application tracker (Kanban-style CRUD for job applications), a resume wizard (adaptive one-question-at-a-time flow to create a master resume), and LLM configuration management (including per-provider API key storage, base URL validation, and masked config retrieval). The health and status endpoints now provide isolated subsystem checks so that LLM or database failures degrade gracefully rather than returning 500 errors.
apps/backend/app/routers · high confidence
Centralized LLM prompt templates with AI enrichment, regeneration, and anti-AI phrasing controls
The backend now uses a centralized prompt library in \apps/backend/app/prompts\ to manage all LLM interactions for resume processing. This introduces AI-powered resume enrichment, which analyzes weak descriptions and asks targeted questions to add metrics and technologies, as well as an AI regeneration feature that rewrites experience, project, and skill sections based on user feedback. To ensure content sounds human, a multi-pass refinement system enforces a blacklist of AI-sounding buzzwords (e.g., 'spearheaded', 'synergy') and replaces them with simpler alternatives, while also preventing fabricated content by validating claims against the master resume. The system also supports adaptive resume building via a wizard, generates resume titles, and validates custom cover letter and outreach prompts to ensure they contain required placeholders before generation.
apps/backend/app/prompts · high confidence
Frontend application initialization with Next.js and Tailwind CSS
The frontend application has been initialized using Next.js (App Router) and Tailwind CSS v4, establishing the core project structure and configuration. This includes setting up the development environment with ESLint and Prettier for code quality, Vitest for testing, and a Swiss International Style design system. The application is configured to proxy API requests to a backend service, with the backend origin and request timeouts configurable via environment variables (BACKEND\_ORIGIN, NEXT\_PUBLIC\_REQUEST\_TIMEOUT\_MS). Key pages for the resume builder, dashboard, and application tracker are scaffolded, along with the necessary UI components and internationalization (i18n) support.
apps/frontend · high confidence
Initialize Next.js root layout with multi-script font support
The frontend application now uses a Next.js root layout that integrates Google Fonts for Latin text (Geist, Space Grotesk) and specific CJK fallbacks (Noto Sans SC, KR, JP) to ensure proper rendering of Chinese, Japanese, and Korean content in resumes. The layout applies these fonts via CSS variables and sets up the base HTML structure with Tailwind CSS classes for theming and accessibility.
apps/frontend/app · high confidence
Initialize default application layout with global providers
The frontend application now wraps its default route structure with a hierarchy of context providers to enable shared state and functionality. Specifically, the layout integrates StatusCacheProvider for API status management, LanguageProvider for internationalization support, ResumePreviewProvider for resume preview state, and LocalizedErrorBoundary for error handling, while the root page renders the Hero component.
apps/frontend/app/(default) · high confidence
Introduce AI-powered resume enrichment wizard with interactive Q&A and preview
Users can now initiate an AI-driven enrichment process for their resumes via a new modal wizard. The flow begins with automatic analysis, followed by an interactive Q&A step where users provide context for specific experiences or projects. Once the AI generates enhancements, a preview step allows users to review the proposed changes side-by-side with their original content before applying them. The component includes robust state management to handle loading, errors, and refresh failures during the application phase.
apps/frontend/components/enrichment · high confidence
Introduce Pydantic schemas for resume management, AI enrichment, and application tracking
The backend now exposes a comprehensive set of Pydantic schemas to support new and enhanced product capabilities. These include models for the adaptive one-question-at-a-time resume wizard, AI-powered resume enrichment and regeneration (with budget validation and diff previews), and multi-pass keyword refinement with alignment checks. Additionally, schemas are added for a Kanban-style application tracker (supporting bulk status updates and deletes), API key management, LLM configuration, and interview preparation workflows. This establishes the data contracts for these features.
apps/backend/app/schemas · high confidence
Introduce Swiss International Style UI component library
The frontend now includes a new set of UI components (button, card, dialog, dropdown, input, label, textarea, toggle-switch, tabs, and rich-text editor) that implement the 'Swiss International Style' design system. This style is characterized by square corners (no border-radius), high-contrast black borders, hard shadows without blur, and monospace typography. The components also incorporate specific accessibility improvements, such as expanded hit areas for icon buttons to meet WCAG 2.2 AA target size requirements and proper ARIA roles for dialogs and dropdowns.
apps/frontend/components/ui · high confidence
Introduce Tailor page for resume customization with prompt selection and diff preview
A new Tailor page has been added to the frontend, enabling users to customize their resumes by providing a job description and selecting from dynamic prompt options. The interface includes a diff preview modal to review changes, an ATS score card, and an elapsed timer for long-running operations. It handles confirmation of improvements with expiration checks, offers regeneration for expired or conflicting previews, and displays specific error messages for timeout or configuration issues.
apps/frontend/app/(default)/tailor · high confidence
Introduce centralized Settings page with LLM, API key, and feature management
The application now includes a dedicated Settings page that consolidates configuration for LLM providers (including OpenAI, Azure Foundry, Groq, and others), API key management with per-provider status tracking, and feature toggles for cover letters, outreach, and interview prep. Users can test LLM connections, view health check details, manage custom prompts, and perform danger-zone actions like clearing API keys or resetting the database. The page also supports language settings and integrates with the system status cache for real-time health monitoring.
apps/frontend/app/(default)/settings · high confidence
Introduce centralized frontend API client and typed service modules
The frontend now uses a unified API client (\apps/frontend/lib/api/client.ts\) that standardizes request handling, enforces a configurable timeout (defaulting to 240 seconds via \NEXT\_PUBLIC\_REQUEST\_TIMEOUT\_MS\), and correctly resolves internal API origins during server-side rendering. This client powers a new set of typed service modules (\config\, \resume\, \resume-wizard\, \enrichment\, \tracker\) that replace scattered fetch calls with structured functions for LLM configuration, resume management, the adaptive wizard, AI enrichment, and application tracking.
apps/frontend/lib/api · high confidence
Introduce one-question-at-a-time resume wizard with live preview
The resume creation flow has been replaced by a new interactive wizard that guides users through a single question at a time, featuring a live preview panel that updates in real-time as content is added. The wizard includes a dedicated question card component with a progress bar, keyboard support, and an AI-driven 'ready to finish' signal to help users know when they have enough information. It also handles draft persistence, recovery from storage failures, and stable ID management to ensure a robust experience during the creation process.
apps/frontend/components/resume-wizard · high confidence
Introduce paginated WYSIWYG resume preview with margin guides
The preview component now renders the resume as a multi-page, paginated view that matches print dimensions, including zoom controls, a toggle for margin guides, and logic to prevent orphaned section headers. This replaces the previous single-page or non-paginated preview behavior, giving users a more accurate representation of the final document layout before export.
apps/frontend/components/preview · high confidence
Introduce resume creation wizard and dashboard preview components
The dashboard now includes a new entry point for creating resumes, presenting users with a choice between uploading an existing document or using the new resume wizard. This is implemented via the \MasterResumeChoiceDialog\ component, which offers distinct paths for upload and wizard-based creation. Additionally, the \ResumeComponent\ has been added to the dashboard to handle the rendering and preview of resumes, supporting multiple template styles (such as Swiss, Modern, and Vivid) and dynamic section customization. The \ResumeUploadDialog\ component has also been introduced to manage the file upload process, including handling success states, parsing failures, and retry logic for failed uploads.
apps/frontend/components/dashboard · high confidence
Introduces AI-powered resume enrichment and regeneration workflows
Adds new React hooks to support AI-driven resume editing features. The \use-enrichment-wizard\ hook manages a multi-step flow for analyzing resumes, answering clarification questions, and applying AI-generated enhancements. The \use-regenerate-wizard\ hook enables users to select specific resume items, provide custom instructions, and regenerate content with AI. Both hooks rely on a new \use-operation-owner\ utility to manage async operation lifecycles, ensuring state consistency and preventing race conditions when components unmount or contexts change during API calls.
apps/frontend/hooks · high confidence
Introduces centralized resume template configuration and CJK font handling
The frontend now exposes a comprehensive set of resume customization options, allowing users to select from seven distinct templates (including Swiss, Modern, LaTeX, Clean, and Vivid variants) and adjust page size, margins, spacing, font families, and accent colors. This change introduces a new type definition system that maps these settings to CSS variables for live preview and PDF generation, while also implementing specific CJK font fallback stacks to ensure correct rendering of Chinese, Japanese, and Korean characters across different locales.
apps/frontend/lib/types · high confidence
New API Key Management Interface in Settings
A new 'Api Key Menu' component has been added to the settings area, allowing users to view, edit, and save their LLM API keys directly from the frontend. The interface displays a masked version of the current key for security, supports inline editing with a draft state, and provides visual feedback for loading, saving, and error states. It integrates with existing i18n translations and API endpoints to fetch and update the key, ensuring a consistent user experience for managing authentication credentials.
apps/frontend/components/settings · high confidence
New Tracker page with responsive Kanban board layout
A new Tracker page has been added to the application, providing a full-viewport Kanban board interface. The layout is designed to be responsive, utilizing a 100dvh height to fill the screen and allowing the board columns to scroll internally while maintaining a fixed header area. It includes a navigation link back to the dashboard and applies a subtle grid background pattern to the canvas area.
apps/frontend/app/(default)/tracker · high confidence
New backend services for resume parsing, improvement, and AI-generated content
This change introduces a new \apps/backend/app/services\ module containing the core business logic for the resume platform. It adds a document parser (\parser.py\) that safely extracts resume data from PDFs and other formats with bounded resource usage, and an improvement engine (\improver.py\) that uses LLMs to generate structured resume diffs and validate changes against a whitelist of allowed paths. A multi-pass refiner (\refiner.py\) handles keyword injection, AI phrase removal, and master-resume alignment validation to prevent content fabrication. The module also includes services for generating cover letters, cold outreach messages, and resume titles (\cover\_letter.py\), an interview preparation generator (\interview\_prep.py\), an ATS score calculator (\ats.py\), and an adaptive resume wizard (\resume\wizard.py\) with deterministic state management and copy localization. These services are exported via \\\init\\_.py\ for use by the rest of the application.
apps/backend/app/services · high confidence
New error boundary and resume preview context components
Added an ErrorBoundary component with a LocalizedErrorBoundary variant to catch React rendering errors and display a user-friendly fallback UI with retry and reload options, preventing app crashes. Introduced a ResumePreviewContext provider and associated TypeScript interfaces to manage resume preview data, ATS scores, interview prep details, and diff summaries across the application.
apps/frontend/components/common · high confidence
New opt-in agentic end-to-end monitor for Resume-Matcher
Developers can now run an on-demand, opt-in end-to-end monitor that drives the real Resume-Matcher application, captures a durable evidence bundle, and uses an LLM to judge output quality, flow/render integrity, and provider reality against a committed baseline. The monitor is disabled by default and requires both the \RM\_E2E\_MONITOR=1\ environment variable and a configured LLM key to run. It pre-seeds an isolated SQLite database, boots owned backend and frontend subprocesses on isolated ports, tailors a master resume against bundled job descriptions, scores the results with deterministic structural scorers, and calls the LLM for rubric-based judgment. The resulting evidence bundle includes flow traces, summaries, baseline diffs, and private diagnostics (with secrets redacted), and can be reviewed by a Claude Code skill that generates a report. The monitor is not wired into CI or pre-push hooks and is designed to have zero impact on random clones.
_apps/backend/e2e\monitor · high confidence
New resume builder capabilities: custom sections, AI generation, and job-matching tools
The resume builder now supports creating custom sections (text blocks, item lists, and string lists) via a new dialog, and allows on-demand AI regeneration of experience, projects, and skills. A new job-description matching workflow provides a split-view comparison that highlights keyword matches and calculates a match rate, alongside dedicated editors and previews for cover letters and outreach messages, and an interview-prep view that generates role-fit analysis and skill-gap suggestions.
apps/frontend/components/builder · high confidence
New resume builder forms with drag-and-drop and rich text support
The resume builder now includes dedicated form components for personal info, experience, education, projects, and additional details. Experience, education, and project entries support drag-and-drop reordering via @dnd-kit and keyboard navigation for accessibility. Description fields in experience and project forms use a lazy-loaded rich text editor (TipTap) and allow toggling between bullet and plain text styles. Additional info fields (skills, languages, certifications, awards) are handled via textareas that preserve newline entries. All forms are fully internationalized using the i18n translation system.
apps/frontend/components/builder/forms · high confidence
New resume dashboard and wizard entry points
The application now includes a dedicated dashboard page at /dashboard that manages resume uploads, processing status tracking, and tailored resume lists, featuring a bounded polling mechanism for status updates and integration with a status cache system. Additionally, a new resume wizard entry point at /resume-wizard has been added to guide users through resume creation.
apps/frontend/app/(default)/dashboard · high confidence
New resume templates and dynamic section support
The resume builder now offers seven distinct visual templates (Clean, Modern, Modern Two-Column, Single-Column, Two-Column, Vivid, and LaTeX) to choose from when generating a resume. These templates support dynamic, user-defined sections, allowing you to add custom content blocks beyond the standard experience and education fields. Additionally, description points within these sections can now be formatted as either standard bullet points or plain text, giving you finer control over the layout and readability of your resume content.
apps/frontend/components/resume · high confidence
New resume viewer page with processing status, retry, and deletion capabilities
A new resume viewer page has been added at the \/resumes/\[id\]\ route, allowing users to view processed or raw resume data. This page introduces specific handling for processing states (pending, processing, ready, failed), including a retry mechanism for failed jobs and the ability to delete resumes. It also supports inline title editing, PDF downloading, and integration with enrichment and interview prep workflows, while managing state via a status cache and operation ownership to prevent stale updates.
apps/frontend/app/(default)/resumes · high confidence
New utility library for resume builder, download, and tracker features
This release introduces a comprehensive set of new utility modules in the frontend application to support core resume builder and tracker capabilities. The \resume-draft-storage\ and \attachment-draft-storage\ modules provide robust local draft persistence with strict validation, expiry checks, and deep-equality comparison to prevent data loss during recovery. \resume-normalization\ and \resume-content\ ensure data integrity by cleaning malformed persisted state and mirroring backend logic to detect meaningful content. The \download\ module adds personalized PDF filename generation and safe file downloads, while \html-sanitizer\ migrates to \isomorphic-dompurify\ for secure rich-text rendering. Additionally, \section-helpers\ enables dynamic resume section management and localization, \keyword-matcher\ supports job description comparison, \preview-error\ improves user-facing error messages for API timeouts, and \tracker-column-visibility\ manages application status filtering in the tracker view.
apps/frontend/lib/utils · high confidence
Behavioural changes
Adopts Swiss International Style design system with print-optimized CSS
The global stylesheet has been rewritten to implement a 'Swiss International' visual identity, replacing ad-hoc colors and shadows with a unified design token system (e.g., Hyper Blue primary, Canvas background, solid offset shadows). This change enforces a light-only theme by removing the previous dark mode mappings and standardizes typography to Geist Sans and Space Grotesk. Additionally, specific print styles have been added to ensure resumes and cover letters render correctly as PDFs, hiding UI chrome and forcing a clean, black-and-white layout.
apps/frontend/app/(default)/css · high confidence
Backend configuration and documentation overhaul
The backend now ships with a comprehensive \.env.example\ file that documents support for multiple LLM providers (including Azure AI Foundry and openai\_compatible), configurable reasoning effort, and explicit timeout synchronization with the frontend. A new \.gitignore\ ensures sensitive data (encrypted API keys, database files, and migration dumps) is never committed, while a new \CLAUDE.md\ provides detailed architectural context for developers. The project also standardizes on Python 3.13 and introduces a \.env.sample\ for quick-start reference.
apps/backend · high confidence
Frontend version and codename configuration introduced
A new configuration file has been added to the frontend application to define the current version as 1.3 with the codename 'Crescendolls' and the app name 'Resume Matcher'. This change provides a centralized source for version metadata, exposing a helper function to generate a formatted version string (e.g., 'Resume Matcher v1.3 (Crescendolls)') for display or logging purposes.
apps/frontend/lib/config · high confidence
Introduce Swiss-style dashboard layout with container-query grid
The home section now features a new 'SwissGrid' dashboard layout that replaces the previous hero-only view. This layout presents a sharp, bordered 'canvas' containing a header, a scrollable module grid, and a footer with links to the application tracker and settings. The grid uses CSS container queries (@container) to adapt its column count based on the container's width rather than the viewport, ensuring cards do not over-stretch on ultra-wide screens. The design includes a subtle grid background pattern and consistent hover effects across buttons.
apps/frontend/components/home · high confidence
Local pre-push gate replaces PR-triggered CI
The repository now uses a local \pre-push\ git hook to validate changes before pushing, replacing the previous PR-triggered GitHub Actions workflow. This local gate runs the backend test suite (via \uv run pytest\), checks frontend locale parity, and executes frontend tests (via \vitest\) and type-checking (via \tsc --noEmit\) when Node is available. This approach prevents CI runs on external contributor PRs while ensuring that \main\ and \dev\ branches remain green by catching failures locally before they are pushed.
.githooks · high confidence
Resume templates now use a CSS Modules design token system with improved print and CJK support
The resume styling system has been refactored to use CSS Modules and a centralized design token file (\_tokens.css), replacing the previous global styles. This change introduces a consistent base style layer and specific template styles (Clean, LaTeX, Modern, Modern Two-Column, Swiss Single/Two-Column, Vivid) that leverage CSS variables for typography, colors, and spacing. Users benefit from improved print/PDF layout control, including better handling of page breaks and color adjustments for colored accents. Additionally, the token system explicitly includes CJK font faces to ensure correct rendering of Chinese, Japanese, and Korean text in resumes.
apps/frontend/components/resume/styles · high confidence
Rewritten Docker startup script with improved configuration and signal handling
The docker/start.sh script has been completely rewritten to support a single-port deployment architecture, where the frontend serves on port 3000 and proxies API requests to the backend on port 8000. The new script introduces robust signal handling for graceful shutdowns, ensuring both frontend and backend processes are terminated cleanly upon receiving SIGTERM, SIGINT, or SIGQUIT. It also implements a secure environment variable loading mechanism that supports both direct variables and \*\FILE secret mounts, while carefully avoiding the export of empty LLM\\* variables that could override backend defaults. Additionally, the script now includes configurable log levels for both the application and LiteLLM, with a specific warning when LOG\_LLM is set to DEBUG to prevent accidental exposure of API keys in plaintext logs.
docker · high confidence
Test coverage
Added eval harness for resume tailoring quality; Added service tests for the resume improver module; Established backend test infrastructure with isolated fixtures; Expanded frontend test coverage for API clients, dashboard state, and UI components; Expanded unit test coverage for backend services and infrastructure; New integration test suite for backend services.
Dependencies
Initialize backend and frontend dependency manifests for version 1.3.0
The backend and frontend application directories now include their primary dependency manifests (pyproject.toml, requirements.txt, package.json, and package-lock.json) for version 1.3.0. The backend (rm-backend) is configured with Python 3.13+ and pins key libraries including FastAPI 0.128.4, SQLAlchemy 2.0.36, cryptography 50.0.0, and litellm 1.86.2, while also adding support for DOCX processing via markitdown and python-docx. The frontend (resume-matcher-ui) initializes with Next.js 16.3.3, React 19.2.4, and Tailwind CSS v4, and introduces drag-and-drop capabilities via @dnd-kit and rich text editing via Tiptap v3.20.0, with isomorphic-dompurify added for security.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 56.
Lenses
- Code Health 69
- Architecture 61
- Maturity 69
- Readiness 57
- Security 66
- Accessibility 51
Changes since last survey
- 300 commits — 145 feature/other, 155 fixes
By area
- apps/backend — 124 commits
- apps/frontend — 95 commits
- (repo) — 59 commits
- docs/agent — 12 commits
- (root) — 5 commits
- docs/superpowers — 4 commits
- .github/workflows — 1 commit
Notable commits
- fix: Complete type annotations on revised regression tests
- fix: Fix GPT-5 temperature compatibility
- fix: Fix dashboard refresh and status ownership
- fix: Keep preservation regression independent of later metrics
- fix: Merge pull request #785 from Frankli9986/fix-777-docker-cjk-fonts
- fix: Merge pull request #843 from srbhr/fix/status-graceful-degradation
- fix: Merge pull request #868 from srbhr/fix/lmstudio-json-object-857
- fix: Merge pull request #871 from srbhr/fix/resume-delete-error-state-dialog
- fix: Merge pull request #874 from gingeekrishna/fix/850-persist-toggle-states
- fix: Merge pull request #881 from RedMoonnn/fix/dnd-hydration-mismatch
- fix: Merge pull request #885 from luochen211/fix/contain-confirm-dialog-errors
- fix: Merge pull request #895 from srbhr/fix/i18n-fr-interview-prep
- fix: Merge pull request #897 from srbhr/fix/i18n-fr-interview-prep
- fix: Merge pull request #902 from srbhr/fix/code-review-2026-07-28
- fix: Merge pull request #906 from srbhr/fix/review-903-robustness
- fix: Merge pull request #908 from srbhr/fix/cubic-907-findings
- fix: Merge pull request #919 from Dessalines39394/fix/star-history-chart
- fix: Merge pull request #924 from wwlwgo/fix/openai-compatible-resume-parser
- fix: Merge pull request #929 from thmsmtylr/fix/gpt-5-temperature
- fix: fix(ai): align confirmation limits and bound processing cleanup waits
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
srbhr/Resume-Matcher was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ab2b370d1fb98d9272f71b8d6e54a9c51ac75110 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.