LoomCV ATS Scorer
A standalone, privacy-preserving resume ATS optimization micro-service acting as a satellite extension to LoomCV. Runs local LLM inference (Ollama / Llama 3) for zero-cost client-side analysis and provides Google Gemini Flash cloud scoring for premium tiers.
Key Metrics
Next.js 15 Satellite Micro-Service
Client-Side Ollama (Local $0 Cost) + Gemini Cloud
Server Components & Client Components
Serverless PDF & DOCX Extraction
Short-Lived 5-Min JWT & CORS Isolation
PostgreSQL via Prisma ORM
Overview
LoomCV ATS Scorer is a satellite micro-frontend and API service extending LoomCV's core resume builder. It analyzes resume alignment against target job descriptions using local LLMs (Ollama Llama 3) for zero-cost, privacy-first on-device scoring, while providing cloud-based Google Gemini Flash analysis and AI bullet rewrites for premium users.
Problem
Embedding heavy AI resume scoring into a core resume builder bloats client bundles, complicates deployments, and creates expensive cloud LLM inference costs when parsing long resume and job description texts at scale.
Solution
Decoupled the ATS scorer into an independent Next.js micro-service with dual entry paths: a secure JWT handoff token flow (Path A) and an anonymous PDF/DOCX file upload dropzone (Path B). Used client-side localhost fetches to Ollama to achieve zero-cost $0 inference and complete data privacy.
Architecture
Independent Next.js 15 App Router architecture. Path A accepts short-lived JWT handoff tokens from LoomCV, fetches resume JSON via internal API endpoints, and persists scores in PostgreSQL via Prisma. Path B processes PDF/DOCX uploads via serverless pdf-parse/mammoth route handlers and caches results client-side (localStorage). AI scoring probes client-side Ollama endpoints (localhost:11434) for local models (Llama 3 8B, Mistral 7B) with structured Zod schema validation, falling back to Google Gemini Flash for premium subscribers.
Challenges
- Enforcing strict Zod schema validation on local LLM outputs (Llama 3 8B) to prevent JSON syntax errors and unformatted text responses.
- Managing client-to-localhost CORS network requests (OLLAMA_ORIGINS) to allow browser-to-Ollama connections without server-side proxy overhead.
- Building short-lived 5-minute single-use JWT handoffs to securely transfer resume state between cross-domain applications.
- Parsing PDF/DOCX documents in serverless Node.js API route handlers under tight memory and execution duration constraints.
Lessons Learned
- Designing micro-frontend satellite services that complement primary SaaS products without increasing core bundle size.
- Client-side local AI inference integration using Ollama for zero-cost, privacy-first computing.
- Cross-domain JWT handoff token architecture and single-use validation patterns.
- Serverless PDF and DOCX document text extraction using Node.js parsing libraries.
- Graceful fallback UX strategies when bridging local AI model latency and offline states.
Future Improvements
- Historical ATS score trend tracking and visual progress charts for authenticated users.
- IndexedDB local storage synchronization for anonymous Path B uploads.
- Exporting ATS gap analysis reports as downloadable PDF checklists.
- Upstash Redis sliding-window rate limiting for production-scale API endpoints.