Skip to main content

Marketing: Audience Segmentation

Problem Statement

Building audience segments involves composing filter rules (demographics, behavior, purchase history) into reusable groups. This is a complex query-builder interaction.

Why Human-Only Semantics Fail

  • Filter builders use drag-and-drop with nested AND/OR logic
  • Condition types vary per field (equals, contains, greater-than, between)
  • Segment preview counts are calculated server-side
  • The composition model (union, intersection, exclusion) is purely visual

Why Scraping Fails Here

  • Query builders render as dynamic nested trees
  • Each filter row is a separate component instance
  • Drag-and-drop reordering doesn't change the DOM in a parseable way
  • Preview data requires API calls that scrapers can't trigger

How AXAG Eliminates Scraping

audience.create_segment declares a structured filter schema that agents compose programmatically. No visual interaction required.

Annotated UI Example

Marketing — create audience segment
<button
axag-intent="audience.create_segment"
axag-entity="audience_segment"
axag-action-type="write"
axag-required-parameters='["name","rules"]'
axag-optional-parameters='["description","tags"]'
axag-risk-level="none"
axag-idempotent="false"
axag-description="Create a reusable audience segment with filter rules"
>Save Segment</button>

Semantic Manifest Excerpt

Manifest — audience.create_segment
{
"intent": "audience.create_segment",
"entity": "audience_segment",
"operation_id": "audience_create_segment",
"action_type": "write",
"parameters": {
"name": { "type": "string", "required": true, "maxLength": 100 },
"rules": {
"type": "object",
"required": true,
"properties": {
"operator": { "type": "string", "enum": ["AND", "OR"] },
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": { "type": "string" },
"operator": { "type": "string", "enum": ["equals","not_equals","contains","gt","lt","between","in"] },
"value": {}
}
}
}
}
},
"description": { "type": "string", "required": false },
"tags": { "type": "array", "required": false, "items": { "type": "string" } }
},
"risk_level": "none",
"idempotent": false
}

Generated Tool Example

Tool — audience_create_segment
{
"tool_name": "audience_create_segment",
"description": "Create a reusable audience segment with filter rules",
"input_schema": {
"type": "object",
"properties": {
"name": { "type": "string", "maxLength": 100 },
"rules": {
"type": "object",
"properties": {
"operator": { "type": "string", "enum": ["AND","OR"] },
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": { "type": "string" },
"operator": { "type": "string", "enum": ["equals","not_equals","contains","gt","lt","between","in"] },
"value": {}
},
"required": ["field","operator","value"]
}
}
},
"required": ["operator","conditions"]
}
},
"required": ["name","rules"]
},
"safety": { "risk_level": "none", "idempotent": false }
}

Constraints & Safety Notes

  • No risk — segments are metadata, not user-affecting actions
  • Rules use a composable AND/OR model with typed conditions
  • Field names in conditions reference the data model (e.g., age, purchase_count, last_active)