Dynamic vs static
Dynamic
A filter tree. “VIPs who haven’t bought in 30 days.” Membership is
computed on read — always current.
Static
An explicit set of contacts. “The 200 people I hand-picked for early
access.” Members are added and removed by you.
v1 filter fields
The segment builder and the AI parser expose eight fields:Direct API callers can also filter on safe native contact columns (name,
email, phone, locale, timezone, created/updated dates, consent timestamps).
A handful of fields (city, source, engagement, CLV) are gated as
post-launch.
Predictive scores
Predictive fields are first-class and scored daily by a heuristic model (heuristic_v1), reproducible from an append-only score log.
Purchase likelihood
Purchase likelihood
Will this contact buy soon?
likely / unlikely / unknown.Churn likelihood
Churn likelihood
Risk of going dormant.
high_risk / medium_risk / low_risk.VIP likelihood
VIP likelihood
High-value customer signal.
Responsive channel
Responsive channel
Which channel this contact engages with —
email / sms / both /
none.Every predictive value traces back to a stored snapshot with its model name
and inputs. Scores are never invented — they’re recomputed from real
engagement.
Building a segment
- Visual builder
- Natural language (AI)
- RFM presets
Add conditions and groups. Combine with AND/OR. Live counts come from a
preview endpoint as you build.
Using segments
- Campaigns target a segment.
- Flows use segments in audience gates and branch conditions.
- Ad audiences sync a segment 1:1 to Meta or Google Customer Match.
- The API filters contacts by
segmentIdand manages static membership.

