Every ad Hazevio makes with a presenter leaves with the same line in its caption: the presenter is AI-generated and is not a real customer. The interesting part is not the line. It is where the line is enforced.
The problem with asking nicely
A generated presenter who reads as a satisfied customer can be treated as a fake testimonial under the FTC Endorsement Guides and the 2024 Rule on Consumer Reviews and Testimonials. The obvious mitigation is to tell the model, in the prompt that writes the script and the caption, to include a disclosure. That works most of the time, and most of the time is exactly the problem: a prompt is a request. Models drop instructions under long contexts, rephrase them into something softer, or comply in the script and forget in the caption.
Where the check lives
So the disclosure is checked at the boundary where an ad leaves the system. The publish step inspects the caption of every payload and refuses any that lacks the disclosure, whatever was written upstream. Nothing else can post, so nothing else can post without it. The script prompt still forbids first-person experience claims, and the output is still checked afterwards, but those are defence in depth. The control is the refusal.
Why this shapes the whole product
Once you decide the disclosure is a control, other decisions follow. The presenter cannot be a real person, because no caption fixes a borrowed likeness. Comment and message replies go through the same first-person-claim gate as the scripts, because a reply is a publication too. And the demo ads on our own site say plainly that their brands are invented and their presenters generated, because the rule has to hold for us before it can hold for anyone else.
A prompt is a request. A check is a control. Ads should be built on controls.
By Haze Tech Solutions. Everything here describes what the pipeline does today.