# 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.

- Workflow type: code
- Services: Typeform, Pangram, Google Sheets, Slack
- Categories: Operations, Product
- Published: 2026-08-13

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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

## 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.

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/screen-typeform-survey-answers-for-ai-generated-responses