Offer & Onboarding · Prototype review

The Onboarding Agent

After a candidate is offered, an agent collects every required document, chases the candidate automatically, validates what comes in — and only escalates the exceptions. Recruiters watch progress instead of working a checklist.

Maigrate · Treetop · screens captured from the running prototype
Why

The problem we're removing

Recruiter home

The fleet view

➚ click to zoomOnboarding fleet view
Case · exception path

The agent flags what needs a human

➚ click to zoomCase detail — needs you
Case · in-flight path

The agent is chasing — on its own

➚ click to zoomCase detail — agent handling
Admin config

Per-tenant requirements — Settings › Hire requirements

➚ click to zoomHire requirements settings
The model

Requirements are resolved, not fixed

required_docs, gates = resolve(state × role × payer × location × setting)

Role types

Tricare RBT · RBT · ABAT · 40-Hour Certificate · BT

Readiness gates

Offer → Training clearance → Scheduling clearance

Per-tenant storage

Treetop → Lumary · Bright → Rippling · via adapter

10 states · payer-driven role choice · clinic-vs-home overlays. Full model in the requirements matrix doc.

Honest status

Real vs. seeded vs. not built

Requirements resolver · config · admin screen · data model · recruiter UIBuilt & tested
Agent lifecycle + activity shown on screenSeeded fixtures
Sending SMS/email · scheduled follow-ups · doc validation (LLM/OCR) · inbound captureNot built yet

The brain is built; the body (reach out → chase → ingest → validate → escalate) is not. The working document-check + comms agents already exist in the Python production app — the reference to port.

For discussion

Decisions to make

To make it real

Build outline

  1. Trigger — create a case when an offer is accepted
  2. Request — agent sends the doc request per resolved requirement
  3. Follow-up loop — scheduled nudges on cadence (STOP/hours aware)
  4. Ingest — inbound attachment → stored document → queued
  5. Validate — LLM/OCR classify + extract → accept or flag
  6. Escalate + recompute — flags surface in Needs you; gates rerun
  7. Writeback — push accepted docs to Lumary / Rippling

Prereqs: real Twilio/Resend clients (only fakes today) · scheduler/queue worker · laravel/ai wired · inbound attachment handling.

Proposed next step

Lock the top decisions, then build one real slice

Decide background-check gating + storage target + cadence — then build trigger → request → scheduled follow-up against the fake clients, so the prototype actually moves on its own end-to-end before we wire live SMS and validation.

← → or space to navigate