Careerbot

A career assistant designed around what agents and interfaces each do best.

Careerbot dashboard showing an application pipeline and a detailed role panel

Overview.

Job hunting mixes two very different kinds of work. Researching companies, reading career pages, evaluating fit, and tailoring a resume are open-ended tasks. Reviewing a shortlist, comparing roles, and recording a decision are structured tasks. Careerbot gives each kind of work the right surface.

I designed and built the product end to end. Agent skills handle the research-heavy work. A Next.js dashboard handles the moments where scanning and clicking are faster. Both read and write the same local Markdown files, so there is one source of truth and no sync problem between the two experiences.

My role
Product strategy, agent workflows, UX/UI, and full-stack implementation
Team
Solo designer and builder
Status
Open-source product, actively evolving

The product decision.

Let the agent handle intent-driven work. Add structured UI only where structure genuinely helps.

The easy pattern would have been to put a chatbox in a dashboard and make every task conversational. That would slow down routine decisions and hide the product's strongest capability behind prompting. I designed Careerbot from the interaction boundary outward instead.

Agent skills

Research companies, scan job sources, evaluate fit, add a single role, and prepare a source-grounded tailored resume.

Focused dashboard

Scan new roles, inspect the evidence, edit the search profile, download resumes, and record Applied or Skipped.

Product tour.

A decision workspace, not another job board

The main view keeps the application pipeline and the evidence for one role in the same frame. People can move from scanning to judgment without losing their place or opening a stack of tabs.

Careerbot application pipeline and role detail side by side
Careerbot application list with status controls
A compact pipeline makes status, freshness, location, and compensation scannable before a role is opened.
Careerbot role detail with quick facts and the full job description
The detail sheet keeps source material, notes, and the final status decision together.

The workflow stays useful on a phone

Mobile keeps the same decision flow in a tighter frame. The role detail rises over the list, while the search profile and skill library remain available when the work moves away from a desk.

Animated Careerbot mobile tour sliding between applications, role detail, search profile, and AI skills

Animated mobile tour

Four core screens move through one continuous workflow.

The animation mirrors the sideways browsing pattern below. Reduced-motion settings automatically replace it with a still frame.

Swipe through the mobile screens

Drag sideways

Careerbot mobile application pipeline with three new roles
Scan the shortlist
Careerbot mobile role detail sliding over the application pipeline
Inspect one role
Careerbot mobile Search Profile with role preferences
Tune the search
Careerbot mobile AI Skills list
See every skill

Search rules stay explicit

The Search Profile turns job-search preferences into inspectable product rules. Titles, compensation, location, company, work style, culture, and voice each have their own surface, while the connection state makes it clear which personal context the agent can use.

Careerbot Search Profile with role filters and vault connection status

The agent interface is visible too

AI Skills documents the open-ended capabilities that sit beside the dashboard. Each skill explains its job and writes to the same Markdown records the interface renders, making the split between agent work and structured review concrete.

Careerbot AI Skills page listing the available agent workflows

One source of truth.

The agent and dashboard are two interfaces over the same local data model. Status lives in the folder structure. Decisions keep their dates. Search preferences have a typed document. The product stays inspectable and portable because the source of truth is readable without the app.

Agent

Reads context and writes researched results

Local Markdown

Applications, companies, preferences, and status

Dashboard

Reads the same files and writes decisions back

Memory that compounds

Careerbot reads durable personal context from Icca, my implementation of Andrej Karpathy's LLM Wiki pattern. Instead of asking the model to rediscover me from a pile of documents for every role, I compile evidence into a maintained memory layer that becomes more useful as new sources arrive.

Raw evidence

Resumes, project notes, and explicit corrections are captured as immutable sources. The model can cite them, but never rewrite them.

Compiled wiki

The LLM updates interlinked Markdown pages, reconciles new evidence with existing claims, and keeps an index and append-only history.

Governed access

A schema decides which facts can update automatically and which interpretations or preferences require my review. Careerbot reads live pages but cannot write back.

At this scale, index-first reading, cross-links, and linting are enough. There is no RAG pipeline or embedding database. Read Karpathy's original LLM Wiki idea.

No sync layer
One data model means the agent and dashboard cannot drift into separate versions of the job search.
No hidden database
The records stay readable, editable, and portable outside the interface.
No automatic submission
Careerbot prepares and tracks the work. The person stays in control of the final application.

What the system optimizes for.

Breadth before repetition

Search spans employer pages and public sources, then filters early so deeper judgment is spent on plausible roles.

Private by default

The resume, preferences, identity details, and application history stay local and are excluded from the public repository.

Diagnosable automation

The pipeline records where results came from and why candidates were filtered, so a small result set can be explained and improved.

What I learned

Agent-first design is mostly boundary design. The important question was never how to make every task feel intelligent. It was where ambiguity helps, where structure helps, and how both surfaces can share state without making the system harder to understand.

Careerbot turned that principle into a working product: the agent gets freedom where judgment is needed, the interface gets structure where repetition is costly, and the user keeps control at the moment a real-world commitment is made.

Contact 1
Contact 2
Contact 6
Contact 7

Let's make something users will love!

If you're looking for a product designer who can bridge the gap between design and code, I'm here to help!