OpenOpps

OpenOpps docs / Start here

Start Here

OpenOpps concepts, first commands, public data surfaces, and docs map.

CLI-onlylocal ledgerindex

OpenOpps v0.1 is a CLI-only Python app for discovering firm hiring boards from aggregate sources, detecting public provider routes, syncing normalized jobs, caching repeated HTTP JSON requests, and exporting an auditable local opportunity ledger. It intentionally ships without a hosted service, browser app, prompt UI, or TUI.

Browse the committed snapshot

Use the

Jobs

surface for open-role search and posting previews, or

Explorer

for source, provider, route, and data-quality analysis.

DiscoverRead source catalogs and persist durable board records.
ResolvePromote provider hints into executable public job routes.
ExportWrite normalized boards and jobs as JSONL, CSV, Parquet, or SQLite.

Domain

  • sources are aggregate discovery catalogs such as a16z, accel, lsvp, sequoia, bvp, greylock, kleinerperkins, southparkcommons, signalfire, and yc.
  • boards are firm/company hiring boards discovered from sources.
  • jobs are normalized postings fetched from boards.
  • providers are adapters that detect or fetch provider-specific boards, such as Ashby, Greenhouse, Lever, Workday, Workable, Teamtailor, BambooHR, Rippling, and WP Job Manager.
  • cache, plugins, and examples cover operational cache inspection, installed Python plugin discovery, and deterministic demo data.

Install and Run

Use uv run while working inside the repository checkout:

uv sync
just --list
uv run openopps --help
uv run openopps status

If you want openopps available directly from this editable checkout, install the repo as a uv tool from the repository root:

uv tool install -e .
openopps --help
openopps status

uv tool install -e . installs the console entry point from the current checkout. Runtime settings such as OPENOPPS_DB_URL still control where local SQLite state is read and written.

Contributor Command Map

The root Justfile is the quickest way to discover local validation without hiding the underlying toolchain:

just --list
just quick
just ci
just openspec-validate-all
just docs-check
just cli-help

just ci mirrors the GitHub Actions validation lanes: Python tests, coverage, OpenSpec validation, generated docs data, docs type-check/build/lint, Kaggle metadata generation, and whitespace checks. Use the raw uv, pnpm, and OpenSpec commands from the reference pages when a CI failure needs exact reproduction.

Safe Local Smoke Path

These commands seed deterministic demo records and do not hit upstream source or provider services:

uv run openopps examples seed --seed 42 --boards 4 --jobs-per-board 2 --json
uv run openopps jobs list --source example --json
uv run openopps providers coverage --json

Live Quickstart

The commands below read public upstream catalogs and provider endpoints. They write local SQLite state unless a command is explicitly marked no-DB or dry-run.

uv run openopps sources list
uv run openopps admin sources test a16z
uv run openopps sources sync a16z --metrics-json --refresh-cache
uv run openopps sources sync accel --metrics-json
uv run openopps sources sync greylock --metrics-json
uv run openopps boards list --source a16z --limit 10
uv run openopps admin boards enrich --source a16z --json
uv run openopps providers health --source a16z --provider any --limit 25 --json
uv run openopps admin providers probe-routes --source a16z --provider any --limit 25 --json
uv run openopps jobs sync --provider ashbyhq --metrics-json --refresh-cache
uv run openopps cache status --json
uv run openopps plugins list --json

Unscoped list, export, and sync commands use the full known superset unless narrowed by --source, --board, or --provider. Provider filters accept any and all as aliases for removing the provider filter, which keeps reusable scripts explicit without narrowing to one provider.

Overlapping source coverage uses the persisted board keys shown by boards list, and provider requests are deduped before route probing or job sync. The relevant metrics include duplicateRoutesSkipped.

Provider Levels

LevelMeaning
detectOpenOpps can preserve provider metadata and route hints.
jobsOpenOpps can fetch public jobs for the provider.
unsupportedThe provider is known only as raw metadata.

Ashby, Greenhouse, Lever, public Workday CXS, Workable, Teamtailor, BambooHR, Rippling, and explicit WP Job Manager boards are job-capable in v0.1 through public no-auth routes. Manatal and Gem hints remain detect-only until stable public fetching is added. See Providers for the generated provider registry and route diagnostics.

Ashby postings marked isListed: false are direct-link-only and are excluded from normal job sync output.

Documentation Map

PageUse it for
CLICommand groups, common flags, JSON output, filters, and exports.
ConfigurationOPENOPPS_ environment variables, defaults, .env loading, and runtime policy.
Data ModelSources, boards, providers, jobs, exports, static indices, counts, and telemetry event-lake guidance.
ProvidersSource catalogs, provider support levels, route diagnostics, and limitations.
OperationsStorage, cache, exports, validation, telemetry operations, Kaggle, and troubleshooting workflows.
ContributingLocal setup, validation, docs generation, source-batch rules, and review expectations.
JobsFilter and preview open roles from the static search index.
ExplorerAnalyze source/provider coverage, route health, freshness, and data quality.

Public Docs Routes

The canonical jobs workbench is /, the canonical analytics explorer is /explorer, and thin job detail pages live at /jobs/:id for direct posting previews. Legacy /jobs redirects to /, and legacy /docs/explorer redirects to /explorer; do not add broad /jobs/:path redirects because detail pages must remain addressable.

Route Probing Summary

Provider hints from source catalogs may not include the token or URL needed for job fetching. admin providers probe-routes tries candidate tokens from upstream slugs, remote ids, names, domains, and websites, then reports both matched routes and unknown boards with the candidate tokens it tried. Its JSON output includes per-provider selected/matched counts, unresolved reason counts, and duplicate route skips.

uv run openopps admin providers probe-routes --source a16z --provider all --limit 25 --json

Probing is read-only unless --apply is passed. Use CLI for command flags and Operations for local-state runbooks.

On this page