This release introduces a complete applicant tracking system for recruiters, job feed syndication for talent discovery, a rewards system for placement incentives, and an AI-powered onboarding chat. We've also fixed dozens of bugs across billing, payouts, messaging, and the recruiter experience.
Quota enforcement is now active for monthly limits on job postings, messages, contracts, and workspace invitations, with clear messaging when limits are reached.
searchable time zone, onboarding calendar step, and link scoring
a firm can post its own roles β and provably cannot publish them
make sourcing vendor selection a policy, not a constant
account.updated is the sole writer of workspace payability
admit 'reward' as a ledger reference kind
qualify a referral on a closed hire
rebuild the public brand guide and stop it publishing false data, closes #1c1c1c #a5f313
audit the self-serve apply and count vendor calls
give the candidate a lifecycle of their own, beside the application
ship applicant contact disclosure ON by default
the ledger, the seam, and the lifecycle application layer
the People board, the settings surface, and the rest of the engine
the person row, its column boundary, and the board's read path
write the job post live, and let it ask
signup stall sweep + the unsubscribe mechanism that never existed
tell a platform admin a dark surface is gated, not broken
add the job_feed channel and surface it in the channels panel
extract the response layer β cache matrix, strong ETag, 304s
mount the job feeds surface in the client and recruiter portals
check-quota-meter-parity β every quota declares how it is measured
one inbox for every channel and every agent, on an index that can answer correctly
add the FeedJob/FeedMeta types and a defensive row normalizer
add the five renderers behind RENDERERS
scaffold @diiirect/job-feeds with the filters v1 contract
add job feeds, curation items and hashed feed tokens
add the job_feed channel kind and hoist public_jobs onto syndicated_jobs
ask the transcript, and a score the human owns
derive kind='interview' from the resolved invitation link
one meetings surface, reachable from client and recruiter
provider='manual' finally has a producer
the read layer can finally say when an utterance ENDED
the workbench has a way in, and the scorecard has evidence
the workbench, and the audit row that was never written
enforce messages_monthly and contracts_monthly
make the workspace_members seat cap real
bug / feature / support as icons beside the bell
the collapse chevron ends the utilities line, saving a row
close the last three blockers β green validate, green tests, honest types
disclose an applicant's contact by provenance, not pipeline stage
make the SQL test tier actually pass, and fix the merge bug it found
close the last strict-mode and nullability gaps in the merged features
default the Vercel team + project instead of demanding them as env
make client_id nullable everywhere it is now read
scope a workspace-owned feed's corpus to its own workspace
share ONE SQL body between the render RPC and the operator preview
re-ratchet select-column after the type regeneration
the smoke-route resolver could not see a nested dispatcher
drop the hollow is_confidential field from FeedJob
derive engagement_type from the question the composer actually asks
withhold the distribution summary where distribution is impossible
re-point the four tours at the sidebars we actually ship
a mailbox with no workspace has no plan to charge
stop reading a consumed allowance as untouched
fix build-breaking sync export, webhook fail-open, and silent lookup error
regenerate DB types for the merged migrations, and get a comment out of a select string
repair the red inherited from the consolidated feature branches
reserve the unsubscribe handle, and model the seat-claim RPC
grant authenticated SELECT on the booking correlation columns
collapsing the sidebar takes effect on the click, not on the next one
free the sidebar's bottom controls, and left-align the account card
thin_profile could never have fired
the two things only the consolidation could break
keep "Refer & earn" inside the workspace shell
resolve the workspace when /affiliate has no cookie yet
searchable time zone, onboarding calendar step, and link scoring
the intro video uid stops being public data
the intro video uid stops being public data
a firm can post its own roles β and provably cannot publish them
gated earnings section with the payout rail entrypoint
give the opportunities feed a filter rail, dense rows and a preview
the internal funnel is the client's candidates surface, mounted
the role detail surface β bench picker, in-flight roster, reward ladder
the role page now shows the money, the bench and the state
the role record, and the authorization hole that outlived membership
the submissions board is the shared board now, and it admits it is read-only
repair the flag registry lock, dedupe live regions, correct a false ratchet claim
seed the desk, and make hidden roles reachable again
three defects only a browser could find, and the spec's own corrections
update the recruiter workspace layout
make sourcing vendor selection a policy, not a constant
shared shapes, presenter math and chips for the agents console
the console read layer β four actions over the new RPCs
the console surfaces β fleet, triage, activity, connections, drawer
three read-only metric functions for the agents console
wire the console into the workspace agents surface
close the two gaps the remediation agents could not reach
remediate the confirmed review findings
silent truncation, a wrong window, and timezone-dependent day buckets
the agent drawer was unreachable β mount it, and stop the grid eating the URL
the throughput chart rendered as an empty band
account.updated is the sole writer of workspace payability
manageFirmPayouts action
workspace scope for connect onboarding
two of three writers lost the allowance unit on a failed insert
extract shared workspace Connect-onboarding core
make the branch pass validate β real type errors and a build-breaker
admit 'reward' as a ledger reference kind
price sourcing search so the surface can actually run
workspace-scoped payout accounts and a (user XOR workspace) payee
declare how every quota is actually metered
resolve batch chunks concurrently
chunk resolveEntitlementMap at the RPC's own bound
qualify a referral on a closed hire
add the bilingual webapp-feeds namespace and its three nav labels
console copy for the agents redesign (en + es)
apply card answers, closing the conversation loop
card data through context, not prop drilling
chat surface, seven tool cards, flag and bilingual copy
chat turn endpoint, prompt and state adapter
completion gate, tool surface and chat transcript
host the live voice session inside the chat card
render the conversation behind talent-chat-signup
a firm may submit a slate, not one candidate, ever (task 21)
candidate ownership claims and the person key
category reputation and responsiveness tables
category reputation scoring model and daily rollup (task 22)
claim tombstones so erasure and ownership can coexist
client reward composer and rail wiring (task 18)
derive firm payout account state
escrow RPCs β close, uncommit, and the M1 trigger
escrow RPCs β fund, commit, claim (F11-F13)
escrow RPCs β release and clawback
firm engagement requests, invites and answers
firm invitations and the requested engagement direction
manageJobReward action
manual settlement, the boundary control (task 24)
milestone ladder editor and escrow funding panel (task 19)
obligations, disputes and the integrity side-table
party-side dispute opening
per-role reward configuration and its ladder
pure reward types, formatter and error tokens
requests inbox, reputation scorecards, invite-by-email
resolve category attribution on existing submissions
reward, ladder, slot and earnings reads
widen candidate_submissions for reward attribution
admin and recruiter were paying for a namespace neither one reaches
configure timeZone on BOTH halves, not just the server one
persist spf_verified on the SES verification path
cards render server data, not invented defaults
add the missing category backfill task; correct a wrong task reference
finish the bigint->number conversion in the formatter
narrow dispute subject to what the runtime actually writes
register the rollup event, or its only trigger is a daily cron
the 15 type errors four tasks of manual review could not see
the job record already spends its lime, so the funding CTA is forest
4 security hardening fixes
rebuild the public brand guide and stop it publishing false data, closes #1c1c1c #a5f313
rebuild /download around what actually ships
rebuild the download page with launch notifications
redesign agency application page
year-scope the UNBOUND page, with an evergreen alias
stop advertising money the platform does not pay
audit the self-serve apply and count vendor calls
declare the brand types, drop dead slots, show run duration
record where every brand asset came from
the backfill skipped recruiters and reported into the void
type the provenance patch and summary properly