From conversation to revenue in three steps.
Velocity intercepts nothing and stores nothing. It reads the context your assistant already has, matches once per session, and delivers one labeled result. The whole cycle completes in under 8ms.
Intent Detection
At each conversation turn, Velocity runs a lightweight on-device NLP pass over the full conversation thread. It extracts a structured intent vector: what product category is implied, what stage of the buying journey is the user in, how specific is the technical detail.
This classification uses a model under 2MB that runs in the browser or on your server. It never transmits conversation content outside the user session. The result is a scored intent signal, not a user profile.
If no high-confidence intent is found, nothing is served. Velocity does not fill with a generic fallback when context is absent.
intent_vector = {
"category": "cloud_database",
"stage": "comparison",
"tech_specificity": 0.87,
"commercial_signal": 0.94,
"session_ad_served": false
}
Contextual Matching
The intent vector is sent to the Velocity match service via a minimal API call. The service scores the vector against the live advertiser catalog, which is indexed by intent cluster, bid, and publisher category inclusion.
The matching algorithm selects the highest-scoring placement that satisfies three constraints: commercial relevance above threshold, no publisher-excluded categories, and bid economics clear.
If a conflict exists between two equal-scoring placements, priority goes to the publisher's preferred category list. The whole scoring pass resolves in under 8ms. No external DSP roundtrip, no cookie sync.
// Match service response
{
"matched": true,
"advertiser": "supabase",
"relevance_score": 0.91,
"bid_cpm": 3.45,
"latency_ms": 6.3
}
Stream Injection
The matched placement is returned to your SDK and rendered at the optimal turn position. The placement uses a standardized markup structure that your assistant's UI renders as a clearly labeled sponsored card.
Once a placement has been served in a session, the session flag is set and no further placements are served for the remainder of that conversation, regardless of how many additional high-intent turns follow.
The publisher controls turn position (turn 2, 3, or 4), maximum in-session frequency (always 1), and the visual styling of the "Sponsored by Velocity" badge to match their product's aesthetic.
Platform specifications
Numbers your engineering team will ask for before approving any third-party SDK.
| Specification | Value | Notes |
|---|---|---|
| Match latency (p99) | <8ms | End-to-end from intent vector to match response |
| SDK bundle size | <8KB | Gzip compressed, ESM + CJS builds available |
| On-device NLP model | <2MB | Loads once, cached in service worker |
| Placements per session | 1 | Hard cap, not a configuration |
| Personal data stored | None | No user identifiers, no cross-session data |
| GDPR data basis | Article 6(1)(f) | Designed on legitimate interest grounds; no personal data processed |
| Uptime SLA (Studio+) | 99.9% | Quarterly rolling average, measured at API |
| Graceful degradation | Returns null match | No placement injected if service unavailable |
| Turn positions supported | 2, 3, or 4 | Publisher configures preferred position per assistant |