Quick overview
This workflow monitors Gmail for subcontractor bid quote emails, uses OpenAI to match and extract pricing and scope coverage, stores leveled results in n8n Data Tables, and runs a daily sweep to chase missing bids, rank quotes, and send award-approval and award/regret emails.
How it works
- Triggers when a Gmail message arrives that matches the bid/quote search and downloads any attachments.
- Extracts text from the attached PDF and replies asking for a text-based PDF if the attachment is not readable.
- Uses OpenAI to look up open bid packages in n8n Data Tables, match the email to a package, and extract structured quote details plus scope coverage for each checklist item.
- If the quote is valid and matches an open package, calculates scope gaps, applies allowance “plugs” to produce a leveled total, versions the quote as a revision, and upserts it into the bid_quotes Data Table.
- Replies in Gmail either confirming the quote is complete or asking the subcontractor to confirm/clarify missing or excluded scope items.
- Runs daily at 7am to update past-due packages to closing, remind invited subcontractors who have not submitted quotes yet, and flag packages with no bids for review.
- For packages with bids after closing, ranks quotes by leveled total, has OpenAI draft an award recommendation, emails the estimator for approval, then sends the award-intent email to the winner and regret emails to the other bidders while updating the package status in the bid_packages table.
Setup
- Connect Gmail OAuth2 credentials for reading incoming bid emails and sending replies, reminders, approvals, and award/regret messages.
- Add an OpenAI API credential for the quote extraction/matching agent and the award recommendation writer.
- Run the manual “set up” trigger once to create the bid_packages and bid_quotes n8n Data Tables (and optionally insert the sample package).
- Populate the bid_packages table with your real packages, ensuring scope_checklist uses the format
Item=allowance; Item=allowance, and set status to open.
- Update the two settings steps with your company name, estimating contact, review inbox, minimum match confidence, default plug amount, and chase-days-before-due value.