Hunted logo Hunted
← Portfolio Case Study

01 Full-stack + AI · Solo build

Stop guessing.
Start shipping.

Hunted is a live, full-stack job-application tracker with AI interview prep that's actually grounded in your résumé. I designed and built it solo, end to end — this page is the story of how it works, and why the decisions in it hold up.

Open the live demo → Source available on request
Hunted's pipeline dashboard — stat tiles and a three-column kanban board
PIPELINE VIEW LIVE PRODUCT

Status

LIVE

deployed & running today

Built by

Solo

design → ship, end to end

Languages

EN / AR

fully mirrored, real RTL

Job hunting is chaos, and interview prep is generic.

Most people run a job search across a spreadsheet, a dozen browser tabs, and a notes app — and the moment it actually matters, the night before an interview, the "AI prep" available to them is a canned script that's never seen their résumé or the job description in front of them. Hunted treats the search itself like the thing being tracked: a real pipeline from Applied to Offer, and interview prep that's grounded in the résumé you actually uploaded and the role you're actually applying to — not a generic template.

A full-stack product, not a demo.

A Next.js web app, a NestJS API, Postgres, and a background job layer, wired to Anthropic's Claude for interview prep that reads the actual résumé and the actual job posting before it writes a word. It has real authentication security, real asynchronous processing for anything slow, and a bilingual interface that fully mirrors itself in Arabic — and it's deployed and running right now, not sitting behind a git clone waiting to be demoed.

Kanban drag, AI prep, and the EN/AR switch — live


Four decisions worth knowing about.

01

Sessions that can't be replayed

If a refresh token is ever stolen and reused, the entire session is shut down automatically — not just quietly ignored.

Opaque, rotating refresh tokens hashed at rest. Replaying a token that's already been rotated revokes its whole token family — a theft-detection pattern most side projects skip entirely.

02

AI prep that knows when to re-think itself

Interview prep is grounded in your real résumé and the real job post — and the paid AI call only re-runs when something that actually matters has changed.

Prep is cached by a hash of the job, the company, and the active résumé. Switching which résumé is primary busts exactly the right cached sessions automatically, at zero wasted API cost on identical re-generates.

03

Two languages, one layout — properly

Arabic isn't a translated string table bolted onto an English layout — the interface itself mirrors, down to reading direction.

Full EN/AR coverage driven by logical CSS properties, so the whole layout flips rather than just the text — verified against real Arabic UI, not machine-translated placeholders.

04

Shipped, not just demoed

This isn't a project waiting for someone to run it locally — it's a deployed product with the operational basics a real business needs.

CI on every change, structured logs with per-request tracing, rate limiting, live error monitoring, and background jobs you can watch process in real time.

Let's build your next one.

Open the live demo →

Source available on request