Inspiration

Over the last year, building an application became something almost anyone can do in an afternoon with an AI coding assistant. Whether that application is actually safe to put in front of a paying customer is a completely different question — and most people find out the answer after launch, in front of real users, at the most expensive possible moment to be wrong. This isn't hypothetical: a vibe-coded social app called Moltbook shipped with no code review and exposed 1.5 million authentication tokens and 35,000 email addresses within 72 hours of launch. That's not a freak accident. It's the default outcome when the tools that make building fast don't come with an equivalent tool for verifying what got built.

I'd already spent real time on the other side of that problem — working through vulnerable systems on TryHackMe, tracing how small, individually boring issues chain into serious ones. That's a different skill than writing a linter rule, and it's exactly the skill most "AI code checker" tools don't have, because they're usually built by people who've never had to think like the person trying to break in. BuildProof exists to close the gap between "an AI built this app" and "someone qualified actually confirmed it's safe to ship" — automatically, and run by someone who's done the manual version of that work.

What it does

BuildProof takes a repository and a staging URL and gives back one thing: an evidence-backed answer to whether the application is ready to ship — produced by ten specialist agents working in a fixed sequence, not one generic scan.

A Product Understanding Agent opens by mapping the real shape of the application — every route, every dependency, every boundary — before anything is tested, so every agent afterward works from the same shared understanding instead of running ten disconnected scans. UI/UX Testing and Functional QA agents then use the application the way a real person would, walking mapped journeys end to end instead of spot-checking screens. A Performance Engineer traces the runtime path from interaction to response, while Backend + Cloud and Database Engineer agents follow that same request past the browser — through APIs, queues, and the database itself — to where most production failures actually live. A Security Engineer checks authentication boundaries, exposed secrets, and data handling against everything the first agent mapped, safely and only within what it's explicitly authorized to test. A DevOps Engineer verifies the release is actually operable — CI, environment separation, rollback readiness — once the security gate clears. An optional AI Evaluation Agent checks the application's own AI features when one exists, and honestly steps aside when it doesn't, instead of forcing a check that isn't relevant. And a Final CTO-Level Report closes the loop: not a summary, not an eleventh independent scanner, but a decision layer that combines verified evidence from the nine agents above with a fixed set of release rules into one verdict — ship, review, or hold — plus exactly what's blocking a better one.

Every user connects their own model key rather than the app relying on one shared key behind the scenes. BuildProof never holds a platform-wide key, and nothing is stored in plaintext. It's a small design choice, but it's the same instinct the security agent applies to everything else: don't ask for trust you haven't earned the right to.

How we built it

I built BuildProof with Codex as the primary development tool, working inside continuous build threads so the construction — not just the idea — is traceable start to finish. The application runs on Next.js with Supabase handling authentication, Postgres, and row-level security, so every user's data is actually isolated rather than trusted to application-level checks alone.

GPT-5.6 sits inside the product itself, not just alongside the build process. It's the reasoning layer for the specialist agents — turning raw evidence, a trace, a scan result, a security finding, into the explanation a human actually reads — and specifically powers the Final CTO-Level Report: taking verified, structured evidence from all nine agents before it and synthesizing one coherent release verdict. That layer is deliberately constrained so the model explains and recommends but never invents a finding or overrides the release gate on its own judgment — a tool that audits other software for trustworthiness has to hold itself to the same standard.

A real share of the engineering effort went into the landing experience itself, because I wanted the first thing a visitor sees to demonstrate what the product does, not just describe it. That meant building one continuous scroll-driven sequence — GSAP ScrollTrigger with Lenis smoothing, a Three.js object whose form and color are driven by the same scroll progress that moves a signal beam through five stages of the pipeline — instead of a static hero image and a bullet list of features.

Challenges we ran into

I started building this about a day and a half before the deadline, alone, with a product that had several genuinely complex systems that all needed to work together at once: a real multi-agent audit backend, a database layer with row-level security, an AI reasoning layer calling a live model, and a fully custom cinematic frontend — none simple in isolation, and none useful unless they actually integrated.

The hardest problem wasn't really a bug — it was realizing that two sections of the landing page, each individually well built, ran on two completely different interaction models: one driven by scroll position, the other by mouse drag and visibility detection. Both worked on their own. Together, they felt inconsistent in a way that was hard to name until it was traced back to that specific mismatch. Fixing it meant unifying the whole page under one mechanism instead of patching either half.

The other real challenge was proving the AI layer worked end to end, not just in code. Wiring GPT-5.6 into the pipeline is one thing; getting a real, live-key call to produce a real synthesized report — with the database migration, the credential handling, and a genuinely funded API key all in place at once, under a hard deadline — is a different kind of problem, and the one I was still closing out in the final hours before submitting.

Accomplishments that we're proud of

I built this alone, in under two days, and it's not a demo that only survives one narrow, rehearsed path. The audit flow runs against a real repository and a real staging URL, persists a real result to a real database, and produces an actual release verdict, not a canned one. The security model is closer to what a real production SaaS needs than what most hackathon projects ship with: row-level security, no shared platform key, secrets that never touch client code or version control. I'm proud that BuildProof feels less like a hackathon idea with a good pitch, and more like the early version of a company I'd actually want to run.

What we learned

The biggest lesson had nothing to do with any single library. "Looks impressive" and "is proven" are two completely different bars, and the gap between them is exactly where most AI-built software quietly fails — a strange, useful thing to learn firsthand while building a tool whose entire purpose is catching that same gap in other people's applications. I also learned, more than once, that an honestly labeled limitation is worth more than a hidden broken state — a feature that clearly says "this needs your API key to run" is a design choice; a feature that silently fails is a bug wearing a costume. And building something meant to be judged by watching it is a different design problem than building something meant to be self-hosted by a stranger — conflating the two cost real time I didn't have to spare.

What's next for BuildProof

The next phase is the real scanner layer underneath today's safe, deterministic checks — Playwright for browser journeys, Lighthouse and axe-core for performance and accessibility, Semgrep and Gitleaks for code-level security, Trivy and an OWASP ZAP baseline for dependency and surface-level scanning, running through an isolated, queued runner instead of inline. Beyond detection, the natural next step is moving from flagging a problem to proposing a reviewable fix — a real patch a human still approves and merges, never an automatic change to production code, the same way every finding today is evidence for a person to act on, not a decision BuildProof makes by itself. Longer term, I'd like teams to shape their own audit workflow — choosing which of the ten agents run, in what order, and what "ready to ship" actually means for their specific product — instead of one fixed definition applied the same way to every application.

Built With

  • agenticai
  • ai
  • aiagents
  • applicationsecurity
  • automation
  • cloudreadiness
  • codex
  • cybersecurity
  • developertools
  • gpt5
  • gsap
  • nextjs
  • node.js
  • openai
  • performance
  • postgresql
  • qa
  • react
  • reactthreefiber
  • saas
  • supabase
  • testing
  • three.js
  • typescript
  • webapp
Share this project:

Updates