Back

Agentic Onboarding Flow

Overview

This is the intake flow. New clients go through a conversation that captures work history, goals, constraints, and the boring-but-important eligibility bits.

Before this, case workers did it as a structured interview. In reality, time pressure meant you’d get partial answers, missing dates, and “we’ll clarify later” notes that never got clarified.

The onboarding fixes that by letting clients answer at their own pace, while the system pushes for the missing pieces (without turning the whole thing into an endless chat).

Key design decision

Decision: don’t run a fully free-form “agent chat”. Use explicit state + routing, and let the LLM handle phrasing only.

Early versions were basically open-ended LLM conversations. Clients got stuck (“what do you want from me?”), and the system had no idea when it had enough information to move on. Cute demo, bad product.

What we ship instead:

1) State tracking

There’s a structured profile model behind the chat (employment status, roles, dates, availability, constraints, etc.). The system tracks what’s complete, missing, or “too vague to be useful”.

2) Routing logic

Deterministic rules choose the next question based on the current state. If someone’s unemployed, you dig into last role and exit reason. If they’re employed, you pivot to motivation, timeline, and what “switching” actually means.

3) LLM for phrasing (not decision-making)

The LLM makes questions sound natural and adapts tone based on context, but it does not decide what data to collect or what the next step is. That’s the rules engine’s job.

4) Clear stopping conditions

The flow ends when required fields hit quality thresholds (like real dates and job titles, not “I did retail”). The model doesn’t get to “feel” done. Completeness checks end the conversation.

Constraint + tradeoff

Constraint: this flow is less “open” than a general-purpose assistant. That’s intentional.

If someone asks mid-intake “how do I apply for benefits?”, the system won’t go freestyle and hallucinate policy advice. It stays on intake, and routes them to the right resource or a separate support flow.

The tradeoff is simple: slightly less conversational freedom, way more predictability. And case workers reviewing the intake can see exactly what was asked, what was answered, and what’s still missing.

What this connects to

The intake profile feeds downstream systems like course matching and report generation. If onboarding is incomplete, those systems don’t “guess”. They block and ask for what’s missing.

Back to overview