Inspiration

Creative teams can now generate media in seconds, but three questions still take hours to answer — or can't be answered at all: Which provider, model, prompt and parameters produced this exact file? Has it changed since generation? Did a human approve this exact version? ProofFrame exists to make those answers portable and independently verifiable.

What it does

  • Generates media through Genblaze (GMI Cloud provider, with a Google Vertex AI fallback adapter), emitting a canonical provenance manifest for every run
  • Fingerprints the exact output with SHA-256 and stores asset + manifest on Backblaze B2 using content-addressable keys (identical outputs dedupe naturally; storage is tamper-evident by construction)
  • Holds every asset for human review: a reviewer approves or rejects that exact hash, with a reason, in an append-only decision chain
  • Exports a portable trust bundle that anyone can verify offline with a standalone verifier — no need to trust the app UI
  • Serves generated media through a streaming proxy, so private B2 bucket URLs are never exposed to the browser

How we built it

Python + FastAPI service with a pluggable provider layer. Mock mode executes the full real pipeline offline (no API keys) and labels every run mock in the UI; real mode was verified end-to-end: Genblaze generation → private B2 bucket write → hash-verified readback through the asset proxy. When credentials are missing, the system fails closed instead of degrading silently.

Challenges we ran into

Binding human decisions to bytes rather than filenames sounds trivial until you handle re-generation, dedupe, and review races — the append-only, hash-linked review chain is our answer. Keeping the private bucket private while still previewing media required the server-side streaming proxy.

What we're proud of

The trust bundle verifies outside the application, the whole pipeline runs offline for development, and 24 automated tests cover the manifest, hashing, review chain and storage adapters. ProofFrame claims exactly what it can prove: integrity and process. It deliberately does not claim content is true, safe, or copyright-clear — those stay visible as human responsibilities.

What's next

Batch review queues, C2PA manifest export, and webhook handoff so publication systems can require an approved hash before going live.

Built With

  • ai-media
  • backblaze-b2
  • fastapi
  • genblaze
  • human-in-the-loop
  • provenance
  • python
Share this project:

Updates