Skip to main content

Overview

These following tables are available within the Aampe data share:
  • AAMPE_CONTACT_PROFILES - describes users in terms of Aampe labels
  • AAMPE_MESSAGE_EVENTS - describes Aampe message events, message and assignment details
While there are many potential applications, customers generally find these datasets useful for
  • Reporting and monitoring
  • Causal inference and offline message evaluation
  • Inputs into various AI models (llm prompts, ML features, etc.)

User Profiles

Aampe generates a profile for each user that has interacted with an agent.

The propensity for each label within a given label set reflects the agent’s estimate for how often that label will outperform the other label options. (If I were to simulate 100 messages from Aampe for each user, how often would the agent choose each label?)

AAMPE_CONTACT_PROFILES

ColumnTypeDescription
contact_idSTRUnique person identifier
propensities_offeringARRAYUser propensities for each offering
propensities_valuepropositionARRAYUser propensities for each value proposition
propensities_toneARRAYUser propensities for each tone label
propensities_timingARRAYUser propensities for each timing window
propensities_channelARRAYUser propensities for each channel
The propensity arrays contain scores that sum to one and look like the following:
[
	{"label_id":5678, "propensity":0.5432, "label_name":"Food"},
	{"label_id":6789, "propensity":0.4568, "label_name":"Travel"}
]

User Profiles - Example Queries

// for a given user, what's their propensity for each offering label

SELECT 
  contact_id, 
  label_name, 
  propensity
FROM aampe_contact_profiles,
UNNEST(propensities_offering)
WHERE contact_id = '1a2b3c4d'
ORDER BY propensity DESC

Aampe Messages

Agents save the details of each decision they make, including the parameters of the statistical models, sampling results, and the final decision result.

With a row for every message event, this table helps with for day-to-day reporting and monitoring. It also plays a key role in offline analysis and causal inference.

AAMPE_MESSAGE_EVENTS

ColumnDescription
aampe_message_id (pk)STRAampe’s unique identifier for a message event
provider_message_idSTRThe event identifier from the message provider (e.g. Braze). Not available for all message providers.
contact_idSTRUnique person identifier
message_timestampTIMESTAMPWhen the message was sent
received_timestampTIMESTAMPWhen the message provider confirmed a successful delivery.
message_timezoneSTRTimezone for message_timestamp
message_formula_idINTNumerical Identifier for a message formula (called “messages” in the Aampe composer.)
message_formula_nameSTRName for a message formula (called “messages” in the Aampe composer)
message_contentSTRUCTtitle: title of message
body: main message content
message_diversity_scoreFLOATComputed by Aampe. When several message alternates are available within a chosen set of labels, we send the alternate with the best message diversity score. This ensures messages vary their language even if the offering or value proposition is the same.
reward_baselineFLOATComputed by Aampe. This is the reward Aampe expects to observe if the agent does nothing.
channel_assignment_idSTRUnique decision ID for channel selection
channelSTRChannel
timing_assignment_idSTRDecision ID for timing selection (potentially a joint decision with channel)
timing_label_assignedSTRlabel_set: the decision being made (typically “day_time” for timing decisions)
label_id: numeric ID for the timing label
label_name: human-friendly name for the timing label
score: Model score for timing-decision model
assignment_type: description of the model output (is it exploratory or not)
trigger_idSTRIdentifier for trigger associated with message. There is always a trigger id, even if the message was not triggered by an event.
messaging_typeSTREither “controlled” (scheduled message blasts). Or “automated” which means an agent decided the message to send and when to send it.
copy_assignment_idSTRDecision ID for message copy elements
tagsARRAYArray of tags associated with the message event
message_toSTRDelivery to address
message_fromSTRDelivery from address
message_dateDATEDate of message_timestamp - for easier partioning when needed
click_actionSTRType: what happens when the message is clicked (e.g. deeplink)
Value: deeplink URL or other api call resulting from click
image_urlSTRImage URL (when not included in message_content
reward_deltaFLOATThe extent to which the message event outperformed expectations (given by reward_baseline).
trigger_nameSTRName of trigger (or else “no trigger”)
copy_assignmentSTRaction_set_family: the agents decision set (typically “copy” for copy decisions)
action_set: Label groups such as value proposition, offering, …
action_name: the specific label
probability: mean-concentation parameter of the Beta distribution for the chosen action
aggregated_signal: another mean-concentation parameter of the Beta distribution for the chosen action

Aampe Messages - Example Queries

// for each message, what were the labels, label parameters, etc.?

SELECT 
    aampe_message_id,
    message_date,
    action_set,
    action_name as label_name,
    probability,
    aggregated_signal
FROM 
    aampe_message_events,
    UNNEST(copy_assignment)
WHERE 
    aampe_message_id = '1234-asdf'