Auto-moderate new Airtable submissions before they go live

By General Input

Every time someone submits a record to your Airtable intake table, run profanity, spam, and image checks, stamp the verdict on the row, and ping Slack on anything risky.

Integrations

  • Airtable
  • JigsawStack
  • Slack Bot

Type

Deterministic Code

Categories

  • Operations
  • Customer Support

Build me a content moderation gate for user-submitted records in Airtable so nothing toxic, spammy, or NSFW makes it to a public surface without a human reviewing it first.

Trigger: poll Airtable for a new record on the submissions table. Use Airtable's first-class new_record poll trigger. The base, table, and the names of the text field and the optional image URL field should all be configurable.

For each new record, run these deterministic checks in JigsawStack:

1. Pass the main text field through Check Profanity. Keep the censored version of the text from the response.

2. Pass the same main text through Check Spam and keep the spam score.

3. If the record has a non-empty image URL field, run Check Image for NSFW Content on that URL. If there is no image, skip this step.

Combine the three results into a single moderation_status using configurable thresholds:

- "clean" if every check passes its threshold.

- "flagged" if any one check trips its threshold but nothing is severe.

- "blocked" if NSFW is detected on the image, or if the spam confidence is very high (e.g. spam score above a hard cutoff).

Also build a flagged_reasons list as comma-separated labels like "profanity", "spam", "nsfw_image" based on which checks tripped.

Then call Airtable Update Record on the same row to write three columns: moderation_status, flagged_reasons, and censored_text (the censored output from Check Profanity). Do not modify the original text field.

If moderation_status is flagged or blocked, also call the Slack Bot Send a Message action to post in a configurable moderation channel (default #moderation). The Slack message should include: a link back to the Airtable record, the original text, each of the three scores (profanity, spam, NSFW), the reason labels, and the final status, formatted so a human moderator can decide quickly. If the status is clean, do not post to Slack.

Integrations to use: airtable for the trigger and Update Record, jigsawstack for the three moderation checks, slackbot for posting to the moderation channel. Make the field names, the Slack channel, and the three thresholds (flag-text, block-spam, NSFW-on) all editable inputs so the same workflow can run for strict and casual communities.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them