> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/sdgm/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/sdgm/_mcp/server.

# Feature Adoption Prediction

> Predict which known product features each user will first adopt over the next 30 days.

A product growth team wants to offer each user guidance on features they are likely to start using. This example predicts which product features a user will first adopt over the next 30 days. Kumo Engine learns from users and their connected adoption history to make a multilabel prediction: a user can adopt several features in the same period, or none. The feature categories come from recorded adoption history, so this example assumes the features already have historical adopters.

## Data and relationships

The example assumes a prepared Kumo Engine `graph`, a matching `snapshot`, and these tables:

| Table             | Required data and role                                                                                                                                                                      |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `users`           | `user_id` primary key. The users to score, with optional profile columns.                                                                                                                   |
| `product_success` | `success_id` primary key; `user_id`, `feature`, and `date_of_success`. One row per user's first adoption of a feature, with a categorical feature name and the time of that first adoption. |

Connect `product_success.user_id` directly to `users.user_id`. Mark `date_of_success` as the time column of the product success table and `feature` as categorical.

Define what counts as adoption, such as completing a first successful export or creating a first dashboard. Prepare exactly one adoption row per user and feature, using the earliest qualifying event across the available history. Repeated use of an already adopted feature must not create another adoption row. If the source history starts after a user began using a feature, the earliest recorded event may not represent their actual first adoption.

The `users` table has no time column of its own, so the 30-day window starts at the scoring time. It excludes adoptions at that exact time and includes adoptions through 30 days later.

## Predict which features a user will first adopt

`LIST_DISTINCT(product_success.feature, 0, 30, days)` collects the distinct features a user first adopts in the next 30 days. `CLASSIFY` makes those feature names the labels of a multilabel classification task. A historical window with no first adoptions has an empty target set. A window with two different first adoptions has both feature labels.

```python
from kumo.engine import PredictiveQuery

query_text = (
    "PREDICT LIST_DISTINCT(product_success.feature, 0, 30, days) "
    "CLASSIFY FOR EACH users.user_id"
)
query = PredictiveQuery(graph, query_text)
query.validate()
print(query.get_task_type())  # multilabel_classification
```

The query scores the users in the users table, including users with no adoption history. `LIST_DISTINCT` does not find the first use of a feature for you. The prepared product success table makes the target describe first adoption rather than repeat usage.

## Reading the predictions

The prediction estimates each user's likelihood of adopting each learned feature category in the coming 30 days. Several features can have high scores for the same user because the outcomes are not mutually exclusive. A higher score for `dashboard` indicates a stronger expectation of a first dashboard adoption during that period.

Use these scores to prioritize feature education or onboarding prompts. Before choosing a prompt, check whether the user has already adopted the feature and whether it is available on their plan. The scores describe expected adoption from historical patterns; they do not measure how much a prompt would increase adoption. Evaluate that effect separately when deciding which outreach to send.