Back to Alchemy
Alchemy RecipeIntermediateautomation

Healthcare clinic intake forms to personalised patient education videos

Most primary care clinics still process patient intake forms by hand. A receptionist transcribes handwritten responses into an electronic health record; a nurse might print educational materials that half the patients won't read; clinicians repeat the same explanations about medication adherence or post-operative care dozens of times each week. The friction is real, and it compounds: incomplete intake data leads to longer appointments, patient education happens as an afterthought if at all, and follow-up reinforcement rarely occurs because nobody has the bandwidth to personalise it. There is a better way. By combining a HIPAA-compliant AI scribe, an automated video generation system, and a text-to-speech engine, you can turn a patient's intake form into a personalised educational video delivered via SMS or email before they even leave the clinic car park. No manual steps. No administrative overhead beyond initial setup. One workflow does the work of three staff members. This post walks through a real implementation using Freed AI for intake transcription, Hour One for video generation, and ElevenLabs for synthetic narration, orchestrated via n8n. If you prefer Zapier or Make, the logic translates directly; I have chosen n8n because it gives you fine-grained control over authentication and webhook timing without hitting rate limits.

The Automated Workflow

The workflow begins when a clinic staff member opens Freed AI during or after a patient consultation. Freed AI transcribes the appointment and extracts structured data from the conversation: chief complaint, medications, allergies, patient education topics discussed, and any specific follow-up instructions. This extracted JSON payload is sent via webhook to your n8n instance. n8n receives the webhook, parses the patient data, and triggers a prompt to Claude Sonnet 4.6. Claude generates a personalised educational script tailored to the patient's conditions, medications, and learning level. The output is plain text: a 2-3 minute narration script written in conversational language appropriate for the patient's age and health literacy. Next, that script flows into Hour One's API. Hour One renders the script as a video with a virtual presenter, customised to match your clinic's branding. Hour One returns a video URL when the render completes (this can take 2-5 minutes, so n8n waits asynchronously). Finally, ElevenLabs Turbo v2.5 generates an MP3 audio track from the same script, and n8n bundles the video URL and audio file link into a delivery message sent to the patient via Twilio SMS or your clinic's patient portal API. Let me show you the specific setup.

Step 1: Set up Freed AI webhook

In Freed AI's settings, configure a webhook endpoint pointing to your n8n instance:

POST https://your-n8n-instance.com/webhook/freed-ai-intake

Freed AI will POST a payload like this whenever a consultation is logged:

json
{ "patient_id": "CLI-00456", "patient_name": "Sarah Mitchell", "age": 52, "chief_complaint": "Type 2 diabetes follow-up, foot pain", "medications": [ "Metformin 1000mg twice daily", "Lisinopril 10mg once daily" ], "allergies": ["Penicillin"], "education_topics": [ "Foot care for diabetics", "Blood sugar monitoring at home" ], "visit_notes": "Patient reports increasing foot discomfort over 3 weeks. Neuropathy suspected. Discussed importance of daily foot inspection and proper footwear."
}

Step 2: Configure n8n workflow

Create a new workflow in n8n with these nodes: 1. Webhook trigger (receives Freed AI POST) 2. JSON parser (cleans the incoming data) 3. Claude Sonnet 4.6 node (generates the educational script) 4. Hour One node (renders video) 5. ElevenLabs Turbo v2.5 node (generates audio) 6. Twilio SMS node (delivers to patient) The Claude prompt should be specific:

You are writing a personalised patient education script for {{ $json.patient_name }}, a {{ $json.age }}-year-old patient. Chief complaint: {{ $json.chief_complaint }}
Current medications: {{ $json.medications.join(', ') }}
Topics discussed: {{ $json.education_topics.join(', ') }}
Visit notes: {{ $json.visit_notes }} Write a 2-3 minute conversational script (approximately 300-400 words) that reinforces what was discussed today. Use simple language. Include one actionable step the patient should take this week. Do not include medical jargon. Write as if you are speaking directly to the patient in a warm, encouraging tone. Output only the script text. No headers, no stage directions.

Step 3: Wire the Claude output to Hour One

In the Hour One node, map the Claude output to the script parameter:

