The Problem: Reading RFPs You Cannot Legally Win
Contractors bidding on public tenders and private RFPs face the same challenge. Opportunities arrive constantly. Each one carries a folder of documents. And somebody on the team has to read all of it just to figure out whether the firm is even allowed to bid.
That reading is expensive, and much of it is wasted. A significant share of opportunities are disqualified on grounds that have nothing to do with technical fit — the firm is not licensed in that state, the insurance limits exceed what they carry, the bonding requirement is beyond their capacity, or there is an MBE/WBE participation requirement they cannot meet. None of that requires reading the technical scope. But under a manual process, someone reads it anyway, because there is no way to know until they do.
The Solution: A Scrape-to-Verdict Pipeline
GrowwStacks built an automated bid qualification system that handles the full journey from opportunity discovery to go / no-go verdict, with no human intervention in between.
The team logs into a dashboard showing total jobs scraped, active keywords, and sessions run today. The scraper runs on a schedule, but can be triggered manually — for a single keyword or across all of them. Run status is visible live and the scraper can be stopped mid-run. Recent sessions are listed for reference.
Keywords are managed directly in the interface, so the team can widen or narrow the search without touching a backend. All previously scraped data stays accessible, with source URLs preserved and full scraped detail available per job. Data lands in a PostgreSQL database.
The Qualification Webhook
Every scraped opportunity fires a webhook into the qualification workflow, carrying the title, closing date, location, issuing organization, contacts, and the link to the folder holding all tender documents. From this point on, nobody touches anything until there is a verdict.
Document Retrieval and Strict Transcription
The first block retrieves the documents. It searches the linked folders, downloads every file, and routes them by type — PDFs take one path, other formats take another.
Each document then goes through extraction using a strict transcription prompt, not a summarizer. Everything comes out word for word. Tables are preserved as structured markdown. Text sitting inside scanned images is captured too — which matters more than people expect, because large tender packages are full of scanned addenda.
All of it merges into one combined text record. A 200-page standard package becomes a single readable, searchable document.
💡 Transcription, Not Summarization: Summarizers lose the exact language that determines eligibility. A strict transcription prompt preserves clause wording verbatim, so the qualification logic reads what the tender actually says rather than a paraphrase of it.
The Killer Clause Gate
This is the part that saves the most time.
Before any scoring happens, the opportunity hits the killer clause check. The system compares the RFP against a stored profile of the firm's actual capability — licensed states, insurance limits, bonding capacity, licenses held, MBE and WBE availability, minimum revenue, and years in business.
It screens six categories of hard disqualifier:
- Residency requirements
- Insurance limits
- License requirements
- Bonding capacity
- MBE / WBE participation requirements
- Pre-qualification status
If even one of those is not met, the pipeline stops right there. The bid is logged to the sheet marked as disqualified and a notification goes to the team. Nobody spends an afternoon reading the technical scope of a bid the firm legally cannot submit.
Weighted AI Scoring
If there is no killer clause, the opportunity moves to full scoring. An AI agent rates the bid across five dimensions, and code applies the weights:
- Schedule and Resources — 25%
- Technical Scope — 25%
- Contract and Legal — 20%
- Client and Payment — 15%
- Strategic Fit — 15%
The weights sum to 100.
Alongside the AI scoring, deterministic keyword matching runs against the firm's core scope — data centers, HVAC, electrical, MEP. Strategic fit is measured, not guessed.
The weighted result resolves into a verdict:
- Above 70% — Strong Go
- 50 to 70% — Conditional Go
- 50% or below — No Go
The Output
Everything lands in a Google Sheet with more than 35 fields filled in per opportunity: project details, market sector, scope summary, mandatory and insurance requirements, strengths, weaknesses, win probability, required actions, all five dimension scores, and the final verdict.
A notification fires as each one completes. The team starts the day with a ranked, pre-qualified shortlist instead of a folder of PDFs.
The Right Fit — and When It Isn't
This system suits contractors and firms bidding regularly on public tenders or private RFPs where opportunity volume is high, packages are large, and eligibility depends on hard legal and financial criteria that can be defined up front. It applies equally to any document-heavy review process with clear pass/fail gates.
It is less suited to firms bidding on a handful of opportunities a year, where the volume does not justify the build, or to processes where eligibility is genuinely judgment-based and cannot be reduced to a stored capability profile.