{"slug": "i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack", "title": "I Built an RFP Compliance Checker in One Session — Here's the Exact Stack", "summary": "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.", "body_md": "**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.\"\n\nThose two words — \"Plus\" and nothing — are the difference between a compliant bid and an auto-disqualification.\n\nI've been there. So I built a tool that catches it before you hit submit.\n\nTwo text boxes. One API call. One table.\n\nPaste 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.\n\nNo accounts. No database. No data stored. Open the page, use it, close it.\n\n**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).\n\n**Backend:** One Cloudflare Worker. 180 lines of JavaScript. Receives text, sends it to Groq, returns structured JSON. Deployment is `npx wrangler deploy`\n\n.\n\n**Frontend:** One HTML file. Vanilla JavaScript. Dark and light themes. Side-by-side text areas on desktop, stacked on mobile.\n\n**Domain:** Cloudflare DNS, proxied CNAME to the Worker. Routes by path so new tools don't need new infrastructure.\n\nOngoing cost per month: **$0.**\n\nThe hardest part wasn't the code. It was the prompt.\n\nGetting 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.\n\nThe trick was three things working together:\n\n`response_format: { type: \"json_object\" }`\n\non the Groq API[https://tools.workswithagents.com/rfp](https://tools.workswithagents.com/rfp)\n\nClick \"Load Sample\" to see it work with a real IT managed services tender. The analysis takes about 15 seconds.\n\nFor the visual walkthrough:\n\nEvery tool in this series will be:\n\nNext in the series: a plain-English grader for procurement responses. Because if the evaluator can't understand your bid, you've already lost.", "url": "https://wpnews.pro/news/i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack", "canonical_source": "https://dev.to/vystartasv/i-built-an-rfp-compliance-checker-in-one-session-heres-the-exact-stack-3kbe", "published_at": "2026-07-10 22:19:42+00:00", "updated_at": "2026-07-10 22:41:48.635089+00:00", "lang": "en", "topics": ["developer-tools", "large-language-models", "ai-tools"], "entities": ["Groq", "Cloudflare", "llama-3.3-70b"], "alternates": {"html": "https://wpnews.pro/news/i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack", "markdown": "https://wpnews.pro/news/i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack.md", "text": "https://wpnews.pro/news/i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack.txt", "jsonld": "https://wpnews.pro/news/i-built-an-rfp-compliance-checker-in-one-session-here-s-the-exact-stack.jsonld"}}