Solutions/Use case

Serve the features you trained on.

A model trained on the notebook's version of a feature and served a production approximation drifts silently. Signals builds the training set and serves the live value from one definition, so what the model learned from is what it reads at inference.

14 days · no card · no sales call
The moment, as it happens
  1. Training
    failed_searches_session computed as of each moment worth predicting from

    The dataset builder labels the moment and computes the attribute from only the events before it.

  2. Now
    The same definition runs on the live stream

    Streaming engine, kept current for every open session.

  3. +6ms
    Your model reads it at request time

    No second implementation to keep in step.

One definition.training and serving read the same thing
Why it usually fails

Notebook features never reach production.

The feature works in the notebook. Then someone rewrites it for the serving path, the two drift, and nobody notices until the model quietly degrades. Every new feature is another ticket and another copy to keep in step.

Two implementationsThe notebook and the serving path never agree for long.
No history at serving timeThe online store knows now; the warehouse knows before.
Every feature is a ticketData engineering owns the path from notebook to production.
Training data that peeks aheadFeatures computed over the whole session leak the outcome. The model tests well, then fails in production.
What you build

Define once. Train on history, serve on the stream.

01 · Define

Write the feature as an attribute

Counts, recency and order over the events you already collect, keyed on user, session or listing.

02 · Train

Build the training set from the same definition

Name the outcome. Signals labels your history and computes each attribute as it stood at that moment, into a table in your warehouse.

03 · Serve

Read it at inference from the streaming engine

One call returns every feature in the service, in single-digit milliseconds.

Service: ranker_features3 attributes
AttributeKeyWindowRead by
failed_searches_sessionsessionthis sessionSearch ranker
categories_vieweduser30 daysRecommendation model
basket_valuebasketliveOffer model
What changes

The model sees what it was trained on.

1 definition

Streaming for now, batch for history

0 copies

Second implementation of a feature for your team to maintain

6ms

Added at inference, p50 in-region

any key

user · session · basket · listing · store

Start with one attribute.

Define it, read it in your own product, and see it change while you click around. 14 days, no card, no sales call.