# Decide which tenders to pursue

Turn an Airtable tender record into a brief with the published deadline, exact requirement excerpts, and open questions. The designated Slack reviewer decides whether to bid or pass.

**Category** Revenue Operations  
**Tools** n8n, Airtable, OpenAI, Slack  
**Trigger** Authenticated POST with one Airtable tender record ID  
**Package** [Workflow JSON](tender-bid-review.n8n.json) · [Test payloads](test-payloads.json) · [Validation report](validation-report.txt)

Import the JSON in n8n and run **Run with sample data**. The workflow imports inactive with **dryRun** enabled. The sample run uses fictional data and skips connected apps. Select credentials on the named nodes before testing live inputs.

## How it works

1. Read the Airtable record, confirm its status is **New**, and capture the deadline and requirements. OpenAI summarizes the supplied text and identifies questions.
2. Check every quoted requirement against the original text. Mark the record **Under Review** and send the brief to the assigned Slack reviewer.
3. Record **Bid**, **Pass**, or **Review Expired** after re-reading the record. If its title, deadline, requirements, or review state changed, stop so the current version can be reviewed.

## How to use

1. Create an Airtable table with **Title** (text), **Deadline** (date and time), **Requirements** (long text), **Status** (text), **Brief** (long text), **Decision**, **Decision By**, and **Decision At** (text). Add an eligible record with a future deadline and **Status** set to **New**.
2. Enter the Airtable base and table IDs, Slack reviewer member ID, and OpenAI model in **Setup**. Select **Header Auth** with an Airtable bearer token on all Airtable nodes and a separate OpenAI bearer credential on **Summarize tender text**.
3. Configure signed Slack approvals for the designated reviewer. Connect a private inbound **Header Auth** credential and POST the record ID using the provided sample shape.
4. Test in staging with a copied record and set **dryRun** false. The response acknowledges receipt. Review the Slack message and Airtable decision. The Slack wait lasts up to two days, and the tender deadline still applies.

## Test and operate

- A reviewer can choose **Bid** or **Pass**. The record includes the reviewer and response time.
- If a deadline passes or the reviewer does not answer, the record is marked **Review Expired**.
- If the record changes during review, check the current record before resetting it to **New** for a fresh decision.
- If Slack fails after a record is marked **Under Review**, confirm there is no pending request before resetting it.

Send one review event per record at a time. Use the source record to verify requirements and eligibility before making a commitment.

[n8n source](https://n8n.io/workflows/11526-analyze-high-priority-tenders-from-airtable-to-slack-for-gono-go-approval/) · [n8n Slack approvals](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/approvals)
