Jean-Maurice Raboude

Cairn, a self-hosted job-application tracker

A small CRM for a job search, built with .NET 10 and React. It keeps a copy of every posting, tracks each application on one timeline, and lets AI agents log progress over MCP.

Cairn dashboard with application totals, a status funnel, due reminders and recent applications
  • .NET 10
  • ASP.NET Core
  • EF Core
  • PostgreSQL
  • React
  • TypeScript
  • TanStack
  • Tailwind CSS
  • MCP
  • Docker

Job postings disappear within weeks. When a recruiter calls back a month later, the ad is a 404 and you can't remember what the role was. I built Cairn to fix that for my own job search. It's live at cairn.jmrabou.de, and anyone can sign up.

The posting, kept

Cairn saves the full job description when you add an application. Everything that happens afterwards goes on that application's timeline: emails, calls, interviews and status changes. You can also upload the CV and cover letter you sent and link them to the application.

Saved job description on an application

A view of the whole search

Because status changes are recorded as events, the dashboard can show more than a count. It shows a funnel by status, the median time to a first response, the share of applications that were ghosted, and the reminders due soon. The board lays the same pipeline out by status, and dragging a card to another column records the status change.

Application pipeline board

Interviews in your own calendar

Each interview has prep notes before it and a debrief after it. A private feed URL puts upcoming interviews and reminders in Google Calendar, Apple Calendar or Outlook.

Calendar feed settings with a private subscription URL

AI agents as a second interface

Claude Code or any other MCP client can connect to Cairn, search applications and log progress: a new application, a status change, an interview. The user approves each agent in the browser and can disconnect it from the settings. Anything an agent writes is labelled with its name. I wrote up how it's built in Adding MCP to an ASP.NET Core API.

Timeline entry logged by Claude Code