Job Dashboard
A pipeline that reads labeled Gmail, classifies each message with Claude into a validated schema, and stores application history as events. An MCP server and a macOS widget sit on top, and it runs 24/7 on a home server.
- Python
- Claude API
- SQLite
- MCP
- SwiftUI
The problem
A job search means a flood of email from a dozen different applicant tracking systems. Keeping a spreadsheet current by hand is tedious, and it’s always out of date. I wanted something that watched my inbox and kept the pipeline accurate for me.
How it works
- Gmail in. The pipeline reads the messages I’ve labeled in Gmail.
- Claude in the loop. Each message goes to Claude with a structured output schema. What comes back is validated against that schema before anything is stored, so the rest of the system can trust it.
- History as events. Every change to an application is stored in SQLite as an event. The current state of the pipeline is built from that history.
- An MCP server. I can add or move applications straight from Claude.
- A macOS widget. A native SwiftUI widget shows the whole pipeline on my desktop.
It runs 24/7 on a home server.
Stack
Python · Claude API (structured output) · SQLite · MCP · SwiftUI.
Why I like it
I use it every day. It’s also the project I point to when someone asks what I can build end to end, because it covers data modeling, an LLM integration, a server that runs on its own, and a native client in one system.