Repository navigation
Add predictive attributes docs - #1994
Jack Keene (Jack-Keene) wants to merge 10 commits into
Conversation
Missing SEO metadataThe following markdown files are missing required metadata fields:
Required fieldsThe file metadata is important for SEO and marketing. All markdown files, except for those with filenames starting with
Please add the missing metadata. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
documentation | 8818ccb | Commit Preview URL Branch Preview URL |
Oct 30 2026, 04:49 PM |
|
Style review The PR is well written and follows most conventions. Frontmatter is complete, internal links use 1. Multi-sentence list items are missing periods
Rule: style guide, Lists: "No period at the end unless the item contains multiple sentences."
2. Time-relative wording
Rule: style guide, Writing style: "Stay in the present tense. Never use 'currently', 'now', 'in the future'…". The word "yet" implies a roadmap in the same way. 3. Passive, ambiguous sentence in the attribute groups page
Rule: CLAUDE.md, Writing style: "Use active voice." Because of the comma, a reader can't tell whether "while … published" applies to deleting too. 4. Non-imperative headings (minor) Rule: CLAUDE.md, Headings: "Prefer imperative voice." No external URLs were added or modified in this PR. |
|
|
||
| A predictive attribute is a score between 0 and 1 for how likely a session is to reach a goal you define, for example a purchase or a sign-up. Signals trains a model on the history of your existing stream [attributes](/docs/signals/attributes/index.md) in your warehouse, then scores sessions in real time from the latest values of those attributes. | ||
|
|
||
| Use a predictive attribute when you want to act on intent before it shows up in the data. A rule such as "three product views and an add to cart" captures one pattern you already know about. A predictive attribute learns from every input attribute you give it, and weights them by how often they preceded the goal in your own data. Typical uses include showing a discount only to sessions unlikely to convert on their own, prioritizing high-intent sessions for live chat, or ranking which users to retarget. |
There was a problem hiding this comment.
A rule such as "three product views and an add to cart" captures one pattern you already know about.
Not really following what this is supposed to mean – does it refer to a goal or an attribute?
|
|
||
| Signals turns your event history into training examples, then trains a binary classifier on them. Understanding how the examples are built helps you choose the training settings. | ||
|
|
||
| Every event in a session that comes before the session's first goal event is a candidate example, called an anchor. For each anchor, Signals calculates the value each input attribute had at that moment, using only events before the anchor. The label is `1` if the session went on to reach the goal, and `0` if it didn't. This means the model learns from the same partial view of a session that it sees when it scores a live session. |
There was a problem hiding this comment.
Every event
It's not necessarily every event, right? Depends on max_anchors_per_session and min_events and excluded_events.
| * Signals Python SDK | ||
|
|
||
| Once published, [retrieve a predictive attribute score](/docs/signals/applications/predictive-attributes/index.md) in your application. | ||
|
|
There was a problem hiding this comment.
Maybe it'd be worth adding a note with a link to the /docs/signals/ml-training-datasets/ page at some point saying that this is what the feature builds on and noting that if someone wants to train their own model, they can also do it?
c990e8e to
8dc423e
Compare
jborlase-snowplow
left a comment
There was a problem hiding this comment.
Few small points. Looks good!
|
|
||
| A predictive attribute predicts how likely a session is to reach a goal you define, such as a purchase or a sign-up. Signals trains a model on your own stream [attribute](/docs/signals/attributes/index.md) definitions, then returns a score between 0 and 1 each time your application requests one. | ||
|
|
||
| Use a predictive attribute when you want a propensity score in production without building the pipeline around it. A propensity model usually needs labeled training data, a feature pipeline, a way to serve the model, and features in production that match the ones the model trained on. Signals builds the training data and serves the model from your attribute definitions, using the same definitions for both. Compared with a hand-written rule, such as an [intervention](/docs/signals/interventions/index.md) that triggers on a given rule, a predictive attribute learns from your own data which inputs matter and how much. For example, use it to show a discount only to sessions unlikely to convert on their own, or to route high-intent sessions to live chat first. |
There was a problem hiding this comment.
I think we can leave comparison to interventions out - might confuse some people
|
|
||
| A predictive attribute predicts how likely a session is to reach a goal you define, such as a purchase or a sign-up. Signals trains a model on your own stream [attribute](/docs/signals/attributes/index.md) definitions, then returns a score between 0 and 1 each time your application requests one. | ||
|
|
||
| Use a predictive attribute when you want a propensity score in production without building the pipeline around it. A propensity model usually needs labeled training data, a feature pipeline, a way to serve the model, and features in production that match the ones the model trained on. Signals builds the training data and serves the model from your attribute definitions, using the same definitions for both. Compared with a hand-written rule, such as an [intervention](/docs/signals/interventions/index.md) that triggers on a given rule, a predictive attribute learns from your own data which inputs matter and how much. For example, use it to show a discount only to sessions unlikely to convert on their own, or to route high-intent sessions to live chat first. |
There was a problem hiding this comment.
I would split out the examples into a few bullets with them so it’s clear
| platforms: | ||
| - "Snowflake" | ||
| --- | ||
| Stream attributes tell you what a user has done in a session: how many products they've viewed, what they added to their cart, how long since their last search. Deciding what that means for the session's outcome has meant writing rules by hand, such as "three product views and an add to cart", and guessing at the thresholds. |
There was a problem hiding this comment.
Let’s try talk to audience that might not be familiar with Signals - so let’s not talk attributes. We could say signals helps you understand what your users are doing in real-time, but it’s difficult to understand what they are going to do next - or if they will convert…
| --- | ||
| Stream attributes tell you what a user has done in a session: how many products they've viewed, what they added to their cart, how long since their last search. Deciding what that means for the session's outcome has meant writing rules by hand, such as "three product views and an add to cart", and guessing at the thresholds. | ||
|
|
||
| A predictive attribute replaces the guess with a model. You define a goal, such as a `transaction` event, and choose the stream attributes that describe the behavior leading up to it. Signals trains a model on your event history, then scores live sessions from the current values of those attributes. The score is a number between 0 and 1 for how likely the session is to reach the goal. |
There was a problem hiding this comment.
It’s very Opus to talk about something in the abstract like “a guess” here
…mentation into predictive-attributes-docs
What changed?
Adds documentation for predictive attributes in Signals.
New pages:
docs/signals/predictive-attributes/: define a predictive attribute in Console or the Python SDK. Covers how training builds examples, choosing inputs and the goal, checking the data, training options, reading the metrics, and publishing, retraining, and rolling back.docs/signals/applications/predictive-attributes/: retrieve a score with the Python SDK, Node.js SDK, or API. Covers identifiers for each attribute key, the response, how to interpret the score, and error codes.release-notes/new-in-signals-predictive-attributes/: product news announcement.Updated pages:
docs/signals/concepts/: adds predictive attributes as a fifth component, with a short section on what they are and how versioning works.docs/signals/applications/: links the new retrieval page.docs/signals/attributes/attribute-groups/: notes that you can't delete an attribute group version used by a predictive attribute, or unpublish it while that predictive attribute is published.Why?
Predictive attributes are merged in the Signals monorepo (#756, #767, #774, #776, #786, #798, #800, #801), the Python SDK (#165), and the TypeScript SDK (AISP-1584). The structure follows the agentic contexts and agentic attributes pages: one page to define the resource, and one to use it in your application.
Reviewer guidance
Every product claim was checked against
origin/mainofsignals-monorepo,snowplow-signals-python-sdk, andsnowplow-signals-typescript-sdk, and against the capability doc onsignals-monorepobranchdocs/predictive-attribute-capability.Please check:
0.4.10) or Node.js SDK (changeset pending, still0.4.1). This PR should wait for those releases, or add the minimum versions once known.feat/predictive-attributes-pocbranch ofmsc-frontend-service. Labels match that code but may change, and there are no screenshots yet.Unrelated, not changed here:
docs/signals/attributes/attribute-groups/says deleting a group version used by a published intervention unpublishes the intervention, but the API blocks the delete instead.AI reviews
Claude will automatically review this PR against the docs style guide.
If you have questions or want it to look again at something specific, tag
@claudein a comment.🤖 Generated with Claude Code