Spot likely AI-written applications in Greenhouse each morning

Every weekday morning, check new Greenhouse applications for AI-generated writing and send recruiters one Slack digest of who to read closely.

Agentic Task
PangramGreenhouseSlackHR & PeopleOperationsDaily DigestsAI Reports
PromptCreate

Every weekday at 8am, review the job applications that came into Greenhouse in the last 24 hours and tell my recruiting team which written materials look AI-generated, so they can spend their screening time on the candidates worth reading.

Start with Greenhouse List Applications, filtered to applications created since the previous run. On a normal weekday that is a 24 hour window; on Monday it should cover the whole weekend so nothing falls through. Keep active applications only. For each one, hold on to the job requisition it belongs to so I can group the digest by role later, and use Greenhouse Get Candidate to pull the candidate record. Do not re-score an application that was already scored on an earlier run.

From each candidate and their application, collect the free text the candidate actually wrote: the cover letter, and the answers to written screening questions. Resumes and structured fields are not in scope. Skip any single piece of text under about 50 words, because detection is unreliable at that length. If a candidate has nothing left after that filter, skip them entirely and count them as unscored.

Run each remaining piece of text through Pangram Detect AI-Generated Text. That operation is asynchronous: submit the text, then poll the task until it reports success or failure. Pangram returns fraction_ai, fraction_ai_assisted and fraction_human, which are mutually exclusive and sum to 1.0, plus segment-level windows with start_index and end_index. Those indexes point into the text Pangram returns, not the string I submitted, so slice the returned text when quoting. Use those windows to pull out the specific passages that scored as AI-written. Pace the calls to stay under Pangram's realtime limit of 5 requests per second, and if one text errors, skip it and carry on rather than failing the whole run.

Only surface a candidate when their highest-scoring piece of writing is at or above a configurable AI likelihood threshold. Default it to 0.70 fraction_ai and keep that number in one obvious place so it is easy to tune. Report fraction_ai_assisted alongside as context, but do not let it on its own put someone in the digest. The point of the threshold is to keep the digest short enough that people actually read it.

Post one digest to Slack with Send a Message to my recruiting channel, grouped by job requisition. Under each requisition heading, list every flagged candidate with their name, the AI likelihood as a percentage, which piece of writing it came from (cover letter, or the named screening question), one or two of the exact passages Pangram highlighted, quoted and trimmed to a couple of sentences, and a link to their Greenhouse profile. Open the message with a line stating plainly that these scores are a review signal for human judgement, not a rejection criterion, and that detection is not reliable enough to decide an outcome on its own. Close with a count of how many applications were below the threshold or too short to score. If nothing crosses the threshold, post a single short line saying the run finished with nothing flagged, so the team knows it ran.

For every flagged candidate, also use Greenhouse Add Candidate Note to log the score on their profile so it travels with them through the pipeline. Keep the note short: the likelihood, which document it came from, the date of the check, and the same one-line reminder that it is a review signal only. Greenhouse requires writes to be attributed to a real user, so resolve a Greenhouse user id once with List Users at the start of the run and reuse it for every note.

Critical business rule to bake in: this is a review signal, never an auto-reject. Do not change any candidate's status, do not advance anyone, do not reject anyone, and do not touch the application stage for any reason. The only write this workflow makes in Greenhouse is a note. Keep individual candidate scores to the recruiting channel and the candidate note, and nowhere else.

Example output

AI writing check for 13 Aug. 4 of 27 new applications crossed the 70% threshold. These scores are a review signal for human judgement, not a rejection criterion. Detection is not reliable enough to decide an outcome on its own. Senior Backend Engineer - Dana Whitfield, 94% likely AI (cover letter) "Throughout my career I have consistently leveraged cutting-edge technologies to drive impactful outcomes across cross-functional teams." View in Greenhouse - Marco Reyes, 81% likely AI (screening question: why this role?) "What excites me most about this opportunity is the chance to align my passion for innovation with a mission-driven organisation." View in Greenhouse Product Designer - Priya Nandakumar, 88% likely AI (cover letter) "In today's rapidly evolving digital landscape, user-centred design has never been more critical to business success." View in Greenhouse Customer Success Manager - Tom Alderton, 73% likely AI (screening question: hardest account save) "By leveraging a data-driven approach and fostering open communication, I was able to turn the relationship around." View in Greenhouse 23 applications were below the threshold or too short to score. No candidate statuses were changed.

What does this prompt do?

  • Every weekday at 8am, picks up every application that arrived in Greenhouse over the last 24 hours.
  • Runs each cover letter and written screening answer through Pangram to estimate how much of it reads as AI-generated, skipping answers too short to judge fairly.
  • Posts one Slack digest grouped by role, showing each flagged candidate's likelihood score, the exact passages that looked AI-written, and a link to their Greenhouse profile.
  • Logs the same score as a note on the candidate's Greenhouse profile so it travels with them, and never changes anyone's status. It orders your reading, it does not decide outcomes.

What do I need to use this?

  • A Greenhouse account with permission to read applications and candidates, and to add notes to a profile
  • A Pangram account on a plan that includes programmatic access
  • A Slack workspace and a channel where your recruiting team already talks
  • One Greenhouse user to credit the notes to, so your activity feeds show where they came from

How can I customize it?

  • Change the schedule or the lookback window if you screen twice a day, or only want this on Mondays.
  • Raise or lower the likelihood threshold that decides who makes the digest. Higher means a shorter, more confident list.
  • Adjust the minimum answer length, or point the digest at a different channel so each hiring team gets only its own roles.

FAQs

Will this reject candidates automatically?
No, and that is deliberate. The workflow never changes a candidate's status, never advances anyone, and never rejects anyone. The only thing it writes back to Greenhouse is a note. Every digest opens by saying the scores are for human judgement.
How accurate is AI detection, really?
Accurate enough to point attention, not accurate enough to decide an outcome. Detection tools produce false positives, and non-native English writers and heavily edited drafts can score higher than they should. Treat a flag as a reason to read the application carefully, never as evidence of anything on its own.
Why does it skip short answers?
Detection gets unreliable on very short text. Anything under roughly 50 words is skipped rather than scored badly, and you can change that cutoff if your screening questions run shorter or longer.
Do candidates see the AI score?
No. Greenhouse notes are internal to your team, and the digest goes to your own Slack channel. Nothing is sent to the applicant and nothing appears on their side.
Does it check take-home answers and screening questions, or just cover letters?
Both. It picks up the cover letter and any free-text answers captured on the application, which is where written work samples and screening responses usually live. Resumes and structured fields are left alone.

Related templates

Quality-check freelance drafts before an editor reads them

Every weekday morning, overnight writer submissions get checked for AI writing and copied text, so only the questionable ones reach your editor flagged.

Pangram
Google Drive
Google Docs
+1
Agentic Task
Monthly AI content audit for your WordPress library

Every month we scan a fresh slice of your published posts for machine-written content and build a prioritized cleanup list your team can actually work through.

Pangram
WordPress
Airtable
+1
Agentic Task
Screen Typeform survey answers for AI-generated responses

Every morning, new open-text survey answers get checked for AI writing and logged to a spreadsheet, with a Slack alert when too many look suspect.

Typeform
Pangram
Google Sheets
+1
Deterministic Code
Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task

Stop reading applications in the order they arrived.

Get one morning digest that tells your recruiters which written materials deserve a closer look, and which ones to weigh carefully.