JobHakken — a Local-First Job Search Application

Overview

jobhakken.com · proprietary, closed source

A local-first desktop application that centralises job listings from LinkedIn, Indeed, Dice and others, scores each posting against your résumé, and helps you apply faster — running entirely on your own machine.


The idea

Job searching produces a large volume of low-signal listings, and the tools that help you filter them generally want your résumé, your search history, and an account on their servers.

JobHakken keeps all of it local. Listings are aggregated and scored on the user's own machine, and the AI features run on a bring-your-own-key basis — you supply an OpenRouter or OpenAI-compatible key, and requests go from your machine to that provider directly. Nothing passes through a server of ours.

Architecture

An Nx monorepo spanning several applications:

  • Electron desktop app — the primary product, running standalone with no Docker or backend required
  • Next.js web application
  • Supabase backend — migrations and edge functions, retained from the earlier hosted architecture
  • Shared libraries for code common to the applications

Two components were split into their own repositories with full history: a Chrome extension, and the marketing site — a static Next.js export deployed to Cloudflare Pages via GitHub Actions.

The project is mid-consolidation, collapsing a hosted architecture into a single standalone application with an extension alongside it.

Why it's here

This is not research, and it isn't open source. It's on this site because it is the thing I build when I want to ship a whole product rather than a component: an application people install, on a domain that has to stay up, with a real migration in progress from one architecture to another.

The local-first constraint is the same instinct as Daily Dial at a much larger scale — the interesting engineering is in what you can accomplish without a server holding the user's data.