Skip to content
 
 

Repository files navigation

OpenJobRadar

A hosted, multi-tenant career-intelligence product: proactive job discovery, explainable AI-assisted scoring, values screening, and alerting — fully customizable by every user through friendly surfaces, across role families from engineering to product, design, research, data, and beyond.

Built on a proven discovery-and-scoring engine refined through thousands of live postings, re-architected from day one for tenancy, safety, and user-facing customization.

Status: M0–M3 complete; M4 (tenant-aware pipeline & fairness) in progress. The full poll → filter → score → notify chain now runs for real (poll/, pipeline.py, ADR-0025): two ATS adapters ported from the source repo (Greenhouse, Lever) feeding a pipeline that wires every subsystem this milestone built — due-work scheduling (ADR-0018), notify decisions (ADR-0019), source-yield tracking (ADR-0020) — together, verified against live GitLab job data as well as recorded fixtures. The adapter library has since grown to 48 (ADR-0031): generic ATS/job-board platform clients (Workday, iCIMS, ADP, Oracle Recruiting Cloud, and more), several fallback strategies for boards with no dedicated adapter (sitemap mining, embedded-JSON-state walking, a Bedrock-backed LLM extractor, a Playwright JS-render scraper), and a handful of approved niche community job boards — each individually reviewed and, where needed, redacted before porting; see that ADR for exactly what was ported, redacted, or excluded and why. Infrastructure-as-code landed (infra/, CDK v2): data-plane DynamoDB tables (ADR-0021), control-plane Cognito identity boundary (ADR-0022), a real DynamoDB Store adapter (ADR-0023), and the first live API route — GET /me behind a Cognito JWT authorizer (ADR-0024). A per-user watchlist service (ADR-0026) feeds that pipeline real org entries, and scheduled_poll.py (ADR-0027) now connects it all the way to due-work scheduling and fair-share dispatch — end to end, tested: add an org, it gets scheduled, dispatched, polled, and its cadence adapts automatically. Alerts now actually render and send through SES (ADR-0028), gated correctly on verdict/channel/dry-run/quiet-hours. Scoring has a real implementation too — BedrockScorer (ADR-0029) calls a Bedrock Claude model and validates every field of its response before trusting it, the same untrusted-content discipline this product already applies to user input. No live Bedrock call has been made yet, and nothing wires a real caller to use it instead of StubScorer.

The first UI exists: web/ (ADR-0030) — Cognito Hosted UI sign-in via PKCE, landing on a page that calls GET /me. generateCodeChallenge is verified against RFC 7636's own official test vector; nothing has run against a real deployed Cognito pool or API yet. What's left to run the backend chain unattended is a compute trigger (EventBridge + Lambda), pure infra wiring at this point. Still open: a batched digest email, resolving real per-user to_email/from_email for delivery, and (roadmap M8) hardening the web app against XSS-based token theft (docs/THREAT-MODEL.md T11).

Ground rules during the transition

  1. Zero person-specific facts in code — configuration is the only place identity lives.
  2. Tenant isolation is enforced in the data layer and proven by an adversarial test suite.
  3. Every new user starts in DRY_RUN; nothing sends or spends until explicitly armed.
  4. Progressive disclosure: presets → forms → expert YAML, so "customize everything" stays usable.

Standards conformance

Per the portfolio STANDARDS/ set; registration lives in the private applicability registry (registered 2026-08-22 at repo genesis, before first public push). No blank rows, no silent skips.

Standard State
Code Quality Applies — ruff/mypy/pytest + coverage floor via make verify; ADRs from day one
Security & Supply-Chain Applies — bandit + gitleaks + pip-audit/Dependabot armed; initial threat model landed M2.7 (docs/THREAT-MODEL.md), extended at each new trust boundary; vault/isolation/fairness defects are P1 by declaration (SECURITY.md)
CI/CD Applies — merge-blocking gates on PR and main (.github/workflows/ci.yml)
Observability Applies — Tier C today (library); Tier A+B controls land with the first hosted surface (roadmap M4)
Accessibility Applies as of web/ (ADR-0030) — human-facing HTML now exists. No axe/Lighthouse gate wired into CI yet; tracked for roadmap M5 alongside the settings hub/onboarding UI this minimal slice will grow into
Internationalization Applies — consumer-facing US product; English-only at M1, declared in docs/I18N.md with a GA target
AI Evaluation Applies — LLM scoring is the core feature; untrusted-prompt contract in ADR-0009 precedes any model call
Quality & Metrics Applies — values ledger in docs/ROADMAP.md
Documentation Applies — README/ADRs/CHANGELOG/SECURITY/CONTRIBUTING current at HEAD
Release & Versioning N/A — no versioned artifact released yet; trusted-main signed-tag pipeline lands with the first tag (docs/adr/0011-no-versioned-release-yet.md)
Responsible-Tech Framework Applies — artifact schedule in docs/RESPONSIBLE-TECH-AUDITS.md
Performance Applies as of GET /me (ADR-0024) and web/ (ADR-0030) — a real hosted route and shipped HTML both now exist. No load/latency budget measured yet; nothing is deployed to measure it against
Incident Response Applies — severity anchors in docs/incidents/README.md
Data Governance Applies — per-user data by design; L0 inventory at M0, classification matures with the schema work (M2)
AI Development Measurement Applies — tracked under the Quality & Metrics scope

Development

make setup    # .venv + runtime + dev tooling
make verify   # ruff + mypy + pytest (coverage-gated)

Infrastructure (infra/, CDK v2 TypeScript) and the web app (web/, Astro) are each their own toolchain — make infra-setup / make infra-verify (see infra/README.md), and npm ci / npm test / npm run build in web/ (see web/README.md).

About

Multi-tenant career-intelligence SaaS: customizable job discovery, scoring, and alerting across engineering, product, design, research, and beyond (AGPL-3.0)

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages