Talent can now take English assessments with AI grading and human review to earn verified skill badges. Resumes are automatically extracted and matched to job requirements. Clients can create curated shortlists and share them with recruiters for collaborative hiring.
Talent can now see assessment invitations in their inbox and view recommended assessments in the new Grow hub
admin observability dashboard + re-extract UI
add access_mode (open|invite_only) to templates
post-application calendar + availability step
add talent/resume.extraction.requested
AI recommender + proposal dedup
author per-job-post assessment requirements (optional/required/gating)
filter & sort candidates by verified skill, band, and trust tier
gate 6 ported v1 ATS surfaces behind per-page flags
migrate decision engine from PostHog to Vercel Flags
verified skills boost client-side discovery visibility + candidate-card badge
verified-skill breadth contribution (more-is-better, tier-weighted, capped)
P1 data model + curation logic layer
P1 owner UI — client + recruiter surfaces
P2 backend — shares, access, redaction, public access
P3 paid reveal — wallet debit + sharer payout (REVIEW)
P4 scoring — recipient good/bad/maybe + self-filter + owner feedback
P5 cross-shortlist talent quality signal
resilient maintenance kill-switch (Edge Config) + middleware timeout + jobs loading UX
memoize gate reads in-process (30s) to bound billed reads
resolve pre-existing RSC boundary breaks blocking the build
defensive type override for verified_skills.status until type regen
revoked/expired/superseded verified skills carry no ranking boost
use result cast not .overrideTypes (mock-safe) for verified_skills.status
P3 review — bill reveals per workspace + harden payer resolution
admin observability dashboard + re-extract UI
admin re-extract action (vision recovery)
admin-client persistence + work-experience shaper
async waiting state machine + bilingual feedback in ResumeUploadQuestion
error classifier (no_access/rate_limited/schema_invalid/timeout/provider_error)
extract-resume Inngest function + registration
extractResume orchestration over the model chain
Inngest text/vision path decision + used_vision flag
partial-save schema + coverage helper
route scanned/thin-text uploads to server vision path
startResumeExtraction + getResumeExtractionStatus server actions
structured Axiom context on extraction logs (PII-free)
validate-escalate fail-over chain with per-class policy
vision/server-side extraction from R2 (extractResumeFromFile)
consolidate find-work nav into Grow hub (i18n labels, Practice nested)
enforce per-job assessment requirements at apply-time (optional/requested/required)
flag-gate skill-assessments surfaces + author P1 E2E
gate Contracts/Tasks/Timers behind per-surface flags
Grow hub page (verified-skills hero, invites, recommended, rehearse)
grow-hub routes + EN/ES i18n keys
route back to finish application after passing a gating assessment
show matching verified skills at apply-time
surface assessments on the find-work dashboard
canonicalize education against talent.universities (match legacy)
harden duration/replay, status-write errors, orphan row, single skills query
replace banned Function type in extract-resume test
saveExtractedFields returns string[] (fixes saved_fields write + stuck-running rows)
surface persist DB errors for retry + consistent skill fallback + tests
valid Badge status colors + failed-only error-class breakdown
add access_mode (open|invite_only) to templates
AI rubric grading with confidence gate + human-review escalation + language bias gate
audit triggers on attempts, results, verified_skills
authenticated self-serve open-take + invite-only request + distribution entry
configurable assessment metering — free in marketplace, entitlement-gated for client ATS use
in-app notification when an assessment invitation is sent
interactive English assessment (proctored, AI-graded via rubric + human review)
native server-verified proctoring (session + Didit identity match) promotes trust tier
pending-invitation inbox action for talent (all initiators)
shared honest verified-tier labels across client surfaces
client proctoring signal is non-authoritative for trust tier
idempotent response_scores writes via unique index + upsert
post-application calendar + availability step
stitch identity.users instead of broken auth.users FK embeds
9 security hardening fixes
add talent/resume.extraction.requested
AI recommender + proposal dedup
alert evaluation + multi-channel dispatch
alert_rules + alert_events + default rules
broadcast source_runs to pipeline-health topic
freshness sweep → staleness + class-down alerts
observability types
observable warnings + why-0-cells reasons in cockpit
operator dry-run/preview (fetch real, write nothing)
optional drop-diagnostics sink in comp transforms
pipeline_health() fn + getPipelineHealth/runSourceNow actions
pipeline_sources registry + freshness SLA
provider circuit-breaker columns
re-match backfill + coverage feedback
role-governance admin RPCs + audit triggers
roles_taxonomy status (deprecate-don't-delete)
run-finish alert eval + provider circuit breaker
taxonomy proposal types + zod schema
taxonomy_proposals + recommend Inngest function
uniform run-ledger across analyze/adzuna/hn via withSourceRun
unmatched-title clustering
withSourceRun lifecycle helper
zod payload validation per provider
rename nav "Categories"→"Data" and reorder Platform·Talent·Data·Pricing·Manifesto
coverage_drop via sweep snapshot + normalize provider source keys + editor draft reset
dedup-set norm consistency + best-effort accept backfill + split dialog error state
make withSourceRun step-aware + record-then-rethrow; widen source_runs status check
map rais/inegi run-now to registry id + class_down respects expected-to-produce
stale only for enabled+configured sources (no false stale on unconfigured providers), closes hi#severity
collapse AnnouncementBanner slot for unpublished HubSpot CTA
stop ISR 500s — keep param-less special files static + add root not-found