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

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

我用一个会话构建了一个 RFP 合规性检查工具——以下是具体技术栈

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. 场景:周五晚上。你正在阅读一份 200 页采购规范的第 147 页。第 17.3 条款写着“强制要求:Cyber Essentials Plus 认证”。而你的草稿回复写的是“Cyber Essentials 认证”。这两个词——“Plus”与缺失——就是合规投标与自动取消资格之间的区别。我经历过这种情况,所以我构建了一个工具,能在你点击提交前发现这些问题。

What it does: 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. 它的功能:两个文本框,一次 API 调用,一个表格。粘贴规范,粘贴草稿,点击分析。该工具会返回一个合规性矩阵,准确显示哪些内容已覆盖、哪些部分覆盖、哪些缺失——按要求分类,并针对每个差距提供建议。无需账户,无需数据库,不存储任何数据。打开页面,使用,然后关闭。

The exact stack: 具体技术栈:

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). 推理:Groq 免费层级。免费运行 llama-3.3-70b,每天包含约 30 次分析。如果用完了额度,还有一个 BYOK(自带密钥)字段,可以使用你自己的 API 密钥(任何兼容 OpenAI 的提供商)。

Backend: One Cloudflare Worker. 180 lines of JavaScript. Receives text, sends it to Groq, returns structured JSON. Deployment is npx wrangler deploy. 后端:一个 Cloudflare Worker。180 行 JavaScript 代码。接收文本,发送给 Groq,返回结构化 JSON。部署方式为 npx wrangler deploy

Frontend: One HTML file. Vanilla JavaScript. Dark and light themes. Side-by-side text areas on desktop, stacked on mobile. 前端:一个 HTML 文件。原生 JavaScript。支持深色和浅色主题。桌面端并排显示文本区域,移动端则垂直堆叠。

Domain: Cloudflare DNS, proxied CNAME to the Worker. Routes by path so new tools don’t need new infrastructure. Ongoing cost per month: $0. 域名:Cloudflare DNS,通过 CNAME 代理到 Worker。按路径路由,因此新工具无需新的基础设施。每月持续成本:0 美元。

The part that surprised me: 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: 让我惊讶的部分:最难的不是代码,而是提示词(Prompt)。要让大模型在各种采购格式(如粘贴为纯文本的 PDF、多列招标表格、扫描件部分)下始终返回结构化 JSON,所花费的迭代次数比整个部署流程还要多。诀窍在于三者的协同:

  • response_format: { type: "json_object" } on the Groq API
  • A prompt that spells out the exact JSON schema
  • Temperature at 0.1 — you want deterministic here, not creative
  • Groq API 中的 response_format: { type: "json_object" }
  • 明确定义 JSON 模式的提示词
  • 温度(Temperature)设为 0.1——这里需要确定性,而不是创造性。

Live demo: 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: https://youtu.be/kW7U1GNjG-c 点击“Load Sample”查看它如何处理真实的 IT 托管服务招标。分析大约需要 15 秒。视频演示:https://youtu.be/kW7U1GNjG-c

Why “Tools That Cost Nothing”: Every tool in this series will be: Free to use — no pricing tiers, no “request demo”; Free to run — the infra costs me nothing; Single-purpose — one problem, one fix, one page; Openable — you can see how it works, fork it, or ignore it. 为什么叫“零成本工具”:本系列中的每个工具都将是:免费使用——没有定价层级,没有“申请演示”;免费运行——基础设施对我来说零成本;单一用途——解决一个问题,一个修复,一个页面;可公开——你可以查看其工作原理、分叉(fork)它或忽略它。

Next in the series: a plain-English grader for procurement responses. Because if the evaluator can’t understand your bid, you’ve already lost. 系列下一篇:针对采购回复的通俗英语评分器。因为如果评估人员看不懂你的投标书,你就已经输了。