Changelog

What shipped.

Dated and specific. If it's listed here, it's live.

api

The /v1 API, SDK, and webhooks

  • POST /v1/jobs, /v1/jobs/:id/publish, /v1/jobs/:id/screen (202 + webhook), GET /v1/jobs/:id/results?k= — the whole pipeline is scriptable.
  • Background work is inspectable at GET /v1/runs/:id with per-stage telemetry — parse, anonymize, score, evidence, rank.
  • Webhooks signed per the Standard Webhooks spec: job.succeeded, job.failed, application.received, screening.completed.
  • Idempotency-Key on creates — a retried request returns the original run instead of double-charging.
  • TypeScript SDK published, generated from the same OpenAPI document the docs render from.
dashboard

Dashboard: pipeline, instant re-rank, decision log

  • Pipeline board per job — new, screening, shortlisted, interview, offer — with human dispositions on every card.
  • Rubric weights are editable after a screening: re-ranking recomputes from stored criterion scores in milliseconds, zero model calls, zero credits.
  • The decision log is visible and exportable: every screening, weight change, and disposition with actor and timestamp.
  • Credit ledger line by line, including automatic refunds for failed runs.
distribution

Distribution: Google for Jobs + the free feed network

  • Server-rendered JobPosting JSON-LD plus the Indexing API — hosted career pages surface on Google for Jobs without configuration.
  • XML feed network live: Adzuna, Jooble, Talent.com, Jora, and Tanqeeb for MENA reach.
  • Per-board status badges in the product — live means live, pending means pending. LinkedIn Basic feed is submitted and in review; the Indeed ATS partner build is underway.
kits

Interview kits: 30 minutes, planned to the minute

  • Six question categories — easy, medium, hard, scenario, cv_based, job_based — each question with a model answer, scoring rubric, and red flags.
  • CV-grounded probes: the kit quotes the candidate's own claims and tells the interviewer where to press.
  • Generated in English or Arabic, 12 credits per kit, delivered by webhook when ready.
careers

Careers infrastructure: hosted pages, embed, apply flow

  • Hosted career pages with a one-tag embed (embed.js) and a public JSON API for headless builds.
  • Apply flow with inline knockout evaluation (deterministic rules, no model), acknowledgment emails, and a live candidate status portal.
  • Candidates are deduplicated by email per organization — one person, one record, however many times they apply.
  • AI JD composer: full descriptions in English and Modern Standard Arabic from a title, location, and a few skills. 0 credits, every plan.
engine

The engine: eight-stage screening with evidence citations

  • Pipeline live: intake → parse → anonymize → score → evidence → rank → top-K → kit, streamed stage by stage over the API.
  • CV pages are read as images — scanned files, two-column layouts, and Arabic PDFs parse natively instead of through corrupt text layers.
  • Identity fields are stripped before any scoring model runs; criterion scores are pointwise, three shuffled passes, aggregated.
  • Evidence quotes are validated verbatim against the extracted CV text — a quote that fails the match is dropped, never displayed.
  • The engine cannot reject a candidate. Dispositions are human actions, written to the decision log.

Earlier work — auth, orgs, the credit system — predates this log.