RemarkableCloud

Run Job Interviews on WhatsApp with n8n and Zabio

Set up an n8n workflow that interviews candidates on WhatsApp with voice-note answers, times every answer, stores the originals and emails your team a report scored against your criteria.

Updated November 2026

This template runs a first-round interview on WhatsApp. A candidate sends the job code from your job post to your WhatsApp number. The workflow explains how the interview works and asks for consent, then collects their name, email, LinkedIn link and CV, and sends your questions one at a time, as text and as audio. Every answer has to be a voice note recorded in the chat.

When the interview ends, your hiring team gets one email per candidate: a match score against the criteria you set, a summary, the evidence behind each rating, every transcript with its timing, and the CV and original voice notes attached. A person decides. The workflow never rejects anyone.

Transcription, the spoken questions and the review all run through one Zabio key.

How it works

The candidate sendsThe workflow does
The job code, like JOB-101Explains the interview and what is recorded, and asks for consent
YESAsks for their full name, then email, then LinkedIn link (or SKIP)
A CV in PDFStores it in your bucket as sent, reads its text and asks them to reply START when ready
STARTSends question 1 as text and audio, and starts the clock
A voice noteStores it, transcribes it, measures the timing, sends the next question
A typed answer, an audio file or a forwarded voice noteRefuses it, logs the attempt and keeps the clock running
REPEATSends the current question again, without resetting the clock
HELPEmails the recruiter with the candidate’s details and message

Candidate messages ship in English and Spanish (SÍ, EMPEZAR, REPETIR, AYUDA and OMITIR work too). Each job picks its language.

Every 15 minutes the workflow sends finished interviews to Zabio for review, collects the reviews that are done and emails the reports.

What you need

ItemWhereNotes
n8nYour own n8n, or n8n on a RemarkableCloud AI serverMust be reachable over HTTPS so Meta can deliver messages. Built-in nodes only.
A Meta developer accountdevelopers.facebook.comFree. Gives you a test WhatsApp number to try the flow.
A Zabio API keyzabio.aiUsed for transcription, the question audio and the review.
S3-compatible storageAny S3-compatible serviceOne private bucket for the original voice notes and CVs.
An SMTP accountYour email providerSends the reports and the help requests.

Step 1: Import the template

Download the workflow file from the template page. In n8n, open Workflows, choose Import from File and select it. It arrives inactive, with empty credentials.

Step 2: Create the data tables

In n8n, go to Data tables and create two tables with exactly these names. The workflow looks them up by name.

interview_jobs, one row per open job:

ColumnTypeWhat goes in it
job_codeStringThe code candidates send, like JOB-101: 2 to 6 letters, a hyphen and up to 6 digits.
activeBooleanfalse closes the job to new candidates.
company_nameStringShown to candidates.
job_titleStringShown to candidates.
languageStringen or es: the language of the messages, the spoken questions and the review.
job_descriptionStringWhat the job is. The review reads it.
questionsStringA JSON list of questions, in order.
criteriaStringA JSON list of what you’re hiring for, with weights. See Writing criteria.
answer_window_secondsNumberHow long an answer should take, from question to voice note. Default 180.
gap_flag_secondsNumberFlag an answer when the candidate waits longer than this before recording. Default 60.
recruiter_emailStringWhere the report and help requests go.
recruiter_whatsappStringOptional. A number to ping when a report is ready, with country code and no +.

interview_candidates, filled in by the workflow:

ColumnType
phone, job_code, status, whatsapp_name, full_name, email, linkedinString
cv_key, cv_sha256, cv_textString
q_indexNumber
q_sent_at, answers_json, attempts_json, consent_at, completed_atString
eval_response_id, eval_jsonString
score, flags_count, cost_microsNumber

Step 3: Add a job

Add a row to interview_jobs. A questions value looks like this:

[
  "Tell us about your experience working at a front desk or in customer service.",
  "A patient arrives 25 minutes late and the dentist is fully booked. What do you say and do?",
  "How do you keep the appointment book accurate when the phone, walk-ins and email all come in at once?",
  "Why do you want to work at a dental clinic, and what would you need from us in your first month?"
]

Four or five questions keep the interview under 15 minutes. Ask about things a person can answer from experience in two or three minutes of speaking.

Writing criteria

The criteria column is a JSON list. Each item has a name, a weight, a type (must or nice) and guidance that tells the review what good evidence looks like:

