Career operating system

Your career, finally written down.

You do two good years of work and remember three things about it. JobOS keeps the record as it happens — then turns it into a resume, tailors it to the role, and tracks where every application went.

The demo is a real account with a journal already in it — no sign-up, nothing to delete afterwards.

Why this exists

I built this because I kept losing my own work.

01

I could not remember my own work

Two good years at a company, and when I sat down to write a resume I could recall about three things. Not because nothing happened — because nobody writes down the ordinary week, and the ordinary weeks are where most of the work lives.

02

So the resume got vaguer every time

Each rewrite started from the last resume rather than from reality. Details rounded off. "Improved performance" replaced the night I found the query doing 1,400 lookups. The document drifted further from what I had actually done.

03

And I talked myself out of applying

I once skipped a role I was qualified for because I thought I was short one bullet point. I had shipped that thing twice — just not under that name. I could not see it because I had no record to check against, only memory.

04

The fix is not a better template

It is keeping the record in the first place, and then generating everything else from it. Write down one true thing a day. When you need a resume, it is already written. That is the whole idea, and everything in JobOS is downstream of it.

What goes in

Not just what you shipped.

The entries that make you better are the ones people forget fastest — and half of them happen nowhere near an employer. So a company is optional on every kind of entry.

Work

Something you built or shipped.

What did you actually build today, and for whom?

Learning

Something you understand now that you did not before.

What do you understand now that you did not this morning?

Challenge

A problem you are in the middle of.

What are you stuck on, and what have you already ruled out?

Trick

A technique worth keeping.

What shortcut or technique do you want to still know in a year?

Setback

It went badly. Write it down before you rationalise it.

What went wrong, and what would you watch for next time?

Win

It went well. Resumes are made of these.

What went well, and how would you prove it to someone?

How it works

Four pillars, each feeding the next.

  1. 01

    Log it while you remember it

    Phase 1

    Six kinds of entry — what you shipped, what you learned, the wall you hit, the trick worth keeping, what went badly, what went well. A company is optional on every one, because plenty of what makes you better happens on a Sunday.

  2. 02

    The record becomes the resume

    Phase 2

    A structured master resume you edit in the browser and export as an ATS-friendly PDF — built from entries you actually wrote, not from a blank page at 11pm.

  3. 03

    Tailored to the role, still true

    Phase 3

    Paste a job description and the model reshapes the resume to match it, drawing only on real entries. Where the posting wants something your record cannot support, it tells you instead of inventing it.

  4. 04

    The search runs itself

    Phase 4–5

    Matching roles arrive from public job APIs, ranked against your actual history, each with a tailored resume ready for review — and every application tracked through to its outcome.

What it is built with

The stack, and why each piece is there.

Next.jsApp Router, React 19

Server components mean the database query and the markup live in the same file. Less plumbing to get wrong.

Neon PostgresDatabase

Serverless Postgres that scales to zero. Branching means a migration can be tested on real-shaped data before it touches production.

Neon AuthAccounts and sessions

Better Auth, hosted by Neon, writing into the same database. Identity is a table I can join against, so ownership is a foreign key rather than an API call.

Drizzle ORMSchema and queries

The schema is TypeScript, the migrations are readable SQL, and a wrong column name is a compile error rather than a 2am page.

Tailwind CSSStyling

Layered over my own design system rather than a component library, so the whole product shares one palette and one type scale.

Gemini + GroqTailoring

Gemini's free tier does the work; Groq catches the rate limits. Both sit behind one interface, so swapping either is a config change.

React PDFResume export

The ATS template is JSX, so the on-screen preview and the exported file cannot drift apart.

VercelHosting

Push to deploy, and the same edge runtime the Neon driver is built for.

Where the build is

Built in phases, in the open.

  1. Phase 0 · Foundation & skeleton

    Shipped

    The shell: design language, navigation, placeholder screens, database schema and the seams that later phases plug into.

  2. Phase 1 · Work Journal

    In progress

    Log daily work — and everything around it. Six kinds of entry, a company optional on all of them, because plenty of what makes you better happens nowhere near an employer.

  3. Phase 2 · Resume Builder

    A structured master resume you edit in the browser and export as an ATS-friendly PDF.

  4. Phase 3 · JD-tailored resume

    Paste a job description; the model rewrites your resume to match it — using only real facts drawn from your journal.

  5. Phase 4 · Job discovery & tracker

    Pull matching roles from legitimate public job APIs, rank them, and track every application through a pipeline.

  6. Phase 5 · Job agent

    A scheduled agent that finds the day's best matches, tailors a resume for each, and queues them for your review.

  7. Phase 6 · Stretch

    Experimental autonomous apply, and the multi-tenant layer that turns JobOS into a product other people can use.

Write down one true thing today.

In six months it is a resume. In two years it is the answer to every interview question you would otherwise have to invent on the spot.

Explore the demo account