Founder & product engineer · 2026
UplyFox
A job-application copilot that fills forms, and never submits without you.
UplyFox turns a résumé into a grounded candidate profile and a reusable answer library, then helps fill real job applications through its Chrome extension. Filling is automated; submitting needs an explicit, one-time approval of the exact form you reviewed.
What it does
- Email OTP sign-in with controlled beta access
- Résumé import (PDF, TXT, Markdown) with layout-aware extraction and optional AI structuring
- Profile enrichment from GitHub, portfolio links and a spoken narrative with server transcription
- Reusable answer library covering 47 common application questions
- Job matching against your profile, shown on the job page
- Application tracker: saved, applying, applied, assessment, interview, offer, rejected, withdrawn
- Funnel summary, stale-application insights, notes, dates and checklists
How it works
- 01
Import
Upload a résumé. Text is extracted with layout awareness and every field keeps its provenance, so the résumé always wins conflicts.
- 02
Enrich
GitHub, portfolio links and a voice narrative can fill gaps. They never silently overwrite the résumé.
- 03
Resolve answers
Each question goes through a fixed order: stop on legal or sensitive prompts, keep what the page already has, use saved answers, derive from the profile, and only then ask a model for open-ended writing.
- 04
Fill with the extension
The extension inspects the form, writes verified values and stops on anything it cannot answer honestly.
- 05
Approve and track
You approve one exact snapshot. The application and its outcome land in the tracker.
Architecture
Next.js 15 App Router with authenticated routes for AI, parsing, enrichment and transcription. Provider keys never leave the server.
Supabase Auth, PostgreSQL with row-level security across 22 tables and 15 migrations, and private Storage buckets for résumés and evidence.
TypeScript logic used by both apps: profile merge and provenance, answer resolution, job matching, the form graph and approval state.
Custom clients: Gemini for generation, Mistral as fallback, a Voxtral-compatible transcription path. Output is fence-stripped, parsed and shape-validated.
Engineering decisions
Retrieval without pretending
Grounding uses lexical and intent matching with ranking, character budgets and gap reporting. It is not sold as vector RAG.
Untrusted page text
Selected text and job descriptions are treated as context, never as facts about the candidate, and are filtered for prompt injection.
Security by default
Server-side user checks, RLS, private buckets, hashed beta codes, SSRF guards on link enrichment and redaction before anything is stored.
Testing & evaluation
- 190 named unit tests across the extension (149) and web app (41) with Vitest
- CI on Node 20 for type checks, tests and builds of both apps
- Deterministic answer resolution is unit tested independently of any model
Stack
Honest limits
Broad end-to-end validation on real ATS portals is still pending.