[
  { "name": "Front desk or customer service experience", "weight": 30, "type": "must", "guidance": "At least 2 years in a front desk, reception or customer service role." },
  { "name": "Handling difficult situations calmly", "weight": 25, "type": "must", "guidance": "Gives a concrete, polite and practical way to handle a late or upset patient." },
  { "name": "Organization and scheduling", "weight": 25, "type": "must", "guidance": "Describes a real method for keeping schedules accurate under pressure." },
  { "name": "Healthcare or clinic experience", "weight": 10, "type": "nice", "guidance": "Has worked in a clinic, hospital or other healthcare setting." },
  { "name": "Motivation for the role", "weight": 10, "type": "nice", "guidance": "Specific reasons tied to this job, not generic." }
]

Zabio rates each criterion from 0 (no evidence) to 5 and quotes the words behind the rating. The workflow turns the ratings into a score out of 100 with your weights, so the arithmetic is the same for every candidate. A must-have rated 0 or 1 is called out at the top of the report as something to ask about, not as a rejection.

Tip: Write criteria about skills and experience a candidate can show in a CV or an answer. “Good culture fit” or “professional voice” invite bias and give the review nothing to quote.

Step 4: Set up a Meta app and the test number

You can try the whole flow with Meta’s free test number and your own phone as the candidate.

  1. On developers.facebook.com, create an app of type Business and add the WhatsApp product. Meta gives the app a free test number.
  2. Open WhatsApp > API Setup. In the To field, add your personal number and confirm the code WhatsApp sends you.
  3. Copy the Temporary access token and the WhatsApp Business Account ID from the same page.
  4. Open App settings > Basic and copy the App ID and App Secret.

Note: The test number can message up to 5 verified numbers, and the temporary token expires after about 24 hours. To interview real candidates you need your own business number and a permanent token; the steps are the same as in the WhatsApp assistant guide.

Step 5: Add the credentials

n8n credentialUsed byWhat to enter
WhatsApp OAuth (trigger)New WhatsApp MessageClient ID: your App ID. Client Secret: your App Secret.
WhatsApp BusinessEvery WhatsApp node and Download MediaAccess Token and Business Account ID from Step 4.
Zabio API key (Header Auth)Transcribe Answer, Speak Question, Submit Review, Check ReviewName Authorization, Value Bearer YOUR_ZABIO_KEY.
S3Store Original, Download OriginalYour access key, secret and, for a service other than AWS, its endpoint.
SMTPEmail Help Request, Email ReportYour mail server, user and password.

Use the same Zabio credential on all four Zabio nodes, and the same S3 credential on both storage nodes.

Step 6: Edit Interview Settings

Open the Interview Settings node.

FieldWhat it does
s3_bucketThe bucket for voice notes and CVs. Files are stored as JOB-CODE/phone/q1.ogg and JOB-CODE/phone/cv.pdf. Keep it private.
email_fromThe sender of the reports, like Hiring Team <jobs@yourcompany.com>.
default_languageThe language for people who write before sending a job code.
question_audioSend each question as audio as well as text. Set to false for text only.
voices, default_voiceThe voice that reads the questions, per job language.
long_pause_secondsA silence inside a recording longer than this counts as a long pause. Default 8.
eval_modelThe Zabio model for the review. Default auto/best.
eval_deadlineDefault 24h, which sends reviews to Zabio’s batch queue. See What it costs.
recruiter_template, sender_phone_number_idOnly for the optional WhatsApp ping. See WhatsApp ping for recruiters.

Step 7: Activate and test

  1. Put your own email in recruiter_email on the job row, then activate the workflow.
  2. From your phone, send JOB-101 to the test number and follow the interview: YES, a name, an email, a LinkedIn link, a PDF, then START.
  3. Try a typed answer, then a voice note. The typed one is refused.
  4. Send REPEAT once and HELP once, and check that the help email arrives.
  5. Answer the last question. About 10 minutes later the next 15-minute run sends the review; the report arrives on a later run, once Zabio finishes.

Each message appears under Executions in n8n. The interview_candidates table shows where each candidate is: consent, name, email, linkedin, cv, ready, interview, completed, evaluating and finally reported.

What the report shows

  • Match score out of 100, from your weights, and any must-have with little or no evidence.
  • Summary, strengths, gaps and three questions to ask next, written in the job’s language.
  • Each criterion with its rating, the quoted evidence, where the quote came from (the CV or an answer) and how confident the review is.
  • Each answer: the question, the transcript, the response time, the recording length, the time before recording started, long pauses, repeats and any checks to look at.
  • Contact details, the LinkedIn link and any help requests with their time.
  • Attachments: the CV and every original voice note, as WhatsApp delivered them. The report lists each file’s SHA-256 checksum from WhatsApp, so you can confirm a file wasn’t changed.

