Skip to main content

Building now

OpenApplier

AI that applies to jobs for you. A Rust + Next.js platform with a Chrome extension that finds roles, tailors a resume per posting, and submits applications under your control.

openapplier.com →← Back to home

The problem

Applying to jobs is the only software workflow we still do by hand. You read a posting, edit your resume, write a cover letter, paste your work history into a Workday form, click Submit, repeat. Most of that is mechanical — formatting, copy-paste, ATS-specific field mapping — and the parts that actually need judgment (which postings are worth applying to, how to position yourself for each one) are the parts the workflow leaves least time for.

OpenApplier inverts it. The judgment runs upstream — a relevance-scoring pipeline ranks postings before they ever hit your queue. The mechanical work runs downstream in an extension that fills the form on the employer’s site while you watch. You stay in the loop on submit, but you don’t type your home address into a Workday form again.

How it works

Four pieces. A Rust API (Axum) handles auth, billing, profiles, tailoring queues, webhooks, and metrics. A Next.js frontend owns the review queue, onboarding, and settings. A Chrome MV3 extension detects the ATS on whatever page you’re on, syncs your profile, fills the form, and shows you the submission for approval. A Python tailoring sidecar generates resume and cover-letter variants per posting; LaTeX is rendered via Tectonic so the output matches a real document, not an HTML-to-PDF compromise.

Postgres and Redis underneath — tenant data, migrations, queue state, rate limits, pub/sub. RLS is enforced through a scoped transaction so PostgreSQL sets the tenant on every request.

Technical decisions

Rust for the API because the work is concurrent, fault-tolerant pipelines — circuit breakers, exponential backoff, an 18-state lifecycle machine for applications, five automated recovery loops. Rust makes the lifecycle representable and the error paths explicit; the type system catches the transitions we’d otherwise discover in production.

Chrome extension for the submission step instead of a server-side headless browser because ATS sites are user-agent-aware and bot-aware, and because the user wants to be the one clicking Submit. Server-side automation here would be an antipattern — both technically (detection) and ethically (consent).

LaTeX via Tectonic instead of HTML-to-PDF because recruiters open PDFs in Preview, not Chrome, and the formatting needs to render identically across machines. Tectonic is the only Rust-shellable LaTeX engine with bundled fonts.

Status

Private beta. 500+ users. Stripe billing live. The next surface is broader ATS coverage and a shared application-cache layer so users co-discover postings without leaking applicant-side data.