cd /news/developer-tools/i-built-an-rfp-compliance-checker-in… · home topics developer-tools article
[ARTICLE · art-54921] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

I Built an RFP Compliance Checker in One Session — Here's the Exact Stack

A developer built a free RFP compliance checker in a single session using Groq's free tier, a Cloudflare Worker, and a single HTML file. The tool compares procurement specifications against draft responses to identify missing requirements, with no data storage or accounts required. The hardest part was crafting a prompt that reliably returns structured JSON across varied document formats.

read2 min views1 publishedJul 10, 2026

The scene: Friday evening. You're on page 147 of a 200-page procurement spec. Clause 17.3 says "mandatory: Cyber Essentials Plus certification." Your draft response says "Cyber Essentials certified."

Those two words — "Plus" and nothing — are the difference between a compliant bid and an auto-disqualification.

I've been there. So I built a tool that catches it before you hit submit.

Two text boxes. One API call. One table.

Paste the specification. Paste your draft. Click analyze. The tool returns a compliance matrix showing exactly what's covered, what's partial, and what's missing — categorised by requirement, with suggestions for each gap.

No accounts. No database. No data stored. Open the page, use it, close it.

Inference: Groq, free tier. Running llama-3.3-70b at no cost. ~30 analyses per day included. If you burn through that, there's a BYOK field for your own API key (any OpenAI-compatible provider).

Backend: One Cloudflare Worker. 180 lines of JavaScript. Receives text, sends it to Groq, returns structured JSON. Deployment is npx wrangler deploy

.

Frontend: One HTML file. Vanilla JavaScript. Dark and light themes. Side-by-side text areas on desktop, stacked on mobile.

Domain: Cloudflare DNS, proxied CNAME to the Worker. Routes by path so new tools don't need new infrastructure.

Ongoing cost per month: $0.

The hardest part wasn't the code. It was the prompt.

Getting an LLM to return consistently structured JSON across different procurement formats — PDFs pasted as plain text, multi-column tender tables, scanned sections — took more iterations than the entire deployment pipeline.

The trick was three things working together:

`response_format: { type: "json_object" }`

on the Groq API[https://tools.workswithagents.com/rfp](https://tools.workswithagents.com/rfp)

Click "Load Sample" to see it work with a real IT managed services tender. The analysis takes about 15 seconds.

For the visual walkthrough: Every tool in this series will be:

Next in the series: a plain-English grader for procurement responses. Because if the evaluator can't understand your bid, you've already lost.

── more in #developer-tools 4 stories · sorted by recency
── more on @groq 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-an-rfp-compl…] indexed:0 read:2min 2026-07-10 ·