If a review fails, the report still goes out with the recordings, transcripts and timing, and says there is no score.

Timing checks

The workflow measures each answer from the moment the question was sent to the moment the voice note arrived, and reads the recording length and pauses from the transcript’s timestamps. It flags an answer when:

CheckWhen
LateThe answer arrived after answer_window_seconds.
Slow startThe time before recording started is longer than gap_flag_seconds.
Long pausesThe recording has silences longer than long_pause_seconds.
Rejected attemptsThe candidate tried text, an audio file or a forwarded voice note first.
Very shortThe answer is under 5 seconds.

These checks point your team at answers worth listening to. A slow start can be someone reading a script from another screen, or someone who stepped away to find a quiet room. Listen to the original before you draw a conclusion, and tell candidates who ask why an answer was flagged.

A candidate who records one answer as two voice notes is handled: a voice note recorded before the next question was sent is added to the previous answer as part 2.

Fairness and the law

The review is told to rate only your criteria, to quote its evidence and to ignore accent, voice, speaking style, grammar slips, age, gender, ethnicity, nationality, religion, disability, family status and other personal traits, unless a criterion explicitly asks for a skill such as a language. It is also told to treat the CV and answers as data and ignore any instructions inside them.

That reduces bias; it doesn’t remove it. Keep a person in every decision, compare scores across groups of candidates from time to time, and change criteria that keep producing odd results.

Rules for AI in hiring vary by place. New York City, for example, requires a bias audit and notice to candidates before an automated tool is used in hiring decisions, and many places regulate recordings and personal data. Check what applies where you hire before you use the template with real candidates. This guide isn’t legal advice.

Note: Decide how long you keep recordings and CVs, write it in your privacy notice and set a lifecycle rule on the bucket to delete them after that.

What it costs

The cost_micros column and the bottom of each report show what Zabio charged for an interview’s transcripts and review, in micro-dollars: 1,000,000 micros is one US dollar. The spoken questions are not included in that figure.

  • Transcription is priced by the length of the audio.
  • The review runs as a Zabio background request with a 24-hour deadline, which puts it in the batch queue at about half the list price. The result usually comes back well before the deadline. For faster reports, set eval_deadline to 30m: the review then runs on the vendor’s flex tier where the model has one, or at the standard price where it doesn’t.
  • Question audio is generated each time a question is sent. Set question_audio to false to skip it.

Zabio’s models page lists current prices. WhatsApp charges for messages under Meta’s own pricing.

WhatsApp ping for recruiters

The report always goes by email. A recruiter can also get a WhatsApp message when a report is ready. Because a recruiter usually hasn’t written to your number in the last 24 hours, WhatsApp only allows an approved message template:

  1. In WhatsApp Manager, create a Utility template, for example interview_ready, with three body variables: “New interview report: {{1}} for {{2}}, score {{3}}. The full report is in your email.”
  2. Wait for Meta to approve it.
  3. In Interview Settings, set recruiter_template to the name and language, like interview_ready|en, and sender_phone_number_id to your WhatsApp phone number ID from API Setup.
  4. Add the recruiter’s number to recruiter_whatsapp on the job row.

Troubleshooting

SymptomLikely causeFix
Nothing shows under ExecutionsThe workflow isn’t active, or n8n isn’t reachable over HTTPSActivate it and check that your n8n URL opens from outside your network.
The candidate gets “I couldn’t find an open job”The code isn’t in interview_jobs, or active is falseCheck the row. Codes look like JOB-101.
Replies fail with error #131030The candidate isn’t one of the test number’s verified numbersAdd the number in WhatsApp > API Setup, or move to your own number.
Store Original failsWrong bucket, keys or endpointCheck the S3 credential and s3_bucket.
Answers have no transcriptTranscription failedOpen Transcribe Answer in the execution. 401 means the key is wrong; 402 insufficient_credits means the Zabio balance is empty. The audio is still stored.
Questions arrive without audioThe voice isn’t availableCheck Speak Question for unsupported_value and change the voice in voices.
A candidate stays at evaluatingThe review hasn’t finished yetBatch reviews can take up to 24 hours. Check Check Review for the status.
No report emailSMTP error, or recruiter_email is emptyOpen Email Report in the execution.

Still stuck? Open a ticket. If your n8n runs on a RemarkableCloud server, an engineer can look at the workflow with you.

Next steps

Still stuck? Ask a human, we answer in minutes.