P/06 · macOS · open source

# Jooby — native macOS app for your job search pipeline.

A native macOS app for your job search pipeline.

Built on career-ops. Open source. Contributions welcome.

[View on GitHub](https://github.com/felipemillan/career-ops-desktop)

fig. — The app — applications by stage

Jooby started as a dashboard on top of the career-ops CLI toolset. It's grown into a native macOS app with a Kanban, AI evaluation triggers, embedded terminal, and analytics. Still in active development. If it solves a problem you have too, fork it, run it, or help build it.

Why I built it

## I'm job hunting. Using the time deliberately.

I started with career-ops as a user — it handled the hard parts of the pipeline well. Then I noticed the gap: no UI, nothing to look at, everything in Markdown and terminal output. The obvious next step was to build a dashboard. So I did.

But the dashboard was also a test. I'm using this stretch — the job search, the free time between things — to push what I can build with AI-assisted development. How far can it go on something with real moving parts? The web dashboard was one answer. Moving it to a native Tauri app with a Rust backend was the next question. A proper PTY for the terminal. Process spawning with a real security model. Atomic writes with build-time enforcement. Each new layer was a new thing to learn.

The plan is to keep going. More features, better polish, more surface area for the things career-ops can do. And since it's open source, if you're also using career-ops and want to help build the UI layer — or just have a feature you need — the door is open.

fig. — Pipeline overview

How it works

## Four steps.

### Point Jooby at the companion repo

Set CAREER_OPS_PATH or pick the folder in-app. The read-only views, analytics, and terminal work immediately. The action buttons need the companion scripts present.

### Browse the pipeline

Applications view, Kanban, scan history, and reports — all rendered from your existing Markdown and YAML files.

### Trigger actions

Scan for new roles, run AI evaluations against your CV, generate PDFs — from the action bar or from the terminal.

### Track

Drag applications through stages. Analytics update automatically.

What's in it

## Five core features.

### Pipeline views

Read-only views of your applications, pipeline status, scan history, and generated reports — parsed in TypeScript, rendered as tables and Markdown. Applications Kanban with drag-and-drop status changes.

### Action bar

One-click triggers for companion scripts: scan, merge, dedup, pattern analysis, follow-up cadence, PDF/LaTeX generation. Headless AI evaluation through your local claude CLI.

### Analytics

KPIs, pipeline funnel, score distribution, weekly activity, status timeline. Built in pure CSS and SVG — no chart library, nothing phoning home.

### Embedded terminal

Real PTY running your login shell (xterm.js). Interactive claude and /career-ops commands work exactly as they do in Terminal.app.

### Privacy + security

No inbound network surface. Process spawning uses argv arrays — no shell strings. Inputs validated and path-contained. Telemetry optional, off by default, self-hostable.

Tech stack

## For the curious

### Frontend

React 19, TypeScript, Vite 7, Tailwind v4, shadcn/ui, TanStack Table, @dnd-kit

### Backend + app

Tauri v2, Rust, process spawning, input validation, atomic writes

### Terminal

xterm.js, portable-pty, real PTY

### Data

Markdown + YAML on disk, no database, no telemetry by default, PostHog optional

### AI evaluation, scanning, PDF

companion career-ops repo, Node scripts, Claude CLI

Honest limitations

## What's not here yet.

- Requires setup — Node, Rust, Tauri system dependencies, and the companion career-ops repo. No installer yet — that's on the list.
- macOS only in practice — Tauri is cross-platform but only macOS has been tested and exercised.
- Action buttons need the companion repo — Read-only views, analytics, and the embedded terminal work standalone. The action bar doesn't.
- AI evaluation requires claude CLI on your PATH — That means a Claude Code subscription. No bundled model.
- Active development, not finished — Works well for what it does today. There are rough edges and features missing. That's the point — it's growing.

FAQ

## Questions people ask before cloning it

## Come build it with me.

Jooby is open source and actively being developed. If you're using career-ops and want a UI layer, this is it. If there's a feature you need, open an issue or a PR — the CONTRIBUTING guide is straightforward. If you just want to follow along, a ⭐ on GitHub helps more than it sounds.

github.com/felipemillan/career-ops-desktop

## faq

**Do I need to be a developer to use Jooby?**

Jooby needs you to be comfortable running a few terminal commands during setup. After that, you mostly work from the web dashboard and your browser. You do not need to write or read code to use it day to day.

**What does Jooby cost?**

Jooby is free and open source. You bring your own AI access — Claude Code or a Gemini API key — and, optionally, a free Firecrawl key for automated scanning. There is no subscription and no hosted service to pay for.

**Does Jooby apply to jobs for me?**

Jooby does not auto-apply. It evaluates fit, drafts tailored CVs and cover letters, and organizes your pipeline. Every submission is manual — you review each draft and send it yourself. The tool never hits submit on your behalf.

**Where does my data go?**

Your data stays on your machine. Jooby has no hosting and collects nothing. The only data that leaves your computer is what you send to the AI provider you choose, exactly like using their app directly.

**Is Jooby its own AI model?**

No. Jooby is not an AI model. The reasoning runs on existing AI CLIs — Claude Code or Gemini. The evaluation logic comes from the open-source career-ops project by santifer, which I forked and extended.

**Can I use Jooby for any role or industry?**

Yes. During setup, you teach Jooby your background, your stories, and the roles you are targeting, and it adapts its scoring and drafting to them. It is not tied to any single industry or job type.

## stack

- React 19
- TypeScript
- Vite 7
- Tailwind v4
- shadcn/ui
- TanStack Table
- @dnd-kit
- Tauri v2
- Rust
- process spawning
- input validation
- atomic writes
- xterm.js
- portable-pty
- real PTY
- Markdown + YAML on disk
- no database
- no telemetry by default
- PostHog optional
- companion career-ops repo
- Node scripts
- Claude CLI
- open source

Want to talk it through? Email [hello@fmillan.com](mailto:hello@fmillan.com) or see the [contact page](https://fmillan.com/contact/).

[previous project — P/05 Coruro](https://fmillan.com/projects/coruro/) [next project — P/07 accesy](https://fmillan.com/projects/accesy/)

[← back to the workbench](https://fmillan.com/projects/) [open in the 3D site →](https://fmillan.com/#p-jooby)
