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.

Deterministic Code
TypeformPangramGoogle SheetsSlackOperationsProductFeedback TriageNotifications & Alerts
PromptCreate

Every morning at 6am, screen my Typeform survey's open-ended answers for AI-generated text so bot and LLM-assisted submissions do not quietly poison my research data. Every step is fixed, so keep this fully deterministic with no judgement calls at runtime.

Start with Typeform "Retrieve Responses" to fetch the responses submitted since the previous run. Keep a watermark of the latest submission timestamp I actually retrieved and use that as the lower bound on the next run, rather than the clock time the run started. Typeform can take around 30 minutes to expose very recent submissions through the responses API, so anchoring on retrieved data instead of run time keeps late arrivals from being skipped forever. If no new responses came in, finish the run without writing anything or alerting.

For each response, collect the free-text answers and join them into a single block of text per response, keyed by the response ID. Skip any response whose combined text is shorter than my minimum length, defaulting to 25 words, because it is too short to score reliably. Record those as skipped with the reason rather than dropping them silently, so the log still accounts for every response.

Submit the remaining texts together with Pangram "Create Bulk AI Detection Job", one item per response. Bulk requests are capped at 1,000 billable units, where a unit is one started word block per item, so estimate the units before submitting and split a large batch into multiple sequential jobs when it would exceed the cap. The job is asynchronous, so poll it until it reaches a terminal status of succeeded, failed, or partial.

Read the scores back with Pangram "Get Bulk Job Results", paging until every item is retrieved. Handle partial jobs properly: individual items can fail with a per-item error string such as "Text must contain at least one valid token", so treat those as unscored and log them next to the too-short skips instead of failing the whole run. Bulk results are only retained for 48 hours after completion, so write everything to the spreadsheet in the same run rather than deferring it.

Append one row per response to my Google Sheets tracking tab with "Append Values", containing the response ID, the submission date, the AI likelihood score, and a verdict of clean or suspect. Mark a response suspect when its AI likelihood score is at or above my threshold, defaulting to 0.75. Responses that could not be scored carry their reason in the verdict column instead of a score. Write rows in submission date order so the tab reads as a running audit log I can filter before analysis.

Finally, work out the share of suspect responses among the scored responses in this batch. If that share is at or above my alert percentage, defaulting to 10 percent, send a Slack alert with "Send a Message" naming the suspect count, the number scored, and the percentage, along with the form name and the batch date, so I can pause the panel or tighten screening before I waste more incentive budget. Stay silent when the batch comes in under the threshold.

Example output

AI screening for Consumer Panel Wave 3, batch of 62 responses: 11 suspect (17.7%), above your 10% alert threshold. 4 responses skipped as too short to score. Full log in the AI Screening tab.

What does this prompt do?

  • Each morning it collects the survey responses that arrived since the last check and pulls out the open-ended answers.
  • Every answer gets scored for how likely it is to be AI written, and answers too short to score are marked as skipped instead of guessed at.
  • One row per response is added to your tracking tab with the response ID, submission date, the AI likelihood score, and a clean or suspect verdict.
  • If too much of a batch looks suspect, you get a Slack message with the count and percentage so you can pause the panel before spending more incentive money.

What do I need to use this?

  • A Typeform account and the survey you want to screen
  • A Pangram account on a paid plan, which is what checks the writing for AI
  • A Google account and a spreadsheet to use as your audit log
  • A Slack workspace and a channel where the alerts should land
  • A view on your own limits: how high a score counts as suspect, and what share of a batch should trigger an alert

How can I customize it?

  • The schedule: 6am daily is the default, but you can run it twice a day or hourly while a panel is actively fielding
  • The suspect threshold: how high an AI likelihood score has to be before a response is called suspect, and the alert percentage that triggers Slack
  • The minimum answer length worth scoring, plus which channel gets the alert and which tab holds the log

FAQs

Will this delete or reject bad responses for me?
No. It only records a verdict next to each response and alerts you when a batch looks bad. Deciding whether to reject a respondent, withhold an incentive, or pause the panel stays with you, which is what makes the log useful as evidence later.
Why does it skip short answers?
AI detection needs enough words to be reliable. One-word or few-word answers cannot be scored honestly, so they are marked as skipped rather than given a misleading score. You set the minimum length, and skipped responses still appear in the log so nothing disappears quietly.
Will it rescore responses it has already checked?
No. Each run only picks up responses submitted since the previous run, so your log grows without duplicates and you are not paying to score the same answer twice.
Can I screen more than one survey?
Each copy of this workflow watches one form. If you field several surveys, duplicate it and point each copy at a different form, its own tracking tab, and whichever Slack channel that project uses.
Do I need a paid Pangram plan?
Yes. Automated AI detection requires a paid Pangram plan with API access. Typeform, Google Sheets, and Slack all work on standard accounts.

Related templates

Alert your team when GoHighLevel messages go unanswered

Every 30 minutes during business hours, find the customer messages nobody has replied to yet and post one quiet Slack nudge.

GoHighLevel
Slack Bot
Google Sheets
Deterministic Code
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
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.

Pangram
Greenhouse
Slack
Agentic Task
Re-engage dormant GoHighLevel contacts with personal messages

Every Monday, find the leads who have gone quiet, read what they originally asked about, and send each one a short personal nudge.

GoHighLevel
Google Sheets
Agentic Task
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

Stop paying incentives for AI-written survey answers.

Set the morning screen up once and every batch gets audited before it reaches your analysis.