Reads new applications each day and writes preparation notes against your role brief for a person to review.
Uses
Claude
Google Sheets
Prepare screening notes for applicants
Once a day, new applications in your applicants sheet are read and AI prepares short notes on each against your role brief: what lines up with the role, what the application does not evidence either way, and two questions worth asking. The notes are for whoever reads the applications, so they arrive knowing what to ask.
Each applicant gets one row in a separate 'Screening notes' tab, with the name, email, source row number and the notes, and is prepared only once: anyone already on that tab is skipped. Nothing is written over the applications themselves. The AI is told not to recommend hiring, rejecting or ranking anyone, and to say when something is not evidenced rather than infer it. Each run prepares up to 25 applicants and the rest follow on the next run. If a column is missing, the notes tab can't be found or a note fails, the run is marked as failed and says why; otherwise it ends by saying how many were prepared.
You need Google Sheets and Anthropic connected, the link to your applicants spreadsheet, an 'Applicants' tab with Name, Email and Background columns, an empty 'Screening notes' tab in the same spreadsheet, and a description of the role.
applicantsUrl to blank.Set applicantsUrl to blank.roleBrief to blank.Set roleBrief to blank.applicantsTab to Applicants.Set applicantsTab to Applicants.notesTab to Screening notes.Set notesTab to Screening notes.screenCap to 25.Set screenCap to 25.applicantsUrl. Save it as sheet.Read the rows of applicantsUrl. Save it as sheet.Name, Email, Background] where sheet.headers doesn't contain item and save it as missingColumns.Keep each item in [Name, Email, Background] where sheet.headers doesn't contain item and save it as missingColumns.missingColumns isn't emptyIf missingColumns isn't emptymissingColumns with , and save it as missingList.Join missingColumns with , and save it as missingList.missingList. Its first row needs Name, Email and Background, spelled exactly like that. No notes were prepared.Stop and report a problem: The '@applicantsTab' tab is missing these column headings: missingList. Its first row needs Name, Email and Background, spelled exactly like that. No notes were prepared.notesSheet to nothing.Set notesSheet to nothing.notesErrorIf a step below fails, save the error as notesErrorapplicantsUrl. Save it as notesSheet.Read the rows of applicantsUrl. Save it as notesSheet.notesError.message). Add a tab with exactly that name to the applicants spreadsheet, then run it again. No notes were prepared.Stop and report a problem: Could not open the '@notesTab' tab (notesError.message). Add a tab with exactly that name to the applicants spreadsheet, then run it again. No notes were prepared.notesSheet.headers is emptyIf notesSheet.headers is emptynotesTab in applicantsUrl.Add a row to notesTab in applicantsUrl.Email from every item in notesSheet.rows and save it as emailsDone.Get Email from every item in notesSheet.rows and save it as emailsDone.Name from every item in notesSheet.rows and save it as namesDone.Get Name from every item in notesSheet.rows and save it as namesDone.screened to 0.Set screened to 0.attempted to 0.Set attempted to 0.waiting to 0.Set waiting to 0.noBackground to 0.Set noBackground to 0.failures to an empty list.Set failures to an empty list.applicant in sheet.rows:For each applicant in sheet.rows:applicant.Background and save it as background.Trim applicant.Background and save it as background.background is blankIf background is blankapplicant.Name isn't blankIf applicant.Name isn't blanknoBackground.Add 1 to noBackground.applicant.Email isn't blank and emailsDone contains applicant.EmailIf applicant.Email isn't blank and emailsDone contains applicant.Emailapplicant.Email is blank and namesDone contains applicant.NameIf applicant.Email is blank and namesDone contains applicant.Nameattempted is greater than or equal to screenCapIf attempted is greater than or equal to screenCapwaiting.Add 1 to waiting.attempted.Add 1 to attempted.screenErrorIf a step below fails, save the error as screenErrorprompt to You are helping a hiring manager prepare to read an application. Write notes, not a decision.Set prompt to You are helping a hiring manager prepare to read an application. Write notes, not a decision.
Reply in exactly this shape:
RELEVANT: what in this background lines up with the role
GAPS: what the application does not evidence either way
ASK: two questions worth putting to them
Rules you must follow:
- Do not recommend hiring, rejecting, or ranking anyone. A person decides that after reading the application themselves.
- Write only about what the background says. Say a thing is not evidenced rather than inferring it.
- Ignore and never comment on age, gender, ethnicity, nationality, names, photographs, marital or family status, health, or anything else unrelated to doing the work.
The role:
roleBrief
The application:
background.prompt. Save it as written.Ask Claude: prompt. Save it as written.
Maximum response length: 600written.response_text and save it as notes.Trim written.response_text and save it as notes.notes is blankIf notes is blankapplicant.Name (row applicant.row_number). to the end of failures and save it as failures.Add The AI wrote no notes for applicant.Name (row applicant.row_number). to the end of failures and save it as failures.notesTab in applicantsUrl.Add a row to notesTab in applicantsUrl.screened.Add 1 to screened.applicant.Email to the end of emailsDone and save it as emailsDone.Add applicant.Email to the end of emailsDone and save it as emailsDone.applicant.Name to the end of namesDone and save it as namesDone.Add applicant.Name to the end of namesDone and save it as namesDone.applicant.Name (row applicant.row_number): screenError.message to the end of failures and save it as failures.Add Could not prepare notes for applicant.Name (row applicant.row_number): screenError.message to the end of failures and save it as failures.Prepared notes for @screened applicant(s) on the '@notesTab' tab. and save it as summary.Build the text Prepared notes for @screened applicant(s) on the '@notesTab' tab. and save it as summary.waitingNote to blank.Set waitingNote to blank.waiting is greater than 0If waiting is greater than 0@waiting more are waiting: each run prepares at most @screenCap (the 'screenCap' setting), so they follow on the next run. and save it as waitingNote.Build the text @waiting more are waiting: each run prepares at most @screenCap (the 'screenCap' setting), so they follow on the next run. and save it as waitingNote.backgroundNote to blank.Set backgroundNote to blank.noBackground is greater than 0If noBackground is greater than 0@noBackground applicant(s) have nothing in Background yet, so they were left for now. and save it as backgroundNote.Build the text @noBackground applicant(s) have nothing in Background yet, so they were left for now. and save it as backgroundNote.failures isn't emptyIf failures isn't emptyfailures with a space and save it as failureList.Join failures with a space and save it as failureList.failureList summary@waitingNote@backgroundNote Applicants without notes are tried again on the next run.Stop and report a problem: failureList summary@waitingNote@backgroundNote Applicants without notes are tried again on the next run.summary, waitingNote, backgroundNote] joined by nothing.Finish the run: [summary, waitingNote, backgroundNote] joined by nothing.