Inspiration

Creative teams can generate dozens of variants in minutes, but approved files often lose the facts needed to answer: Which prompt and model created this? Which version did it descend from? Where is the canonical copy? Has that copy changed since approval? Provenance Studio makes those facts part of the workflow.

What it does

Provenance Studio gives every generated campaign asset an inspectable lineage, a content-addressed canonical copy in Backblaze B2, and a verification receipt that detects changed bytes instead of trusting metadata alone. A creator generates an initial campaign image and refines it into linked children. Each run displays its provider, model, parent, manifest hash, asset hash, and current verification state.

How we built it

Genblaze Pipeline orchestrates NVIDIA NIM image generation with black-forest-labs/flux.2-klein-4b and produces the canonical provenance manifest. Genblaze ObjectStorageSink and genblaze-s3 write generated media to a private Backblaze B2 bucket using content-addressable object keys. A FastAPI service exposes generation, refinement, lineage, verification, media, health, and OpenAPI routes. A responsive browser workbench presents the workflow, while a free Render Docker service hosts the public judge experience.

Meaningful Backblaze B2 use

B2 is the durable system of record, not a backup destination. It stores generated asset bytes and their provenance records. Verification re-fetches the B2 object, recomputes SHA-256, and compares it with the canonical Genblaze record. Content-addressed keys deduplicate identical output and make object identity independently inspectable.

Meaningful Genblaze use

Genblaze performs the provider step, captures provider/model/prompt metadata, links each refinement to its parent run, calculates the canonical manifest, and hands output to its B2-compatible storage sink. The app depends on those orchestration and provenance surfaces rather than merely importing the SDK.

Challenges

The hardest boundary was proving the stored object rather than only proving a database row. The workflow resolves the B2 object, streams its bytes, recomputes SHA-256, and compares it with the manifest. Another challenge was preserving local-file safety while accepting inline provider output; NVIDIA bytes are staged only in a temporary directory before the guarded B2 sink reads them.

Accomplishments

  • Parent-first lineage survives refinement.
  • Identical bytes deduplicate through content-addressable object keys.
  • Verification detects an isolated one-byte change and passes again after restoration.
  • Live inference, storage, and public access fail closed until all required configuration is present.
  • A per-process generation quota limits accidental free-tier use.
  • The responsive interface persists no private judge token.

What we learned

Generation provenance is useful only when it remains connected to the durable asset. A manifest without byte-level re-verification can describe what should exist but cannot prove what is currently stored. Content addressing plus B2 retrieval makes that distinction visible to ordinary reviewers.

What's next

Add B2 Event Notifications for asynchronous verification, Object Lock for approved manifests, organization-level reviewer roles, and exportable approval bundles for campaign handoff.

Built With

Share this project:

Updates

Submission history