Create a Conversational Form — Patient Intake
Build an AI-powered patient intake workflow that collects demographic, insurance, and medical history information through natural conversation.
Create a Conversational Form — Patient Intake
What You'll Accomplish
By the end of this tutorial, you'll have an AI-powered patient intake system that collects demographic information, insurance details, and medical history through natural conversation. Instead of handing patients a paper form or a rigid web form, your AI agent guides them through the process conversationally — adapting to their responses, asking follow-up questions, and validating data as it goes.
What You'll Need
- A Gravity Rail workspace
- A channel for patient interaction (web chat site, phone number, or SMS — you'll set one up)
- An agent configured for your workspace
Step 1: Create the Intake Forms
Patient intake typically collects several categories of information. Create separate forms for each so data stays organized and reusable.
Demographics form
-
Go to Knowledge > Forms
-
Click Create Form
-
Configure:
- Name: "Demographics"
- Slug:
demographics - Collection: Off (one record per member)
- Prompt: "Collect the patient's demographic information in a conversational, friendly manner. Ask for each piece of information naturally — don't read off a list. If the patient provides multiple pieces of information at once, capture them all."
-
Add these fields:
| Field Name | Type | Slug | Required |
|---|---|---|---|
| Date of Birth | Date | date_of_birth | Yes |
| Gender | Dropdown | gender | Yes |
| Address | Text | address | Yes |
| City | Text | city | Yes |
| State | Dropdown | state | Yes |
| ZIP Code | ZIP Code | zip_code | Yes |
| Preferred Language | Dropdown | preferred_language | No |
| Emergency Contact Name | Text | emergency_contact_name | Yes |
| Emergency Contact Phone | Phone | emergency_contact_phone | Yes |
| Emergency Contact Relationship | Text | emergency_contact_relationship | Yes |
-
For the Gender dropdown, add: "Male", "Female", "Non-binary", "Prefer not to say", "Other"
-
For Preferred Language, add your most common languages: "English", "Spanish", "Mandarin", "Vietnamese", etc.
Insurance form
-
Create another form:
- Name: "Insurance"
- Slug:
insurance - Collection: Off
- Prompt: "Collect the patient's insurance information. Be helpful — many patients don't have their insurance details memorized. Let them know it's okay to provide what they have and the office can verify the rest."
-
Add these fields:
| Field Name | Type | Slug | Required |
|---|---|---|---|
| Insurance Provider | Text | insurance_provider | Yes |
| Plan Name | Text | plan_name | No |
| Member ID | Text | member_id | Yes |
| Group Number | Text | group_number | No |
| Policyholder Name | Text | policyholder_name | Yes |
| Policyholder DOB | Date | policyholder_dob | No |
| Relationship to Policyholder | Dropdown | policyholder_relationship | Yes |
- For Relationship to Policyholder: "Self", "Spouse", "Child", "Other"
Medical history form
-
Create a third form:
- Name: "Medical History"
- Slug:
medical_history - Collection: Off
- Prompt: "Collect the patient's medical history sensitively and conversationally. Normalize the process — let them know this is routine and helps their provider give better care. If they're unsure about something, note that and move on."
-
Add these fields:
| Field Name | Type | Slug | Required |
|---|---|---|---|
| Current Medications | Long Text | current_medications | No |
| Allergies | Long Text | allergies | Yes |
| Chronic Conditions | Multi-select | chronic_conditions | No |
| Previous Surgeries | Long Text | previous_surgeries | No |
| Family History | Long Text | family_history | No |
| Currently Pregnant | Yes/No | currently_pregnant | No |
| Primary Reason for Visit | Long Text | reason_for_visit | Yes |
- For Chronic Conditions multi-select, add common options: "Diabetes", "Hypertension", "Asthma", "Heart Disease", "Arthritis", "Depression/Anxiety", "None", "Other"
For more on creating forms and field types, see the Forms guide.
Step 2: Build the Intake Workflow
Create a multi-step workflow that guides the patient through each section of the intake.
Create the workflow
- Go to Workflows and click Create Workflow
- Name it "Patient Intake"
- Assign your agent
Add the tasks
Task 1: Welcome (Starting Task)
- Name: "Welcome"
- Prompt:
Welcome the patient warmly. Introduce yourself as the intake assistant for [Your Practice Name]. Explain that you'll be collecting some information to help their provider prepare for their visit. Let them know: - This takes about 5-10 minutes - Their information is kept confidential - They can ask questions at any time - If they're unsure about something, that's okay Ask if they're ready to get started. - Goal: "Patient has acknowledged and is ready to begin"
- Sub-Tasks: Collect Demographics
Task 2: Collect Demographics
- Name: "Collect Demographics"
- Prompt: "Collect the patient's demographic information. Be conversational — don't read off a list of fields. Adapt based on what they volunteer."
- Goal: "All required demographic fields are filled"
- Data Types: Attach the Demographics form
- Sub-Tasks: Collect Insurance
Task 3: Collect Insurance
- Name: "Collect Insurance"
- Prompt: "Now collect insurance information. Let the patient know this helps the office verify coverage before their visit. If they don't have insurance, note that and move on."
- Goal: "Insurance information collected or patient confirmed uninsured"
- Data Types: Attach the Insurance form
- Sub-Tasks: Collect Medical History
Task 4: Collect Medical History
- Name: "Collect Medical History"
- Prompt: "Collect the patient's medical history. Be sensitive — some patients may be uncomfortable discussing health conditions. Normalize the questions and explain why each is important."
- Goal: "Medical history information collected"
- Data Types: Attach the Medical History form
- Sub-Tasks: Review & Confirm
Task 5: Review & Confirm
- Name: "Review & Confirm"
- Prompt:
Summarize what was collected for the patient. Give them a brief overview of the key details (name, appointment reason, insurance provider) and ask if anything needs to be corrected. Thank them for their time and let them know the office will review their information before their visit. - Goal: "Patient has reviewed and confirmed their information"
Connect the tasks
Link the tasks in sequence using the visual Task Flow editor: Welcome > Collect Demographics > Collect Insurance > Collect Medical History > Review & Confirm
Set "Welcome" as the Starting Task.
Step 3: Connect a Channel
Give patients a way to complete the intake.
Option A: Web chat (recommended for testing)
- Go to Channels > Sites
- Create a site:
- Name: "Patient Intake Portal"
- Default Workflow: "Patient Intake"
- Visit the site URL to test the intake flow
Option B: SMS
- Go to Channels > Phone Numbers
- Set up a phone number with SMS enabled
- Set the Default Workflow to "Patient Intake"
- Patients text the number to begin intake
Option C: Email
- Go to Channels > Inboxes
- Create an inbox with the Default Workflow set to "Patient Intake"
- Patients email to begin intake
See the Channels guide for more setup options.
Step 4: Set Up Pre-Visit Automation
Automatically start the intake process before a patient's appointment.
- Go to Events and click New Event
- Configure:
- Schedule Type: CRON
- CRON Expression:
0 10 * * *(daily at 10 AM) - Targeting: Member Filter — filter for members with appointments in the next 3-7 days who haven't completed intake
- Create a Send SMS action:
- Message: "Hi {{member.first_name}}, your appointment is coming up! Complete your intake now to save time at your visit. Reply START to begin."
- Attach the action and activate the event
Step 5: Add Completion Notifications
Notify your team when a patient completes intake so they can review the information.
- Go to Actions and click New Action
- Configure:
- Trigger: Task Entered, targeting the "Review & Confirm" task
- Action Type: Member Notify
- Recipients: Your front desk or clinical team
- Message: "{{member.name}} has completed patient intake for their upcoming visit."
Optionally, add a Send Webhook action to push the data to your practice management system.
Confirm the Result
-
Walk through the intake. Open the site you created and complete the intake as a test patient. Verify the conversation flows naturally from demographics through medical history.
-
Check the form data. Go to Knowledge > Forms and open each form. Verify that records were created with the data you provided.
-
Test edge cases. Try the intake again with variations:
- Skip optional fields
- Provide multiple pieces of information in a single message
- Ask the agent a question mid-intake
- Say you don't have insurance
-
Verify notifications. Confirm that team notifications fire when a patient reaches the Review & Confirm task.
If the AI isn't collecting data correctly, review the form prompts and task prompts. Clear, specific prompts produce the best results.
What's Next
- Add consent forms. Create a Yes/No form for patient consent (HIPAA acknowledgment, treatment consent) and add a task before Review & Confirm.
- Support multiple languages. Configure your agent with multilingual instructions or create separate workflows per language. Use the Preferred Language field to route patients appropriately.
- Track completion rates. Use Labels to tag members as "Intake Complete" when they finish, then filter your member list to see who still needs to complete intake.
- Connect to your EHR. Push completed intake data to your electronic health record system using webhooks or an MCP Server integration. See the Connect to Your EHR tutorial for details.
Related Resources
Send an HTML Email Campaign with AI-Powered Reply Handling
Build a complete email campaign with personalized HTML emails and AI-powered reply handling.
Build Your First Workflow — Appointment Reminder
Create an automated appointment reminder workflow that contacts members via SMS and handles rescheduling requests.
Build an AI-Powered Knowledge Base from Your Document Library
Upload a document library, enable semantic indexing, and configure your AI agent to search and reference the content during conversations.
All Guides
Browse all available guides