Inspiration

What it does## Inspiration

Creative teams increasingly rely on generated media, but the final file often loses the evidence needed to answer basic questions: Which model created it? Which prompt and parameters were used? Is the file still identical to the original output? Will its provider URL still work next week?

ProofStudio treats provenance and durable storage as part of generation instead of cleanup work performed afterward.

What it does

ProofStudio accepts a structured campaign brief and produces two image variants. A single Genblaze pipeline records the provider, model, prompt, parameters, provider request identifiers, asset hashes, and canonical manifest.

Generated media, manifests, and run history are stored in private Backblaze B2. The application exposes only assets belonging to recorded runs through a restricted proxy. Users can reopen previous runs and verify the stored manifest and every asset's SHA-256 hash.

How we built it

  • FastAPI serves the API and responsive interface as one deployable application.
  • Pydantic validates campaign briefs, run records, health responses, and verification results.
  • genblaze-core==0.3.8 orchestrates generation and creates the provenance manifest.
  • A project-owned Genblaze provider adapter connects Cloudflare Workers AI.
  • genblaze-s3==0.3.6 and ObjectStorageSink persist content-addressed assets and manifests to Backblaze B2.
  • A small JSON run index is mirrored to B2, avoiding a database while allowing gallery recovery after a deployment restart.
  • Render hosts the application and keeps every credential server-side.

The live pipeline is:

Cloudflare Workers AI → Genblaze → Backblaze B2 → canonical manifest → verification

Challenges

The most difficult part was making quota-backed generation and storage behavior honest. A successful provider request followed by a storage failure must not silently become another paid or quota-consuming request.

ProofStudio uses idempotency keys, records provider request identifiers, and separates Live Mode from its clearly labelled offline Demo Mode. A local fixture can therefore never be presented as a real provider output.

Another challenge was serving durable media publicly while keeping the B2 bucket private. ProofStudio solves this with a restricted application endpoint that only exposes objects referenced by recorded runs.

Accomplishments

  • One application covers structured input, generation, durable storage, provenance, history, and verification.
  • Two real image variants were generated with @cf/black-forest-labs/flux-2-klein-4b.
  • Assets and manifests remain available after deployment restart.
  • SHA-256 verification detects modified assets.
  • Credentials remain server-side and are excluded from Git.
  • The production application is responsive and publicly accessible.
  • Thirteen automated tests pass.

What we learned

Provenance is most useful when it is created inside the generation pipeline and stored beside the asset. Durable URLs, explicit verification, and idempotency are as important as model quality when generated media becomes part of a real creative workflow.

What's next

  • Persist provider submission state before polling for stronger crash recovery.
  • Stream generation and storage progress to the interface.
  • Add controlled retry actions for partial failures.
  • Add a second provider with policy-driven fallback.

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for ProofStudio

Built With

Share this project:

Updates