Partner Briefing
How Stepful Uses AI
Stepful trains healthcare workers. Our students are adult learners, many balancing jobs and families, and our AI investments are aimed at one thing: giving every student the kind of responsive, personalized support that historically only small classrooms could offer. AI at Stepful answers questions at midnight, gives same-day feedback on practice work, and helps our coaches spot and reach struggling students sooner.
Four principles govern every AI feature we ship:
- AI assists, people decide. Consequential decisions (eligibility, policy exceptions, escalations) are made by platform business rules or by staff. Instructors are able to review AI output, and AI is never used to directly make student-impacting decisions.
- Scoped data access. AI features see only the authenticated student's own records, fetched through purpose-built, server-controlled tools.
- Everything is logged. Every AI generation is persisted with its prompt version, model, and token usage. Every action an AI agent takes is stamped with its AI source, so the audit trail distinguishes AI actions from human ones.
- Gradual, reversible rollout. Each AI feature sits behind a feature flag scoped to a user, cohort, or program. Any feature can be turned off instantly, and each has a human fallback path.
Part I: What AI does for students
Four capabilities touch students directly. Each is listed with its current status and oversight model.
24/7 Support Assistant (chat and SMS) AI answers, humans on call
Students can ask a conversational assistant everyday questions: "When is my next class?", "What's my current grade?", "What do I still owe?". The assistant (built on the Decagon platform) reads the student's own enrollment, schedule, grade, attendance, and payment records to answer accurately. It can also complete three narrowly-scoped self-service actions: correcting an attendance record, requesting a one-time classroom unlock, and reopening an overdue exam attempt.
For those three actions, the AI can only request; whether the student qualifies is decided by rules in our platform code, never by the model. Conversations can be handed off to our human support team at any time, and student groups without the assistant enabled get human live chat instead.
Status: live for select programs · Escalation: human support team
AI Practice Conversations (video avatar) Disclosed, instructor-reviewable
Inside certain lessons, students practice patient-facing communication by speaking with an AI-powered video character (built on Tavus). Before starting, the student sees an explicit disclosure that they are about to interact with an AI character that may provide feedback. The conversation is scored against an instructor-authored rubric, and the recording and transcript are available to instructors for review.
Status: live for enrolled cohorts on specific programs · Grade publishing: configurable per lesson · Instructor override: always available
Faster feedback on assignments Automated, instructor override
For open-ended work (short-answer questions, recorded video responses, and group project submissions/presentations), AI scores the work against the rubric and grading instructions written by the instructor, and produces written feedback in the context of the student's actual answer. Whether an AI grade publishes automatically or waits for instructor review is configured per lesson, and instructors can always re-grade.
Status: live, controlled by a global feature flag · Rubrics: instructor-authored
Career support tools AI drafts, humans refine
When students approach externship and job search, AI helps in two ways. First, it structures a professional resume from the student's own work history, generating follow-up questions the student answers to fill gaps, before final editing. Second, it writes plain-language summaries of job postings so students can evaluate leads quickly. Job summaries use only the posting itself, no student data.
Status: live · Resume content originates from the student's own inputs
Part II: What AI does behind the scenes
These features serve Stepful staff. Students see only what a human chooses to send, with one flagged exception noted below.
Outreach drafting for coaches and instructors Human reviews and sends
AI drafts personalized check-in messages (SMS and email) for students showing signs of struggle, using their academic history, engagement, and prior conversations. The draft appears in the coach's dashboard clearly labeled "AI generated", in an editable field; the coach revises and sends it. We track how much humans edit each draft to measure quality.
One exception: a weekly automated outreach program sends AI-drafted check-ins directly, on behalf of individual instructors who have explicitly opted in via a per-instructor flag. It is limited to designated cohorts.
Support reply suggestions Human always sends
Inside our helpdesk, support agents can request an AI-suggested reply informed by the student's academic context and the conversation thread. Every suggestion arrives with a fact-confidence score, and the agent edits and sends. The AI never messages the student directly.
Student and program summaries Internal decision support
AI condenses a student's academic standing, externship journey, or partner-clinic communications into short summaries that help staff prepare before reaching out. These are read by staff only and are never sent to students or shown in student-facing surfaces.
Human oversight at a glance
Human in the loop Hybrid Automated with override Internal only
| Capability | Who receives the output | Oversight model | Human role |
|---|---|---|---|
| Support assistant | Student | Hybrid | Answers are autonomous; actions constrained by server-side eligibility rules; escalation to human agents anytime |
| Practice conversations | Student | Hybrid | Instructors can review every recording and transcript; grade publishing configurable per lesson |
| Assignment grading | Student | Automated with override | Instructor-authored rubrics; instructor re-grade always available; publishing configurable |
| Resume and job tools | Student | Hybrid | Student answers follow-up questions; resume refined before final use |
| Outreach drafting | Student (via coach) | Human in the loop | Coach edits and sends; opt-in automated program is the flagged exception |
| Support reply suggestions | Student (via agent) | Human in the loop | Agent edits and sends every message |
| Staff summaries | Staff only | Internal only | Decision support; never reaches students |
What AI at Stepful does not do
- No clinical decisions. Our AI supports education and student services. It does not touch patient care or patient data; our users are students and staff.
- No eligibility or policy decisions. Whether a student qualifies for an exception, unlock, or extension is decided by deterministic platform rules, not by a model.
- No AI in admissions or employability scoring. Our employability score is a transparent, rule-based calculation (grades, attendance, punctuality, and human-entered professionalism ratings). No machine learning is involved.
- No AI in peer community spaces. Student community chat is human-to-human messaging.
- No model training on student data. We use vendor APIs for inference; we do not train or fine-tune models on student records.
Data handling and vendors
AI features use student data on a need-to-know basis: the support assistant and coaching tools read the asking student's own records; grading tools see the submission, transcript, and rubric; staff summaries draw on academic history and support-conversation context. Policy-document search uses only our published policy text, with no student data in the index.
| Vendor | Role | What it processes |
|---|---|---|
| OpenAI | Language models and embeddings (API) | Prompt content per feature: student academic context, submissions, conversation text |
| Anthropic | Language models (API) | Same prompt engine as above; provider selected per prompt |
| Decagon | Support assistant platform | Support conversations; student records fetched through our authenticated tool APIs |
| Tavus | AI video character for practice conversations | Practice session audio/video and transcripts; recordings stored in our own cloud storage |
Auditability: every model call made through our prompt engine is stored with its prompt version, model, token counts, and cost. Actions taken by the support assistant are stamped with an AI-specific source marker in our database, so any record it touches is distinguishable from human activity, permanently.
Appendix: Technical detail
For engineering, security, and compliance reviewers.
Architecture
Central prompt engine
All first-party generation flows through a database-backed prompt system (AiPrompt). Prompts are versioned, support A/B variants with deterministic per-record assignment, and are templated with Liquid. Each prompt record specifies its provider (OpenAI or Anthropic) and model. Every execution persists an AiPromptRun row capturing the rendered messages, model, token counts, and computed cost, giving a complete inference audit log. Prompts can be disabled individually without a deploy.
Support assistant integration (Decagon)
- Authentication: the widget receives a per-user signed JWT (HS256, 24-hour expiry) plus an HMAC user-verification signature. Decagon's tool calls back into Stepful carry that bearer token; the server-to-server path uses a shared API key with explicit user identification headers.
- Tool surface: read tools cover profile, enrollments, schedule, grades, attendance, financials, and externship-eligibility status. Write tools are limited to three actions (attendance override, classroom-unlock exception request, exam reopen), all defined in a checked-in contract.
- Server-side authority: eligibility for every write action is computed by Stepful platform code; the agent can only invoke, not decide. Writes are idempotent and row-locked, and each is stamped with an AI source value (for example
decagon_ai_agent). - Blast-radius controls: the model never receives database record identifiers (disambiguation is by human-readable program and cohort names); non-production environments route to a separate staging workspace; the widget is gated by an environment variable plus a feature flag scoped to user, cohort, group, or curriculum, with human live chat as the fallback.
Practice-conversation grading (Tavus CVI)
The video avatar runs in a dedicated external service wrapping the Tavus avatar. Results return via an authenticated webhook (shared-secret header) carrying the transcript, rubric results, score, and feedback; recordings land in our own S3 storage. Grade auto-publishing is a per-lesson setting, and already-graded attempts are never overwritten.
Feature matrix
| Feature | Trigger | Provider / model | Data sent to model | Output | Automation controls |
|---|---|---|---|---|---|
| Support assistant | Student message (web chat or SMS) | Decagon (vendor-managed models) | Conversation; student records via authenticated tool APIs | Chat replies; 3 constrained write actions | Feature flags per user/cohort/group/curriculum; line-of-business allowlist |
| Short-answer / video grading | Nightly cron job | OpenAI or Anthropic, per prompt config | Rubric, instructor grading instructions, student answer or video transcript | Score, rubric results, written feedback | Global ai_assignment_grading flag; per-lesson auto-publish setting; instructor re-grade |
| Group project grading | Background jobs on submission / presentation | OpenAI gpt-4.1 |
Grading instructions, written submission or cleaned Zoom transcript | Category scores and feedback | Auto-publish only above a score threshold; otherwise queued for review |
| Practice conversations | Student launches from lesson | Tavus (vendor-managed), external grading service | Live audio/video conversation with the avatar | Score, rubric results, feedback, recording, transcript | Per-enrollment feature flag; per-lesson publish setting; instructor review UI |
| Outreach drafting | Scheduled pre-generation (3x weekly) or on demand | OpenAI or Anthropic, per prompt config | Academic profile, engagement history, recent support conversations | Draft SMS and email, labeled "AI generated" | Human edit-and-send by default; automated weekly send only for flag-opted instructors; edit distance tracked |
| Support reply suggestions | Agent request in helpdesk | OpenAI or Anthropic, per prompt config | Student context, conversation thread, agent draft | Suggested reply with fact-confidence score (1 to 4) | Per-agent feature flag; agent always sends |
| Staff summaries | Weekly crons and on-demand | OpenAI or Anthropic, per prompt config | Academic records, externship compliance status, support conversation history | Staff-facing summaries | Internal surfaces only; staleness-bounded regeneration |
| Resume generation | Student-initiated job | OpenAI gpt-4.1 |
Student-provided resume text and answers | Structured resume fields and follow-up questions | Eligibility gating by enrollment status; failure states tracked |
| Job posting summaries | Weekly cron | OpenAI or Anthropic, per prompt config | Job posting content only, no student data | Plain-language posting description | De-duplicated; concurrency limited |
Security and audit posture
- Provider API keys are held in Rails encrypted credentials; the support-assistant handshake uses signed JWTs with 24-hour expiry plus HMAC user verification; inbound webhooks require shared-secret headers.
- Every prompt-engine call is persisted (
ai_prompt_runs: prompt version, model, tokens, cost). AI-drafted outreach stores edit distance against the human-sent version. - Records modified by the support assistant carry AI-specific source stamps, keeping AI and human actions distinguishable in the audit trail.
- Model traffic is traced in our observability stack with model tags; provider rate limits are respected with batched execution.
- Rollout is controlled by per-user, per-cohort, per-group, and per-curriculum feature flags; any AI feature can be disabled without a deploy.
Models currently referenced
OpenAI: gpt-4.1, gpt-4o, gpt-4o-mini. Anthropic: claude-sonnet-4-6, claude-haiku-4-5. Decagon and Tavus manage their own underlying models. Per-prompt model selection lives in the prompt database, so models can be upgraded per feature without code changes.
Feature status reflects platform configuration as of July 8, 2026.