People-search sites still republish names, addresses, phones, and dates of birth. Opting out is tedious, easy to mess up, and basically irreversible once you hit Submit.
For the WeMakeDevs × TrueFoundry × Qodo agent-harness hackathon, I built Undox — a TrueForge agent that does the annoying work carefully, then stops until a person allows the exact payload.
Live demo: undox.vercel.app
Repo: github.com/manasdutta04/undox
Connect MCP (paste-ready): undox.vercel.app/app/connect
The problem (in one breath)
Privacy products exist because this workflow is painful. An agent that “just submits” is worse than no agent. We needed a harness that:
- Finds broker listings
- Prepares opt-out forms in a sandbox
- Pauses on literal PII before anything leaves the machine
Chat summaries don’t count. Tool JSON and a dashboard do.
What Undox is
Undox is a TrueForge orchestrator wired to a custom HTTP MCP server (undox-tools):
| TrueForge piece | How we use it |
|---|---|
| MCP tools |
find_* → run_sandbox_prepare → approval-gated submit_opt_out; plus get_session_state / get_exposure_dashboard
|
| Sandbox + skills | Broker prepare scripts (prepare_runtime: sandbox-script) |
| Approval | Submit requires human Allow on the exact fields |
| Subagents |
dynamicSubAgents + parallel tool fan-out fallback |
| Sessions | File store keyed by session_id — survives TrueForge restart |
| Status UI | Next.js dashboard on Vercel; same store as MCP on Render |
Demo brokers PeopleFind and Clearbook are fixtures (no live CAPTCHA on stage). Spokeo uses real URL mapping; submit stays mock.
How TrueForge fits (not a thin wrapper)
The agent isn’t “one mock function + a chat UI.”
- TrueForge owns the loop, tools, and Allow gate.
- MCP does the broker work and writes session state.
- The public UI is evidence of that state — Exposure, Brokers, Approval, Architecture, Connect.
Kill TrueForge, restart, reopen the same session_id — statuses are still there. That’s the Double-O story: durable harness state, not a one-shot demo.
Judges (and you) can walk the seeded session without cloning:
Exposure → Brokers → Approval → Connect
Session: demo-test-2
Stack (all free-tier friendly)
- TrueForge locally (+ Ollama for the agent)
-
Vercel for the neo-brutal product UI (
web/) -
Render for API, fixtures, and
/mcp - Public demo Bearer on Connect:
undox-demo-public(mock submits only)
Render free tier sleeps — first hit after idle can take ~a minute. Ping /healthz before a live demo.
How Qodo helped
Every substantive change shipped as a PR with /agentic_review. Qodo caught real issues — auth edges, stale UI after failed loads, CSS specificity bugs — and we fixed High/Medium before merge. CI also runs typecheck, test, and prove:heart on every PR.
That mattered more than polish: the approval path and session store had to be trustworthy on camera.
What I learned
- Fixture-first demos win. Live CAPTCHAs kill stage takes. Fixtures keep find → prepare → allow reliable.
- Chat lies; tools don’t. Point judges at the dashboard and tool JSON.
- Approval on literal PII is the product. If Allow isn’t on the exact fields, you don’t have a safety story.
- Split hosting is fine. UI on Vercel, MCP on Render, TrueForge local — Connect JSON ties it together.
- Review bots earn their keep when you actually fix what they flag before squash-merge.
Try it
- Open the live demo
- Walk Exposure → Brokers → Approval → Connect
- Paste the MCP config into TrueForge as-is
- Clone the repo if you want the offline prove scripts
Built with TrueForge. Reviewed with Qodo. Submits stay mock on purpose.
Thanks for reading — if you try the Connect paste, tell me what broke first. That’s usually the most useful review.
Top comments (0)