Personal productivity assistant. A durable data layer for daily planning, tracking, and job search with a Claude-powered conversational layer on top.
Daily Driver keeps the unglamorous parts of a focused workweek out of your head and in structured files:
- Workspace — one directory holds plans, notes, tracker, config.
daily-driver init .scaffolds it. - Tracker — YAML-backed list of anything you follow up on (applications, tasks, chores, contacts). Categories are config-driven and extensible via
--extra key=value. - Focus mode — file-locked toggle that suppresses scheduled check-ins.
- Status dashboard — totals, stalled items, last week of activity as a Rich table (or JSON).
- Job-board scraper — multi-source scrape (RemoteOK, WeWorkRemotely, HN Who's Hiring, HN YC-funded jobs, Greenhouse, Ashby, Lever, Workable, Workday, LinkedIn/Indeed via JobSpy, Apple), with board auto-discovery for the ATS sources, dedup, filter, and AI-driven enrichment via
claudeor a local Ollama model. - Gather modules — typed readers for git history and macOS Calendar (icalBuddy).
- Integrations — thin subprocess bridges to
claude,pbcopy,launchctl.
Requires Python 3.11+ and macOS. See docs/install.md for the full prerequisites and Playwright notes.
pip install git+https://github.com/skoonin/daily-driver.git
daily-driver --versiondaily-driver init ~/daily-driver-workspace
cd ~/daily-driver-workspace
daily-driver doctor
daily-driver tracker add --category task --title "Write phase 7 tests"
daily-driver statusFull first-day walkthrough in docs/usage.md. Bare-minimum scaffold steps in docs/quick-start.md.
The job-search plugin scrapes a configurable set of boards into jobs.csv, dedupes against what's already there, and enriches each row (fit, notes, comp) via claude or a local Ollama model.
- Add a
plugins.job_searchblock to.dd-config.yamland turn the scraper on withscraper.enabled: true. Listing a source key enables it (disable withenabled: false):
plugins:
job_search:
persona: "Senior SRE, IC-track only"
seniority_keywords: [senior, staff, principal]
locations:
remote: true
# ISO code -> city allow-list; [] = whole country, cities = only those
countries: {US: [], CA: [Vancouver, Victoria]}
scraper:
enabled: true
sources:
greenhouse: {enabled: true, greenhouse_boards: [company-a, company-b]}
ashby: {enabled: true} # boards come from discover-boards below
lever: {enabled: true} # ditto
remoteok: {remoteok_tags: [devops, kubernetes, aws]}
hn_who_is_hiring: {}- Discover which Greenhouse / Ashby / Lever boards list your roles. This sweeps the ATS slug universe and caches the matches for every later
jobs run— the first sweep probes everything and takes tens of minutes; later sweeps are incremental: new slugs, plus boards overdue for re-probe, up todiscovery.max_reprobe_per_sweepper platform per sweep:
daily-driver jobs discover-boards- Run the search, then top up any cells a run left empty:
daily-driver jobs run # scrape + enrich -> jobs.csv
daily-driver jobs backfill # re-enrich empty cells from an earlier run
daily-driver jobs status # last-run metadata + row countsFull field reference in configuration.md; the complete command set, source list, and AI-provider choice in usage.md.
<workspace>/
.dd-config.yaml # workspace marker + structured config
context.md # your profile (seeded once, edit freely)
voice-profile.md # writing voice (ditto)
tracker.yaml # tracker entries (CLI-managed)
jobs.csv # scraper output (plugin-managed)
.daily-driver/
version # version stamp
manifest.json # SHA-256 manifest of managed .claude/ files
state/ # ephemeral: locks, logs
.claude/
commands/daily-driver/ # shipped slash commands (regenerated on drift)
agents/daily-driver/ # shipped agents (ditto)
commands/*.md # your custom commands (untouched)
agents/*.md # your custom agents (untouched)
<YYYY>/<MM>/ # daily plans + notes
Workspace discovery walks up from CWD looking for .dd-config.yaml. Override with --workspace PATH.
Full index: docs/README.md.
Users — start with quick-start.md to scaffold, then usage.md for the daily flow. Read concepts.md once for the mental model.
Developers — start with docs/dev/developer.md.
| Doc | What it covers |
|---|---|
| concepts.md | Mental model: workspace layout, surfaces, design decisions |
| quick-start.md | Minimal scaffold checklist |
| usage.md | End-to-end daily flow with worked examples |
| commands.md | Every subcommand and non-obvious flags |
| configuration.md | .dd-config.yaml schema and customization |
| ollama-setup.md | Local LLM provider for enrichment/summary |
| troubleshooting.md | Failure modes and recovery |
| dev/developer.md | Architecture, runtime flow, init contract |
| dev/extending.md | Adding subcommands and scraper sources |
| dev/releasing.md | Release workflow, semver, CHANGELOG |
See CONTRIBUTING.md for dev setup and commit conventions.
macOS only. pbcopy, icalBuddy, AppleScript, and launchd integrations assume macOS. Linux is on the roadmap.
MIT.