A posting, recruiter message, interview invite, rejection, or follow-up enters the system.
Private tool · built during my job search
A job search is
a stateful system.
When job searching was my job, I was juggling a huge volume of applications. I built JobArchivist to keep the roles, recruiter conversations, interviews, documents, and follow-ups together. It helped me keep track of the work; it’s no longer a daily driver.
// operating posture
- ACCESS
- Private + allowlisted
- STATE
- Supabase / Postgres
- AI
- Grounded + tool-driven
- STATUS
- No longer a daily driver
These figures describe the version covered in this case study. They aren’t live counters.
16
records in this case study
Used
during my search
01 — The actual problem
The spreadsheet remembered rows. It forgot the search.
A serious job search produces more state than a spreadsheet can hold: role versions, recruiter context, tailored documents, interview logistics, outcomes, follow-ups, and lessons that should change the next application. The real problem was not tracking rows. It was preserving context and turning it into better decisions.
02 — The operating loop
Every signal should leave the system smarter than it found it.
The signal is connected to the company, role, people, documents, and application history it belongs to.
An explicit lifecycle transition updates the pipeline, calendar, next action, and durable event record.
Outcomes and documents become retrievable context for the next conversation, draft, and decision.
03 — Domain boundaries
Connected records, not another pile of notes.
A self-hosted Next.js and Supabase application organized around companies, roles, applications, contacts, documents, interviews, and append-only activity. RSS and Atom ingestion discovers opportunities; structured lifecycle state drives the pipeline and calendar; private document storage and profile data ground retrieval; and an approval-aware assistant operates through typed tools instead of editing data invisibly.
Companies
The organizational memory: roles, contacts, applications, notes, and history.
Applications
Lifecycle state, next action, deadline, referral, and the documents actually submitted.
Interviews
Schedule, format, people, preparation, logistics, and outcomes captured together.
Documents
Private files, working drafts, extracted text, secure downloads, and role-specific versions.
Discovery
Enabled RSS / Atom sources flow through parsing, normalization, deduplication, and review.
Assistant
Typed tools retrieve and propose changes; consequential writes remain visible and approval-aware.
04 — What shipped
When job searching was my job, this kept track of the work.
- ▹Application pipeline with explicit lifecycle states, next actions, deadlines, and outcome history
- ▹Structured interview scheduling and outcome capture linked to each application
- ▹Private résumé and cover-letter storage with extraction, secure downloads, drafts, and application-level version linking
- ▹Company, recruiter, contact, job, and referral records connected instead of duplicated across notes
- ▹Server-side RSS / Atom ingestion with deduplication, source controls, and a discovered-jobs inbox
- ▹RAG ingestion across profile, documents, roles, companies, events, and messages
- ▹Approval-aware AI tools for recall, drafting, updates, archival, and deletion
- ▹An authenticated deployment used as the operating record during my job search
The numbers below are snapshots from this write-up. They aren’t updated automatically as the project changes.
Constraints / Evidence
The conditions shaped the system.
- ◆Career history, documents, contacts, and interview links are private by default
- ◆Imports must preserve messy source evidence without multiplying companies, jobs, or applications
- ◆AI assistance must be grounded in durable records and require approval for consequential changes
- ◆It had to keep up with the search while I was still changing the schema and workflows
16
records in this case study
16 real application and outcome records captured for this write-up. This is a snapshot of the search, not a current pipeline count.
Used
during my search
It helped me keep track of a huge volume of applications when job searching was my job. It’s no longer a daily driver.
The through-line
A career is not a sequence of applications. It is a learning system with memory, state, feedback, and compounding context.