Skip to main content

Reprise

Check what you already generated before you pay to generate it again.

A reuse-first gateway for generative media, in front of Backblaze B2 · Python · built for the Backblaze Generative Media Hackathon 2026.

The problem

Every generative-media team quietly regenerates assets it already paid for. The same product shot, the same jingle, the same hero image with the same prompt, weeks apart, by different people. The spend is invisible because nothing in the pipeline is looking for the repeat.

Reprise answers one question per request: did we already generate this? An exact match is served straight from B2 at zero cost with the saving booked. Otherwise the prompt is embedded and scored against the library: a similarity at or above 0.97 auto-serves the stored asset, anything from 0.85 to 0.97 goes to a human for a one-click decision, and only below 0.85 does it actually generate. Every decision is written to an Object-Lock ledger in B2 under GOVERNANCE retention, so the savings scoreboard is recomputed from records nobody can edit or destroy while retention holds.

Reproduce the evaluation

The routing thresholds are not asserted, they are evaluated against a labeled dataset with live embeddings. The report regenerates from the same generator CI checks against.

Clone and regenerate the eval report:

git clone https://github.com/OrionArchitekton/reprise.git
cd reprise
python3 tools/run_eval.py

Command surface

  • REUSE: Exact match, or similarity at or above 0.97. The stored asset is served from B2, nothing is generated, and the saving is booked to the ledger.
  • REVIEW: Similarity between 0.85 and 0.97. Close enough to be worth a look, not close enough to auto-serve, so a human decides in one click.
  • GENERATE: Below 0.85. Genuinely new work, so it runs the Genblaze pipeline and writes the result plus its provenance manifest back to B2.

Why this is different

  • The cheapest generation is the one you skip: Most cost tooling reports spend after the fact. Reprise sits in the request path and prevents the duplicate before it is billed.
  • A ledger nobody can quietly fix: Savings are recomputed from an Object-Lock ledger under GOVERNANCE retention in B2. While retention holds, the records backing the scoreboard cannot be edited or destroyed, including by the app that wrote them.
  • Receipts you can re-derive: Every result carries a run id, the manifest key and its canonical hash, a content-addressed asset key, a sha256, the producing model, and the retention actually in force. Those are coordinates you can check against the bucket, not a badge the app issues about itself.
  • Three outcomes, not a confidence score: The bands are explicit and the middle band routes to a person. A near-miss is never silently served as a match.

Links