Generated media needs a release record just as much as application code does. When a team cannot tell which script produced an audio file, or which approved offer belongs to an image, the problem usually appears during review rather than generation.
Disclosure: This article was created with AI assistance. It describes a proposed engineering workflow, not measured results from a production deployment. I am an independent ElevenLabs and AdCreative.ai affiliate; the optional links at the end may earn me a commission.
Make the asset, not the generation request, your unit of review
A successful request only tells you that a service returned something. It does not establish that the result is suitable to publish.
For audio, a reviewer might need to check the spoken numbers, names, pauses, and the correspondence between the audio and its transcript. For an ad image, the reviewer might need to check the product appearance, exact offer, legibility, and destination page. Both workflows benefit from the same separation:
- Produce a candidate.
- Record what went into it.
- Review the candidate in its intended context.
- Approve one exact artifact.
- Publish that artifact and retain a rollback reference.
Avoid a single done flag. A candidate can be generated but still awaiting review; a reviewed artifact can later be superseded.
Keep a small manifest beside each export
Here is an illustrative record for a tutorial voiceover. The identifiers are examples, not real provider credentials or a vendor API schema.
{
"asset_id": "onboarding-en-voice-004",
"kind": "audio",
"source_revision": "script-004",
"generation_config_revision": "voice-settings-002",
"artifact_path": "exports/onboarding-en-voice-004.mp3",
"artifact_sha256": null,
"status": "review_pending",
"reviewed_by": null,
"approved_at": null,
"supersedes": "onboarding-en-voice-003"
}
Populate the hash from the actual exported bytes. Leave approval fields empty until review has happened. A placeholder such as null is preferable to an invented approval timestamp.
For an image, use a distinct record with fields such as approved_offer_revision, landing_page_revision, and variant_id. A batch can share one experiment identifier while each image retains its own approval state. The manifest should point to a claim register or brief, rather than copying personal information or secrets into every file.
Approve bytes, not filenames
Suppose a reviewer approves hero-final.png, then another export overwrites that file. If your deployment only checks the filename, the approval now appears to cover content the reviewer never saw.
A stronger gate checks both status and artifact identity:
- The manifest says
approved. - The actual file hash matches the approved hash.
- Required source and review references exist.
- The artifact is not marked superseded.
A hash establishes identity, not quality or permission. It cannot tell you whether an offer is truthful, whether someone consented to use of their voice, or whether a generated image represents a product accurately. Those remain separate review questions.
If the file changes, return it to review instead of carrying its approval forward. Store earlier approved versions so a release can point back to a known artifact.
Make retries visible
A timeout is ambiguous: the provider may have completed work even though your caller did not receive the response. Before blindly retrying an expensive generation request, check the provider's documented job-status and idempotency capabilities.
Keep your own attempt identifier and record the outcome. Do not assume that every media API supports the same retry semantics. A local manifest prevents lost context, but it cannot make a non-idempotent external operation idempotent.
Also separate candidate selection from deletion. Retain enough history to explain why an asset changed; use a deliberate retention policy rather than leaving every temporary export forever.
Review the consuming experience
Listen to an audio file alongside the video or interface that will use it. Check that the text alternative matches the approved content. For an image, inspect the actual placement size and verify that its destination page contains the advertised offer.
Record findings as actionable changes: “price spoken incorrectly at 00:12” or “offer text unreadable at mobile placement size.” “Looks good” is a weak audit trail if a later editor needs to understand what was checked.
Where tools fit
This workflow is intentionally provider-independent. You can use it with human-recorded audio, a text-to-speech service, a design application, or an image-generation tool.
If you are considering ElevenLabs for the audio-generation step, this is my ElevenLabs affiliate link; I may earn a commission from qualifying purchases. Check the current plan and usage rights for your intended use before generating commercial assets.
If you are considering AdCreative.ai for ad-asset creation, this is my AdCreative.ai affiliate link; I may earn a commission from qualifying purchases. Evaluate a representative batch and the review work it creates, rather than assuming that producing more variants improves campaign outcomes.
The release manifest should remain yours whichever tool creates the media. That makes it easier to change providers without losing the connection between a source, a review decision, and the file your users actually receive.
Top comments (0)