ApplyMindApplication ledger
Job application tracker

Every application, and exactly what was sent.

A recruiter calls about a role you applied to seven weeks ago. Which CV did they get? Was there a cover letter? Did you already interview somewhere else in the same company? ApplyMind answers all three in one screen — a browser extension captures each application as you submit it, and this dashboard is where it all lands.

Open the live demo

The demo is the real application, running on real data, with no login — a multi-user version lands once authentication does.

What it does

Built for the question you actually ask

One ledger for everything

Every application in a single filterable list — by status, site, CV version or date. No spreadsheet that goes stale by week three.

Know what you actually sent

Each application keeps the exact CV version and cover letter that went with it, so a callback six weeks later is never a guess.

An audit trail you get for free

Every status change is timestamped and annotated as you make it, building a history of each application without extra work.

Never apply twice

A unique constraint on site and job URL means the same posting cannot quietly enter the ledger a second time.

AI match scoring

Each job is scored against your profile summary at save time. Best-effort by design — a failed model call never blocks the save.

The API key never reaches the browser

All requests route through a server-side proxy that attaches credentials, so nothing sensitive ships to the client.

How it is built

A Go API on Lambda, a Next.js dashboard on Vercel

  extension ─┐
             ├─► API Gateway ──► Lambda (Go) ──► PostgreSQL
  dashboard ─┘                        │
   (Next.js)                          └────────► S3
       │
       └─ /api/backend/* proxy
          attaches the API key
          server-side, never
          in the browser

Two Lambda functions share one Go codebase: a REST API behind API Gateway, and a scheduler that EventBridge invokes daily to send follow-up reminders. Both detect whether they are running under Lambda or locally, so the same binary serves both.

Files live in S3 and are reached through presigned URLs. CVs are deduplicated by SHA-256, so re-uploading identical bytes records a reference rather than a second copy — which is what makes version history meaningful rather than noisy.

Infrastructure is defined in CDK, including the ACM certificate and Route 53 records for the API's custom domain, so the whole backend is onecdk deployfrom nothing.

Next.js 15TypeScriptTailwind v4TanStack QueryGoAWS LambdaAPI GatewayPostgreSQLS3CDKVitest
Source

Both repositories are public