POST https://api.hourone.ai/videos/create
{ "script": "{{ $json.script_text }}", "presenter_id": "prof_001", "background": "clinic_branded", "language": "en-GB", "voice_style": "professional_warm", "duration_target_seconds": 180
}

Set n8n to wait for the video_url response. Hour One's API includes a status field; configure n8n to poll until status is "completed" (max 5-minute wait).

Step 4: Parallel audio generation

Whilst Hour One is rendering, also send the same script to ElevenLabs. Use the ElevenLabs Turbo v2.5 API with a professional UK English voice:

POST https://api.elevenlabs.io/v1/text-to-speech/{{ voice_id }}
{ "text": "{{ $json.script_text }}", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }
}

Store the resulting MP3 URL in a variable.

Step 5: Deliver to patient

Once both Hour One and ElevenLabs complete, compose a delivery message. If your clinic uses a patient portal, integrate directly; otherwise, use Twilio to send an SMS with a secure link:

POST https://api.twilio.com/2010-04-01/Accounts/{{ env.TWILIO_ACCOUNT_SID }}/Messages
{ "From": "{{ env.CLINIC_TWILIO_NUMBER }}", "To": "{{ $json.patient_phone }}", "Body": "Hi {{ $json.patient_name }}, your personalised education video is ready. Watch it here: {{ $json.video_url }}. Questions? Reply to this message."
}

Optional: Include the audio file as a downloadable link for accessibility.

Authentication and security

Store all API keys in n8n environment variables, not in the workflow itself. Each node should authenticate using OAuth 2.0 where available (Freed AI, Hour One, ElevenLabs all support this). Ensure HIPAA encryption in transit and at rest; use n8n's credential manager to rotate keys quarterly.

The Manual Alternative

If you prefer not to automate the full pipeline, you can stop at the Claude script generation and ask a staff member to manually upload the script to Hour One and trigger ElevenLabs. This takes about 10 minutes per patient instead of two minutes end-to-end, but it still removes the burden of writing educational content from scratch. Alternatively, use Hour One's dashboard to generate videos directly without orchestration; you lose the personalisation benefit and still require manual steps.

Pro Tips

Asynchronous rendering

Hour One's video rendering can take 2-5 minutes.

Use n8n's "Wait" node to pause the workflow until the render completes, rather than polling the API every 10 seconds. This reduces API calls and costs. Configure the wait time based on your typical video complexity.

Rate limiting and costs

ElevenLabs charges per character. A 400-word script costs roughly 800 credits (about $0.06 at standard rates). Hour One charges per render, approximately $0.50 per video. If you process 50 patients a week, you are looking at $30-$50 in video costs alone. Consider batch processing videos during low-traffic hours (e.g. 5pm to 8pm) when clinic staff can trigger workflows without impacting real-time appointment flow.

Fallback for Freed AI transcription errors

Not every appointment will generate perfect structured data. If Freed AI's JSON extraction fails, your Claude prompt should still work from raw visit notes, but the personalisation will be weaker. Log failures to a Slack channel so staff can review and manually supplement high-risk cases (e.g. patients with complex comorbidities).

Audio accessibility

Always include the ElevenLabs audio track alongside the video. Some patients prefer audio-only; others need captions. Hour One supports burnt-in captions; enable them to ensure compliance with accessibility standards.

Test with a pilot cohort

Before rolling out to all patients, run 20-30 workflows through the system. Monitor Claude's script quality, Hour One's video output, and ElevenLabs audio clarity. Ask staff to review a sample of videos and adjust the Claude prompt based on their feedback.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
Freed AIPro (includes webhook)$600Includes 500 transcriptions/month; overage $1.50 per transcription
Hour OneCreator (100 videos/month)$400Each video ~$0.50; higher volume plans available
ElevenLabsProfessional (500k characters/month)$99Turbo v2.5 included; includes 2 custom voices
n8nCloud Pro$50Supports 200+ workflows; adequate for clinic scale
Twilio SMSUsage-based$0.01 per SMSClinic with 50 patients/week = ~$2/month
Total~$1,150/monthScales with patient volume; includes staff time savings