Transcribe recruiting interviews into Ashby notes with speaker labels
Every weekday at 8am, turn yesterday's interview recordings into structured Ashby candidate notes with interviewer and candidate turns clearly labeled.
Every weekday at 8am ET, sweep our designated "Recruiting interviews" folder in Google Drive for interview recordings that were uploaded in the last 24 hours, transcribe each one with speaker labels using AssemblyAI, write a structured interview note for the candidate, and post that note onto their Ashby profile. Skip recordings I have already processed, and if no Ashby candidate matches with reasonable confidence, leave a note in a fallback Google Doc instead of guessing.
Trigger: a cron schedule that runs every weekday at 8am America/New_York.
Step 1, find new recordings in Drive. Use the Google Drive List Files action scoped to a configurable folder ID for the "Recruiting interviews" folder, filtered by createdTime greater than 24 hours ago and trashed = false. Treat each returned audio or video file as a candidate recording (mp3, m4a, wav, mp4, mov, etc.).
Step 2, parse candidate identity. For each file, derive a candidate name from the filename first (strip dates, stage labels, and file extensions), then fall back to the parent folder name if the filename is generic. Pass that name to Ashby Search Candidates. If multiple candidates come back, prefer an exact name match; if still ambiguous, treat it as no confident match.
Step 3, skip already-processed recordings. Before transcribing, call Ashby List Candidate Notes for the matched candidate and check whether any existing note body already references this filename. If yes, skip the file entirely.
Step 4, transcribe with speaker diarization. Download the file bytes with Google Drive Download File Content, then push the bytes to AssemblyAI Upload Audio File to get a private upload URL. Call AssemblyAI Submit Transcript with that audio_url and speaker_labels set to true. Poll AssemblyAI Get Transcript until status is completed or error. On error, log the failure and move on to the next file.
Step 5, write the interview note. Using the speaker-labeled transcript, draft a structured HTML note that covers: a one-line summary of the candidate and the role, key strengths with supporting evidence, concerns or red flags, two or three notable verbatim quotes attributed to the candidate, answers to important technical or behavioral questions if the transcript reveals them, and a recommended next step (advance, hold, reject, or follow up on specific topics). Include the source filename at the bottom of the note so future runs can detect duplicates.
Step 6, file the note in Ashby. Call Ashby Create Candidate Note with the candidate ID and the HTML body. Then call Ashby Add Candidate Tag with a configurable tag (default "Interview transcribed") so recruiters can see at a glance which candidates already have an AI write-up.
Step 7, fallback for unmatched recordings. If Search Candidates returns no confident match, do NOT create or invent a candidate. Instead, append a short entry into a configurable fallback Google Doc using Google Docs Batch Update Document. The entry should include the filename, a one-paragraph summary of what the recording is about, and the date, so a recruiter can route it manually.
Configuration the workflow should expose: the Drive folder ID for recruiting interviews, the lookback window in hours (default 24), the timezone for the cron, the Ashby tag name, the fallback Google Doc ID, and an optional list of role-specific guidance the agent can weave into the note (for example, "emphasize systems design depth for senior engineering interviews").
Quality rules: never guess a candidate match, never overwrite existing recruiter notes, always include the filename in the note body for dedupe, and always wait for AssemblyAI status to be completed before composing the note.
Additional information
What does this prompt do?
- Watches a recruiting interviews folder in Google Drive each morning for recordings uploaded in the last day.
- Transcribes each new recording with speaker labels so interviewer and candidate turns are clearly separated.
- Matches the recording to the right Ashby candidate using the filename or parent folder name.
- Writes a structured interview note covering strengths, concerns, notable quotes, key answers, and a recommended next step.
- Posts the note onto the candidate in Ashby and tags the profile so recruiters can see at a glance which interviews are already written up.
What do I need to use this?
- A Google Drive account with a dedicated folder where your team uploads interview recordings.
- An AssemblyAI account for speech-to-text transcription with speaker labels.
- An Ashby account where you track candidates and want the notes attached.
- A fallback Google Doc where the agent can park recordings that do not confidently match a candidate.
How can I customize it?
- Change which Drive folder is watched, the time of day it runs, and how far back to look for new recordings.
- Adjust what each interview note should cover, for example emphasizing culture fit, technical depth, or specific role competencies.
- Pick a different tag name, use multiple tags by stage, or turn tagging off if your recruiters prefer a different signal.
Frequently asked questions
Will this work for interviews of any length?
What if the candidate's name is not in the filename?
Will the same recording get processed twice?
Can I run this more often than once a day?
Does it overwrite existing recruiter notes?
Stop writing interview notes from memory.
Connect Google Drive, AssemblyAI, and Ashby once, and Geni transcribes and files every interview every morning.