这是以下活动的参赛作品:Hacktoberfest 开源 AI 挑战赛第 2 周:副业
我构建了什么
每个自由职业者都熟悉这条消息:
“Bhai,ek chhota sa quick change tha. Razorpay integrate kar do na, aur 25 products bhi add kar dena.”
它从来都不小。一个支付网关加上 25 个产品可能是一整天的工作量,而且不在合同范围内。但说“这要额外收费”显得不礼貌,所以我们大多数人会回复“haan haan, ho jayega”,然后默默免费干活。
Scope-Creep Guard是一个本地优先的 AI 工具,替你处理那个尴尬的部分。你粘贴原始工作范围和客户的消息,它就会:
- 判断该请求是IN_SCOPE、OUT_OF_SCOPE还是UNCLEAR
- 展示确切条款来自你合同中作为判断依据的那一条
- 估算额外工时和额外费用基于你的时薪
- 写出三条可直接发送的回复:礼貌版、坚定版或友好加售版
- 生成一份变更单迷你报价针对额外工作
- 维护一本范围台账记录你拦截了多少请求以及挽回了多少钱
谁会为它付费?做固定价格项目的独立自由职业者和小型工作室。每一个被拦截的超范围请求,都是本会被白白送出的可计费工作。客户消息常常是 Hinglish 或混合语言,所以内置示例也包含这些。
演示
- 试用(演示模式): https://week-iota.vercel.app/
- 视频演示(实时模式): https://youtu.be/dZLzZrbIEg0?si=KEZdGOorXY8A8VD5
!Scope-Creep Guard 结果界面:判定结果、匹配条款、额外费用、回复草稿
一个诚实的说明:Vercel 站点无法运行本地 LLM,所以部署版本运行在演示模式。它为内置示例提供来自真实 Gemma 模型的预录制输出,并且有横幅说明这一点。要分析你自己的合同,请在本地运行(安装说明见下)。视频展示的是实时模式。
30 秒测试:打开网站,点击加载示例,选择 Hinglish 消息,按下分析。
代码
🛡️ Scope-Creep Guard
一个本地优先、注重隐私的开源权重 AI 工具,供自由职业者和承包商捍卫项目范围、防止无偿工作并挽回损失的可计费收入。
🔗 快速链接
- 线上生产 URL: https://week-iota.vercel.app
- GitHub 仓库: https://github.com/vidishagupta/scope-creep-guard
- 演示视频(MP4): demo/scope-creep-guard-demo.mp4
🎬 Demo Preview
📹Watch the Full 60-Second Walkthrough Video (MP4)— AI detects Hinglish scope creep, quotes ₹12,000 extra work, copies firm pushback, and updates recovered revenue in the Scope Ledger.
🚨 The Problem: "Can you just do this one quick change?"
Every freelancer knows this trap: You agree to deliver a 3-page website. You finish on time. Then the client WhatsApp messages start:
"Bhai ek chhota sa change tha — store ke liye Razorpay payment gateway integrate kar do na jaldi se, aur SEO bhi set kar dena Google ke liye!"
Freelancers often say yes because:
- Saying "no" feels confrontational and awkward.
- They don't have contract clauses memorized word-for-word.
- …
MIT licensed. Local setup: install Ollama, pull a Gemma model, thennpm install && npm run dev.
How I Built It
Open-source AI:Gemma (open-weight), running locally throughOllama. The model name lives in.env, so swapping models needs no code change.
Stack:Next.js (App Router), Tailwind CSS, and browserlocalStoragefor the ledger. No database, no server to maintain.
Making a small model trustworthy.The hard part wasn't calling the model. It was stopping it from inventing things. A contract tool that hallucinates a clause is worse than no tool. So:
- The system prompt tells the model to judgeonly from the pasted contract, never invent clauses, and answer
UNCLEARwhen the contract is silent. - The model must returnstrict JSON: verdict, matched clause, reason, hours, charge and three replies.
- The servervalidatesthat JSON. If it's broken, it retries once with a repair prompt, then shows a friendly error instead of garbage.
- The validation and repair logic has unit tests.
Live Mode vs Demo Mode.On startup the app checks whether Ollama is reachable. If yes, you get live analysis and an "Ollama Connected" badge. If not (like on Vercel), it switches to Demo Mode with a clear banner. I chose this over faking a "live" feel with a closed API, because that would break the whole point of the project.
What it can't do yet:[CHECK AND EDIT: e.g. it only reads text you paste, with no PDF upload yet.] A small local model can also misjudge unusual clauses, so treat the verdict as a strong second opinion, not legal advice.
Why Does Open Innovation Matter?
自由职业者的合同和客户聊天是私密的。使用封闭的云 API,每份合同都会传输到别人的服务器上。开源权重模型让另一种承诺成为可能:
- 隐私:在 Live 模式下,合同和客户消息永远不会离开笔记本电脑。
- 零运行成本:没有按请求计费,这对刚起步的人来说很重要。
- 可离线运行:模型在你的机器上运行。
- 可替换、可调优:试试更大的 Gemma,或按你自己的合同风格进行微调。
- 无锁定:它采用 MIT 许可证,因此任何人都可以 fork 它。
使用封闭 API,我无法诚实地在屏幕上写下“你的合同永远不会离开你的设备”。使用本地模型,我可以。
我的智能体会话
我的智能体会话
我使用 Google Antigravity 作为我的编码智能体构建了 Scope-Creep Guard。我提供了一份详细的规格说明,涵盖技术栈、亮点功能、JSON schema、Live/Demo 模式以及部署,然后使用该智能体构建、测试并部署了该应用。我的目标是将自由职业者的一个真实痛点转化为一个实用工具,具备可解释的范围蔓延检测和可操作的洞察。
首次构建后我做的改动
- 改进了范围分析,以区分已包含的工作和潜在的范围蔓延。
- 优化了判定和解释,帮助自由职业者理解为什么某个请求可能需要额外的时间或费用。
- 改进了输入说明和 UI 清晰度,使分析客户请求更容易。
我的第一位用户
我请了一位做 Web 开发自由职业者的朋友,用一条真实的客户消息试用 Scope-Creep Guard,该消息请求了超出原始项目范围的额外功能。
有效的部分:“我喜欢它指出了额外的请求,并解释了为什么它们可能算作范围蔓延。这让情况更容易理解。”
无效的部分:“一开始,我不确定应该粘贴整个客户对话还是只粘贴最新消息。我还希望更清楚地解释原始范围包含什么。”
因此我做的改动:我把说明写得更清楚,并增加了引导,帮助用户在客户消息旁提供原始项目范围,以便对比更有用。
他们会付费吗?我现在就会免费使用它。如果它能持续帮我处理棘手的客户对话并节省时间,我会考虑之后付费。
奖项类别
- Gemma 最佳应用:整个分析通过 Ollama 在本地 Gemma 上运行。
如果你曾因为一个“小改动”而免费干活,这条就是给你的。
感谢阅读!


