OpenOpps docs / Reference
Providers
Source catalogs, provider support levels, route probing, and health checks.
OpenOpps v0.1 separates aggregate source adapters from job-capable provider adapters. Source adapters discover company boards; provider adapters detect or fetch postings from public board providers through the CLI and local SQLite state.
Python plugins can contribute additional source adapters and job providers through the openopps.plugins entry point group. Plugin capabilities appear in admin providers list and registry surfaces when loaded successfully, and load failures, disabled entries, allow-list filters, and conflicts are visible in plugins list. Installed plugins are discovered by default but only executed when their entry-point names are listed in OPENOPPS_PLUGIN_ALLOWED, unless OPENOPPS_PLUGIN_AUTOLOAD=true is set.
Use examples/plugins/minimal-openopps-plugin/ as the starting template for a packaged plugin with a pyproject.toml entry point.
Source Adapter Inventory
Generated adapter inventory
Source adapters
Source adapters discover company boards and preserve provider hints. They are detection surfaces; job fetching happens later through job-capable provider routes.
| Label | ID | Support | Route role | Public behavior |
|---|---|---|---|---|
| Ashby Source | ashby | detect | catalog | Aggregate Ashby source adapter that exposes a public Ashby job board as one board route. |
| CNCF Landscape | cncf_landscape | detect | catalog | CNCF landscape source adapter that discovers cloud-native projects and vendors from public GitHub data. |
| Consider | consider | detect | catalog | Aggregate Consider source adapter that discovers company boards and provider hints. |
| Consider/a16z | consider_a16z | detect | catalog | Aggregate a16z source adapter that discovers boards and provider hints. |
| Getro | getro | detect | catalog | Aggregate Getro source adapter that discovers company boards. |
| Public Index CSV | public_index_csv | detect | catalog | CSV source adapter for public-company index membership seeds. |
| Public Page | public_page | detect | catalog | Best-effort source adapter for public pages without a dedicated structured adapter. |
| Ranking CSV | ranking_csv | detect | catalog | CSV ranking source adapter for employer and company lists. |
| SEC Company Tickers | sec_company_tickers | detect | catalog | Official SEC public-company ticker source that discovers listed companies as detect-only boards. |
| South Park Commons | southparkcommons | detect | catalog | Aggregate South Park Commons source adapter that discovers company boards and provider hints. |
| Venture Capital Careers | venturecapitalcareers | detect | catalog | Aggregate Venture Capital Careers adapter that discovers public firm profiles. |
| VentureLoop | ventureloop | detect | catalog | Metadata-only VentureLoop source adapter. |
| Workable Source | workable_source | detect | catalog | Aggregate Workable source adapter that exposes a public Workable job board as one board route. |
| Y Combinator | ycombinator | detect | catalog | Aggregate YC source adapter that discovers company boards from Algolia. |
Source Catalog Sample
Packaged source catalog
First 12 source records
The generated table below is a sample of the packaged catalog. Use uv run openopps sources list --json for the full local, machine-readable inventory.
| Source key | Adapter | Type | Access | Catalog URL |
|---|---|---|---|---|
01a | consider | source | public | https://jobs.01a.com/companies |
1011vc | getro | source | public | https://jobs.1011vc.com/companies |
1011vcportfolio | public_page | venture_firm | public_page_html | https://www.1011vc.com/portfolio |
13bookscapital | getro | source | public | https://careers.13bookscapital.com/companies |
1440foods | consider | source | public | https://consider.com/boards/co/1440-foods |
1517fund | consider | source | public | https://consider.com/boards/vc/1517-fund/companies |
1835i | consider | source | public | https://consider.com/boards/vc/1835i/companies |
1871 | workable_source | job_board | public_json_api | https://apply.workable.com/1871/ |
1inchnetwork | consider | source | public | https://consider.com/boards/co/1inch-network |
1kx | public_page | venture_firm | public_page_html | https://1kx.network/portfolio |
1x | consider | source | public | https://consider.com/boards/co/1x |
2048vc | public_page | venture_firm | public_page_html | https://www.2048.vc/companies |
Non-VC Source Families
OpenOpps packages a small set of low-friction non-VC source families as source adapters, not job providers. These sources add company candidates and provenance metadata; they only become job-yielding after route detection, route probing, and provider job syncs find public job-capable routes.
| Source family | Packaged keys | Notes |
|---|---|---|
| Official public-company index | sec-company-tickers | Included listed-company backbone; SEC fair-access controls can reject generic scheduled sync environments. |
| Public index CSV | sp500, nasdaq100 | Included seed data for index membership; nasdaq100 remains manual until a reviewed CSV is configured. |
| Employer ranking CSV | fortune500 | Included ranking seed data; supports embedded user-supplied CSV rows for reviewed local refreshes. |
| Ecosystem landscape | cncf-landscape | Reads CNCF landscape.yml public fields and intentionally excludes logos and Crunchbase-derived fields. |
Each packaged source includes taxonomy metadata such as providerType, coverageMode, accessType, licenseStatus, refreshCadence, and sourceAttribution in the source raw_metadata payload.
Support Levels
| Level | Meaning |
|---|---|
detect | OpenOpps can preserve provider metadata and route hints but does not reliably fetch jobs. |
jobs | OpenOpps can fetch public postings for the provider. |
unsupported | The provider is known only as raw upstream metadata. |
Job-Capable Providers
Generated provider registry
Job-capable providers
| Label | ID | Support | Route role | Public behavior |
|---|---|---|---|---|
| Ashby | ashbyhq | jobs | routes | Public Ashby job posting API. |
| BambooHR | bamboohr | jobs | routes | Public BambooHR careers board JSON endpoints. |
| Greenhouse | greenhouse | jobs | routes | Public Greenhouse job board API. |
| Lever | lever | jobs | routes | Public Lever postings JSON API. |
| Rippling | rippling | jobs | routes | Public Rippling ATS board JSON endpoints. |
| Teamtailor | teamtailor | jobs | routes | Public Teamtailor jobs RSS feed. |
| Workable | workable | jobs | routes | Public Workable hosted-board JSON endpoint. |
| Workday | workday | jobs | routes | Public Workday CXS careers-site endpoints. |
| WP Job Manager | wpjobmanager | jobs | routes | Public WordPress WP Job Manager REST or AJAX endpoint. |
Detect-Only Providers
manatal and gem are preserved as board metadata until stable public fetching is added. Health reports group these under notCovered so they are visible without being treated as failed job syncs.
Public No-Auth Board Providers
Workable, Teamtailor, BambooHR, Rippling, and WP Job Manager are job-capable in v0.1 only through public unauthenticated board routes. Workable fetches list and per-job detail endpoints separately so raw_listing and raw_detail stay distinct for audit replay. BambooHR uses public careers endpoints such as /careers/list and /careers/{job_id}/detail; OpenOpps does not call authenticated BambooHR ATS APIs. WP Job Manager requires an explicit /wp-json/wp/v2/job-listings or /jm-ajax/get_listings/ endpoint and is not inferred from arbitrary WordPress sites.
Surplus field promotion
Greenhouse list responses with content=true promote metadata, requisition_id, language, and department/office hierarchy into provider_extras; prospect posts without internal_job_id are tagged posting_kind=prospect. See the S1–S4 surplus taxonomy in Data Model and openspec/changes/ingest-data-surplus/ for the full promotion manifest.
| Provider | Shipped in v0.1 | Planned (manifest) |
|---|---|---|
| Greenhouse | metadata, requisition_id, language, department/office trees, posting_kind | pay_input_ranges (optional N+1 fetch) |
| Workable | raw_listing / raw_detail split | — |
| Lever | — | categories, epoch dates, sections |
| Ashby | — | isListed, compensation, workplaceType |
| BambooHR | — | jobOpening, requisition ids |
| Workday | — | postedOn, jobDescription |
| Rippling | — | payRangeDetails, workplaceType |
| Teamtailor | — | RSS limits; optional HTML detail fetch |
| WP Job Manager | — | meta keys |
Provider Coverage
Provider coverage reports on the persisted SQLite dataset only. It does not perform live HTTP checks, source fetches, route probes, or job syncs. The deterministic smoke data proves the report shape; published real-world percentages must be measured from representative persisted source snapshots:
uv run openopps providers coverage
uv run openopps providers coverage --source a16z --provider any --json
uv run openopps providers coverage --source a16z --provider greenhouse
uv run openopps providers audit --source a16z --json
uv run openopps admin sources yield --jsonUse coverage to answer whether the local data is complete enough for analysis. The JSON report includes source, board, route, and job counts; route counts by provider, support level, and last status; executable route counts; missing route metadata counts; duplicate route skips derived from the durable route registry; job counts by provider, source, and board; non-supported provider coverage; detect-only provider examples; boards with job-capable hints but no executable route; and boards with executable routes but zero persisted jobs.
admin sources yield reports source-family conversion from persisted records only: company candidates, canonical boards, provider hints, job-capable routes, route-ready routes, active job routes, duplicate board rate, active boards added, yield score, and taxonomy totals by provider type and access type.
Coverage also reports enrichment completeness percentages from deterministic provider-field mapping. These data-quality metrics cover posting URLs, apply URLs, locations, departments, descriptions, normalized compensation or salary, remote level, and employment type.
Provider adoption audit
Candidate provider targets
providers audit reports persisted-board evidence for smartrecruiters, workable, recruitee, teamtailor, bamboohr, rippling, wpjobmanager, icims, jobvite, jazzhr. It includes candidate route and board counts, example boards, and do-not-adopt rationales for providers that do not yet have reliable generic public fetching in v0.1.
Route Probing
Some sources report provider hints without the public route token required for job fetching. Route probing tries candidate tokens derived from upstream slugs, remote ids, names, domains, and websites. Board keys such as a16z:acme are durable record identifiers, not provider route-token candidates.
Derived from source slugs, remote ids, names, domains, and websites.
Route probing reports matches and unknowns without persistence by default.
Add --apply only after inspecting matched route metadata.
uv run openopps admin providers probe-routes --source a16z --provider any --limit 25 --jsonBy default, probing only checks routes missing token or URL metadata and does not persist results. Use --include-existing to recheck existing routes and --apply to persist matched metadata.
Provider Health
Provider health samples source adapters and job-capable routes, then reports status counts:
uv run openopps providers health --source a16z --provider any --limit 25 --jsonHealth checks report active, empty, error, missing_route, not_covered, and duplicate route skips. Add --apply to persist source health under raw_metadata.health and board-provider route health under last_status.
Use provider health for live sampled HTTP status. Use provider coverage for offline persisted route coverage and enrichment quality. Use provider audit for candidate-provider adoption evidence.
Board Route Registry
The board_providers registry is the executable route layer between discovered boards and job sync. Use it before large syncs to confirm which routes are ready:
uv run openopps admin providers registry --provider any
uv run openopps admin providers registry --provider any --passed-probe-only --json
uv run openopps admin providers registry --provider any --include-missing --limit 50Without --include-missing, admin providers registry skips job-capable hints that still lack executable metadata, such as an Ashby board token or complete Workday CXS route. --passed-probe-only narrows output to routes verified by a persisted admin providers probe-routes --apply result.
Use Explorer to inspect the generated static snapshot of persisted boards, board-provider routes, latest job rows, source/provider coverage, and data-quality signals.
Provider Limits
- Workday support is limited to public postings visible through careers sites; it is not official tenant API access.
- Ashby sync excludes
isListed: falsedirect-link-only postings from normal output. - Overlapping board records from multiple sources are merged by company domain. Board JSON includes
source_keysandsource_board_keysfor every source currently represented by the canonical board, and provider requests are deduped before route probes and job syncs. - Installed Python plugins are not sandboxed and run in the same process as OpenOpps.
- Use
OPENOPPS_PLUGIN_ALLOWEDto opt in trusted entry-point names before plugin code executes. - Use
OPENOPPS_PLUGIN_AUTOLOAD=trueonly in controlled environments where every installedopenopps.pluginsentry point is trusted.