Skip to main content

Laburator

CLI job-search assistant powered by LangGraph. Fetches job listings via API, processes them through an LLM, and generates tailored CVs, cover letters, and interview questions for each position.

Installation

# Clone the repo
git clone <repo-url>
cd laburator

# Install with pip (editable, recommended)
pip install -e .

# Or with uv
uv pip install -e .

# Verify it works
laburator --help

Setup

Copy .env.example to .env and fill in your API keys:

cp .env.example .env

API Keys

Laburator requires two API keys. Both go in the .env file.

OpenCode Zen (LLM)

Used to generate CVs, cover letters, analysis, etc.

  1. Go to https://opencode.ai/zen and sign up.
  2. Once logged in, create an API key from the dashboard.
  3. Copy it into .env as MODEL_API_KEY.

The endpoint and model are preconfigured in .env.example:

MODEL_API_KEY=sk-...
MODEL_API_ENDPOINT=https://opencode.ai/zen/v1
MODEL_NAME=deepseek-v4-flash-free

jsearch API (job search)

Used to fetch live job listings.

  1. Go to https://openwebninja.com and sign up.
  2. Subscribe to the jsearch API plan (free tier: 200 requests/month).
  3. Copy your API key into .env as JOB_SEARCH_API_KEY:
JOB_SEARCH_API_KEY=ak_...

CV

Create your own cv.md at the project root with your personal experience, skills, and education. This is used by the LLM to tailor CVs, cover letters, and interview questions for each job.

A sample is provided as reference:

cp cv.md.example cv.md   # then edit it with your own data

The CV supports any markdown content — sections like Summary, Experience, Education, Skills, and Languages are all parsed and passed as context to every skill.

LLM Wiki (optional)

If you have reference knowledge — technical notes, company background, industry research — you can place .md files in ~/Proyectos/llmwiki/wiki/ (or the path configured as LLMWIKI_DIR in .env). These files are loaded and injected into every skill prompt as supplementary context, giving the LLM more relevant background to work with.

Skills (custom prompts)

Skills are markdown files containing the system prompt for each LLM call. Built-in skills ship with the package:

File Generates
jobsynthesis.md Job analysis
createcv.md Tailored CV
presentationletter.md Cover letter
interviewquestions.md Interview Q&A

To customise a skill, create ~/.config/laburator/skills/<name>.md with the same filename — it will take precedence over the built-in. For example:

mkdir -p ~/.config/laburator/skills
# Override the CV prompt
cp src/laburator/skills/createcv.md ~/.config/laburator/skills/
# Now edit ~/.config/laburator/skills/createcv.md to your liking

Every skill call receives the job listing (JSON), your CV, and the wiki knowledge base as context automatically.

Output

Results are saved under ~/.local/share/laburator/output/, organized by date:

~/.local/share/laburator/output/
├── cache/                          # cached job listings (JSON)
│   └── python-developer/
│       └── jobs.json
└── 2026-06-19/                     # one folder per run date
    ├── ait-python-developer/       # one folder per job
    │   ├── job.md                  #   job analysis (skills, summary)
    │   ├── cv.md                   #   tailored CV
    │   ├── presentation.md         #   cover letter
    │   └── interview.md            #   interview questions
    ├── randstad-usa-senior-full-stack-python-developer/
    │   └── ...
    └── ...

Files appear in real time as each skill completes — you don't have to wait for the full pipeline to finish.

Usage

# Search for jobs (fetch-only, no LLM calls)
laburator search "python developer" --pages 1 --remote

# Run the full pipeline: fetch + LLM analysis + output files
laburator synth "python developer" --pages 1 --remote

# List cached searches
laburator list

# Run a single skill on a cached job
laburator run <job-id> --skill createcv

# Show configuration
laburator config

Verification

Run laburator config to confirm both keys are loaded (they'll be partially masked in the output).

Release files for laburator 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for laburator 0.1.0
File Size Uploaded
laburator-0.1.0.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for laburator 0.1.0
File Interpreter ABI Platform
laburator-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.6 kB

Release files / laburator-0.1.0.tar.gz

Download URL laburator-0.1.0.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
19d11053e63f7dc2bdc744118be6e9c4dd83b0f5641d8204a540c636761f533d
BLAKE2b-256 checksum
How to use checksums
299f04bb07d3380ff6c4b647f728411ef35d41f77bc5b6c23e6bd28870ff5279
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.5

Release files / laburator-0.1.0-py3-none-any.whl

Download URL laburator-0.1.0-py3-none-any.whl
Size 22.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a78a1fc6e6b187d6cff494fb95dac2914c5f31eb2ac63a58443e6dce2e65007b
BLAKE2b-256 checksum
How to use checksums
d57115cdcabf43fb7ce4dd0c5f909873a16ede333265250e4260ffe72cce8d3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page