- Taste clusters — segments of likely buyers for this event.
- Suggested clusters for a given budget and goal — what to actually spend on.
- Expected value — predicted tickets sold and revenue for any cluster selection.
- Default campaign parameters — sensible budget / goal / cluster defaults so you don’t ask the user to start from scratch.
client-api.{env}.future-demand.com/api/v3) and share its auth
(see Authentication).
Taste clusters
A taste cluster is a learned segment for one specific event. It is not a generic audience — it is “people likely to buy a ticket to this event, grouped by why.” Clusters are versioned bytc_run_id.
metric_pred is the model’s predicted score for this cluster on this
event (higher = more likely to buy). It is on a 0–5 scale — the
reference webapp converts it to a percentage for display
(metric_pred / 5 * 100). size_share is the cluster’s share of the
total reachable audience.
Suggested clusters at a budget
The Wave wizard doesn’t make the user pick clusters cold — it asks the Client API for the suggested mix at the user’s target budget and goal.| Goal | What it optimises |
|---|---|
UTILIZATION | Filling capacity |
ROAS | Return on ad spend |
VISIBILITY | Reach / impressions |
LINK_CLICKS | Clicks to the ticketing page |
Expected value
To get a predicted-value summary for the budget/goal:expected_value string, not per-cluster
breakdown. Render it as the headline outcome estimate.
Default campaign parameters
integration_details, conversion_id,
custom_event_type, and lead_form_id. Surface these as defaults the
user can change, not hard constraints.
Budget min/max
CTA suggestions
For the campaign creative editor:How recommendations interact with campaigns
A campaign is uniquely identified by(eid, tc, tc_run_id). When the
clustering model re-runs (because the event’s data changed materially),
the new run produces new clusters with a new tc_run_id. Existing
campaigns keep their old run — that’s intentional, so an active campaign
isn’t disrupted by a model refresh.
In your UI:
- Lookout — read
clustersand show the latest run. - Wave — when starting a new setup, take the latest run and lock the
tc_run_idfor the duration of the wizard. When the user edits a running campaign, keep its existingtc_run_id.
Geo radius helper (Meta targeting)
For partners using Meta as the ad platform, the Client API also provides a radius suggestion:distance_unit must be mile or kilometer (not km). Response:
Caveats
These recommendations are per-event
These recommendations are per-event
There is no “global audience” endpoint here — these recommendations
always live under
/events/{eid}/. For on-site personal
recommendations independent of a specific event, see
Affinity.Cluster set sizes vary across events
Cluster set sizes vary across events
Don’t hard-code “show top 5 clusters”. Some events have 3, some have 12.
Render whatever the API returns and let the user pick within it.
Cold-start events return empty clusters
Cold-start events return empty clusters
Newly-ingested events without enough historical signal return
clusters: [] until the platform finishes computing recommendations.
The reference webapp shows an empty-state with a “still computing”
message — mirror that.`metric_pred` is comparable within an event, not across events
`metric_pred` is comparable within an event, not across events
A 4.2 on one event doesn’t mean the same thing as 4.2 on another. Don’t
rank events by their clusters’ scores.