Self-build
When it fits
- Maximum control
- In-house ad-tech team
- Own ops and billing
Why teams still switch
- Keep UX and data rules
- Avoid auctioning and SSP ops
- Outsource proof and billing
System overview
Your model call and the ad auction run in parallel; the market sees only a minimal delivery signal; filled slots produce signed proof.
wavebird does not replace the model path. When your GenAI-Apps sends a prompt, your app still calls the model as usual. In parallel, wavebird prepares a market-side request from the reduced signal your app allows for delivery.
Those two paths run at the same time. If an ad is available when inference completes, your app renders it in the configured surface. If not, the response still arrives normally. The product path stays primary; the ad path is opportunistic.
The recommended delivery signal is topic category + language (not raw prompt text). See the data firewall.
Semantic relevance is opt-in via explicit consent and CS profiles. See Compute Sponsoring.
If config or consent is invalid, the sponsor path stops and the model response proceeds. See Safety.
wavebird translates the delivery signal into an OpenRTB 2.6 bid request and runs the auction during the model wait window.
Multiple bidders compete for the slot. The winning creative is returned to your app and rendered in the surface you configured (banner or video).
If no bidder responds or no ad meets your rules, the result is a no-fill. In that case, no ad is shown and no revenue is generated for that prompt. The model response is delivered normally.
Average time from filtered signal to matched ad: under 20ms based on internal measurements.
Filled slots create signed proof that can be audited and reconciled. See Engineering Evidence.
See the full example in the Quickstart.
integration-flow.ts
typescript
const job = await client.createJob({
job_type: "chat",
model_id: "gpt-4o-mini",
locale: "en-US",
prompt: { text: userMessage },
slots_requested: 1,
});
const decision = await client.getDecision(job.slot_ids[0]);
if (decision.fill) {
renderAd(decision.creative);
}wavebird implements Compute Sponsoring v1.0. The current rollout uses the standard's situational, no-persistence path documented there.
Related
Last updated: 2026-03-21
Ads are usually not the hard part. The real choice is ownership: market access, consent, proof, billing, and rollout.
When it fits
Why teams still switch
What works
What is missing
When it fits
Where it falls short
What you get
Why wavebird sits on top
Next step
Start with the SDK for the production path, or talk to the team if you want rollout, placement, or partnership guidance.