Work/Libraries & web products
Live
Proposal Guard
Deterministic, offline scope-creep checker for proposals and SOWs. Quotes the risky sentence, names the rule, suggests a fill-in-the-blanks fix. Not legal advice.

What it does
Deterministic, offline scope-creep checker for proposals and SOWs. Quotes the risky sentence, names the rule, suggests a fill-in-the-blanks fix. Not legal advice.
Problem → Solution
Problem
Freelancer proposals quietly invite extra work with wording like “etc.”, “unlimited revisions”, approvals with no deadline, or cloud bills with no stated payer.
Solution
Fixed TypeScript pattern rules (no model in the loop) scan pasted text, quote matching sentences, name the rule (SCOPE-01, TIME-03, HOST-02, REVISE-04), and offer clauses with blanks such as `[N]` business days. Offline, stores nothing, never edits the document.
Who it’s for
Freelancers and small studios who want a fast wording check before sending a proposal or SOW.
Usage
- Open the live app and paste a draft proposal or SOW.
- Review High/Medium findings with quoted sentences and fill-in-the-blanks suggestions.
- Or clone the MIT repo: CLI (`scan`), library (`scan(text)`), or local MCP tools.
Stack
- TypeScript (strict, ESM)
- Node ≥ 20
- Vitest
- Optional MCP server (`@modelcontextprotocol/server`)
- Railway-hosted demo
Architecture highlights
- Sentence segmenter with offsets (masks code/URLs/emails/filenames)
- Four fixed rules — no network calls in the scan core
- CLI + library + local MCP entry points
- Published evaluation corpus with known misses
Key features
- Rule-based findings (not a risk score)
- Quoted sentence + why + blanked suggestion
- CLI, library, and MCP surfaces
- Honest “not legal advice” framing
Status
Live in production
Open source
MIT. Public GitHub — github.com/arsalan-arshad/proposal-guard. Issues and PRs welcome; evaluation report documents false positives and misses.
Want something like this built for you?
Start a conversation — sole builder, daily chat, fixed-scope offers.
Start conversation