Most clinic intake forms end up in a filing cabinet or a digital folder, collecting dust until the patient's appointment arrives. The data is there, allergies, medications, medical history, current symptoms, but it's never used to prepare the patient meaningfully for their visit. Worse, patients often don't absorb the generic educational materials sent to them by post or email. They arrive at their appointment unprepared, which wastes clinical time and produces poorer health outcomes. What if you could transform that intake data automatically into a personalised education video, delivered to the patient within hours of form submission? The patient watches a video tailored to their specific conditions and concerns, narrated by a realistic AI voice, before they ever step into the clinic. They arrive informed, engaged, and ready to discuss their care. The clinic saves time and improves patient outcomes. This workflow exists today, and it requires no manual handoff between tools. The chain is straightforward. A patient submits an intake form (PDF or web form). That document gets parsed by an AI that reads and understands it. A second AI generates personalised educational content based on what the form revealed. A third AI converts that text into a natural-sounding narration. A fourth AI wraps that narration into a video with a virtual presenter. An orchestration layer connects all four tools so that the moment a form arrives, everything triggers automatically.
The Automated Workflow
Use n8n for this workflow. It's cheaper than Zapier, allows more complex conditional logic than Make, and doesn't require you to write code (though Claude Code can help if you want custom nodes). The workflow has five steps: form intake, PDF parsing, content generation, audio synthesis, and video production.
Step 1: Form submission trigger
Set up a webhook in n8n that listens for form submissions. Most clinic management systems (Athena, Epic, SimplePractice) can send webhooks. If they don't, use a Google Form or Typeform as the intake entry point and configure n8n to watch for responses.
POST /webhook/clinic-intake
Content-Type: application/json { "patient_name": "Jane Doe", "date_of_birth": "1985-06-15", "conditions": ["Type 2 diabetes", "hypertension"], "medications": ["Metformin 1000mg", "Lisinopril 20mg"], "symptoms": "fatigue, occasional headaches", "form_pdf_url": "https://clinic.example.com/intake/patient-12345.pdf"
}
Step 2: Extract structured data from the intake PDF
Use Chat With PDF by Copilot.us to parse the intake form. Create a prompt that asks the AI to extract key patient information and write a summary of their health status. This runs inside n8n using an HTTP POST request to the Copilot.us API.
POST https://api.copilot.us/pdf/analyse
Authorization: Bearer YOUR_COPILOT_API_KEY
Content-Type: application/json { "pdf_url": "https://clinic.example.com/intake/patient-12345.pdf", "prompt": "Extract the patient's name, date of birth, listed conditions, current medications, and chief complaint. Then write a 2-3 sentence summary of their overall health status based on this intake form.", "model": "gpt-4o"
}
The API returns structured JSON with the patient's extracted data and a health summary. Store this in n8n as variables for the next steps.
Step 3: Generate personalised educational content
Pass the extracted data to Claude Opus 4.6 (via the Anthropic API) to generate educational content tailored to the patient's conditions. The prompt should ask Claude to write a short educational script (300-500 words) that addresses the patient's specific diagnoses and concerns.
POST https://api.anthropic.com/v1/messages
Authorization: Bearer YOUR_ANTHROPIC_API_KEY
Content-Type: application/json { "model": "claude-opus-4.6", "max_tokens": 1024, "messages": [ { "role": "user", "content": "Write a 400-word educational script for a patient with Type 2 diabetes and hypertension. The patient reports fatigue and occasional headaches. The script should explain the connection between their conditions, why medication compliance matters, and what lifestyle changes can help. Write it as if you're speaking directly to the patient in a friendly, clear tone. Avoid jargon." } ]
}
Store the returned text as a variable in n8n.
Step 4: Convert script to audio
Send the generated script to ElevenLabs Turbo v2.5 to synthesise a natural-sounding voice. Request a voice profile that sounds professional but approachable, and set a moderate speech rate so the patient can follow along easily.
POST https://api.elevenlabs.io/v1/text-to-speech/YOUR_VOICE_ID
Authorization: Bearer YOUR_ELEVENLABS_API_KEY
Content-Type: application/json { "text": "[Script from previous step]", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75, "use_speaker_boost": true }, "language_code": "en-GB"
}
The API returns an audio file (MP3 or WAV). Download it and store the file URL in n8n.
Step 5: Generate video with virtual presenter
Post the audio file and the original educational script to Hour One to create a video. Hour One will animate a virtual presenter speaking the narration and compile it into a finished MP4.
POST https://api.hourone.com/api/videos
Authorization: Bearer YOUR_HOURONE_API_KEY
Content-Type: application/json { "presenter_id": "presenter_001", "audio_url": "[Audio file URL from ElevenLabs]", "script": "[Original educational script text]", "background": "medical_office", "video_format": "1920x1080", "language": "en-GB"
}
Hour One returns a job ID. Poll the job status endpoint every 30 seconds until the video is ready, then capture the video URL.
Step 6: Notify the patient and clinic staff
Once the video is ready, send an email to the patient with a link to watch it, along with a reminder to review it before their appointment. Send a separate notification to clinic staff with a link to the patient's video and extracted intake summary, so they can review it before the appointment starts.
POST https://api.sendgrid.com/v3/mail/send
Authorization: Bearer YOUR_SENDGRID_API_KEY
Content-Type: application/json { "personalizations": [ { "to": [{"email": "patient@example.com"}], "subject": "Your Pre-Appointment Education Video is Ready" } ], "from": {"email": "clinic@example.com"}, "content": [ { "type": "text/html", "value": "Dear [Patient Name], <br><br>We've prepared a personalised education video to help you prepare for your appointment. Please watch it here: [Video URL]. <br><br>See you soon!" } ]
}
Set up a parallel n8n workflow step (using a conditional node) that sends the clinic staff notification to your clinical admin email address. The entire workflow, from intake PDF to patient email with finished video, should complete in 5-10 minutes, depending on video rendering time at Hour One.
The Manual Alternative
If you prefer to maintain control at each step, you can run this workflow manually. Extract data from the intake PDF yourself using Chat With PDF (5 minutes). Write the educational script manually or use Claude directly via the web interface (10-15 minutes). Paste the script into ElevenLabs's web interface to generate audio (2 minutes). Upload the audio to Hour One and create the video using their web dashboard (3-5 minutes). Email the video link to the patient (1 minute). Total time: 20-30 minutes per patient. This is reasonable if you have 5-10 intakes per week, but it becomes impractical at scale.
Pro Tips
Set up error handling for video rendering failures.
Hour One occasionally fails to render videos if the audio is too long or the script contains certain characters.
Add a try-catch block in n8n that retries the video generation request up to three times before notifying staff that manual intervention is needed. Store failed requests in a dedicated Airtable base so you can review them later.
Batch process during off-peak hours.
If your clinic receives intake forms throughout the day, configure n8n to queue them and process them in batches between 6 PM and 10 PM when your internet bandwidth is less contested. This reduces latency for video rendering and keeps your costs predictable.
Personalise the presenter appearance.
Hour One supports custom presenter avatars. Spend 30 minutes creating a branded presenter that matches your clinic's tone and then reuse it for all videos. This builds brand consistency and patient trust.
Monitor API rate limits closely.
Both ElevenLabs and Hour One have rate limits. ElevenLabs allows 10,000 characters per month on free plans; pro plans offer 100,000 characters monthly. For a clinic processing 50 intakes per month with 400-word scripts, budget at least 20,000 characters. Hour One limits you to 10 video renders per day on basic plans. If you expect more than 10 intakes per day, upgrade or stagger processing.
Cache generated content for common conditions.
If you're treating many patients with the same diagnosis (e.g. pre-operative knee surgery education), generate the educational script once and reuse it for all patients with minor personalisation (just inserting their name and date). Store these templates in a private Airtable base and reference them in your n8n workflow to save API calls and cost.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Cloud Pro | £20 | Includes 200,000 executions per month; most workflows use fewer than 100 |
| Chat With PDF by Copilot.us | Pay-as-you-go | £10–30 | Roughly £0.10–0.25 per PDF analysis depending on document length |
| Claude Opus 4.6 (Anthropic) | Pay-as-you-go | £15–40 | Roughly £0.015 per 1K input tokens; educational script generation uses 500–1000 tokens per patient |
| ElevenLabs Turbo v2.5 | Professional | £99 | Includes 100,000 characters per month; covers 50–100 clinic intakes |
| Hour One | Pro | £99 | Includes 10 video renders per month; upgrade to Business (£399/month) for 100 renders per month |
| SendGrid (email notification) | Free tier | £0 | Free up to 100 emails per day; paid plans start at £20/month for higher volume |
| Total (50 intakes per month) | £243–288 | Assumes clinic processes one intake per business day |