Skip to main content

Methodology

How TasteLab actually works.

The short version is on this page first, in plain English. Below that is the full technical detail, because if you are going to trust a number you should be able to check how it was worked out.

In plain English

01

You bring a catalog

A list of the things you could show people — songs, articles, videos, products, courses. A title is the only column we actually need.

02

You describe some listeners

Made-up profiles: someone who loves new things, someone who sticks to favourites, someone who just signed up. You invent them; they are not real people.

03

We pretend they use your product

A few hundred imaginary browsing sessions. Each time, we pick what to show using whichever strategy you chose, and note what happened.

At the end you get ten numbers. The important ones are usually how good the matches were and how much of your catalog anyone actually saw. Almost every recommendation strategy trades one of those for the other, and the whole point of TasteLab is to show you the size of that trade before you build anything.

Everything below is the technical detail behind those numbers. You do not need it to use the product.

The technical version

For engineers evaluating whether the numbers mean anything. Seven steps, no model involved in producing any figure.

  1. 01

    Build the feature space

    Every catalog item becomes a sparse unit vector over categories, tags, creator identity, a popularity band and an energy band. The vocabulary is built deterministically from your own catalog, so the same import always produces the same space.

  2. 02

    Build the audience vector

    Preferred categories and tags enter as positive components; disliked categories enter as negative ones. An audience with no stated preference produces a zero vector, which yields a neutral affinity of 0.5 for every item rather than a false signal.

  3. 03

    Derive behavioural associations

    Positive events within a session form item-to-item co-occurrence counts, normalised by the geometric mean of each item’s frequency. With no event data the behavioural signal is dropped entirely and the remaining weights are re-normalised — the run records that this happened.

  4. 04

    Score every candidate

    Five signals — affinity, popularity, behavioural association, novelty and recency — are computed per item, each on a 0–1 scale, then combined using the strategy’s normalised weights.

  5. 05

    Re-rank

    Greedy maximal-marginal-relevance selection. Each slot is penalised by the candidate’s maximum similarity to everything already chosen, by a repetition penalty from that user’s history, and shifted by seeded exploration noise.

  6. 06

    Simulate responses

    Each simulated persona responds to each impression through a transparent acceptance model built from affinity, novelty fit, popularity fit and repetition fatigue. All randomness is seeded.

  7. 07

    Calculate metrics

    Ten metrics computed arithmetically from the run’s output. No model is involved at any point in producing a number.

The eight strategies

Signal weights are normalised to sum to 1 before scoring, so only their ratios matter. Diversity, exploration and the repetition penalty are independent controls applied during re-ranking, not part of the signal budget.

  • Popularity Baseline

    Ranks by normalised popularity with a light recency tilt.

    The control arm for every comparison. It ignores individual preference almost entirely, so it shows what your catalog looks like when nothing is personalised. Expect strong apparent relevance and very poor catalog coverage.

    Content affinity
    5%
    Popularity
    85%
    Behavioural association
    0%
    Novelty
    0%
    Recency
    10%
    diversity 0exploration 0repeat penalty 10
  • Content Affinity

    Matches audience preferences against categories, tags and metadata.

    Scores each item by overlap between the audience preference vector and the item feature vector. Works on day one with no behavioural data, and is the usual starting point for cold catalogs.

    Content affinity
    80%
    Popularity
    5%
    Behavioural association
    0%
    Novelty
    5%
    Recency
    10%
    diversity 10exploration 5repeat penalty 20
  • Behavioral Co-occurrence

    Uses session co-occurrence between items to estimate relationships.

    Builds an item-to-item association matrix from imported or synthetic events, then scores candidates by their association with the audience’s strongest affinities. Requires event data; without it TasteLab re-normalises the remaining signals and says so.

    Content affinity
    15%
    Popularity
    10%
    Behavioural association
    65%
    Novelty
    5%
    Recency
    5%
    diversity 10exploration 5repeat penalty 25
  • Hybrid

    Blends affinity, behavioural association and popularity.

    The configuration most production systems converge on. Usually posts the highest relevance proxy while quietly concentrating exposure in a small slice of the catalog — which is exactly what the comparison view is for.

    Content affinity
    35%
    Popularity
    20%
    Behavioural association
    25%
    Novelty
    10%
    Recency
    10%
    diversity 20exploration 10repeat penalty 30
  • Discovery Balanced

    Trades a little relevance for materially wider catalog exposure.

    Raises the novelty signal and the exploration control so lower-popularity items can enter the list, while keeping affinity dominant. Designed to answer “how much relevance does discovery actually cost?”.

    Content affinity
    40%
    Popularity
    5%
    Behavioural association
    15%
    Novelty
    30%
    Recency
    10%
    diversity 35exploration 25repeat penalty 45
  • Diversity First

    Maximises dissimilarity between consecutive recommendations.

    Applies aggressive maximal-marginal-relevance re-ranking so each slot is penalised by its similarity to everything already selected. Reduces filter-bubble risk and repetition; costs the most relevance of any strategy here.

    Content affinity
    35%
    Popularity
    10%
    Behavioural association
    10%
    Novelty
    20%
    Recency
    25%
    diversity 60exploration 20repeat penalty 50
  • Cold Start

    Explicit preferences, catalog priors and controlled exploration.

    For users with little or no history. Leans on stated preferences plus catalog-level priors, and deliberately explores so the system can learn something from the first few sessions instead of collapsing onto the head of the catalog.

    Content affinity
    50%
    Popularity
    25%
    Behavioural association
    0%
    Novelty
    10%
    Recency
    15%
    diversity 30exploration 30repeat penalty 35
  • Custom Weighted

    Define your own signal weights and control parameters.

    Every signal weight and control is yours to set. Signal weights are normalised to sum to 1 before scoring, so only their ratios matter; controls are applied independently during re-ranking.

    Content affinity
    35%
    Popularity
    20%
    Behavioural association
    25%
    Novelty
    10%
    Recency
    10%
    diversity 20exploration 10repeat penalty 30

The ten things we measure

Each one is plain arithmetic over what the simulation produced. The AI is allowed to explain these numbers and is structurally prevented from producing them.

What we measureWhich way is goodThe question it answersHow it is worked out
Good matchesRelevance proxy↑ HigherDid people get shown things they'd actually like?Mean of 0.7 × content affinity + 0.3 × popularity fit across every recommended item, weighted by exposure count. Affinity is the cosine between the audience preference vector and the item feature vector, mapped to 0–1. This is a proxy computed from your inputs — it is not measured engagement.
VarietyDiversity↑ HigherWas there enough variety, or the same things over and over?1 − mean pairwise cosine similarity over every item pair in a simulated user’s full sequence of impressions, averaged across users. Similarity uses the catalog feature space (category, tags, creator, popularity band, energy band). A repeated item scores a similarity of 1 against its earlier appearance, so recycling the same items between sessions lowers this figure.
Beyond the hitsNovelty↑ HigherDid people discover anything, or only the obvious popular stuff?Exposure-weighted mean of (1 − normalised popularity). The detail panel also reports the share of exposures drawn from the least-popular 80% of the catalog.
Catalog reachedCatalog coverage↑ HigherHow much of your catalog did anyone actually see?Distinct items exposed ÷ total eligible catalog items. Items never shown to anyone are listed in the detail panel.
CrowdingPopularity concentration↓ LowerIs attention piling onto a few items while the rest get nothing?Gini coefficient of the exposure distribution. 0 means every item was shown equally often; 1 means a single item absorbed all exposure. The Lorenz curve behind it is plotted in the concentration chart.
RepeatsRepetition rate↓ LowerHow often did someone get shown the same thing twice?Repeat impressions ÷ total impressions, where a repeat is any item a given simulated user has been shown in an earlier session of the same run.
Happy surprisesSerendipity proxy↑ HigherDid people find things they liked but wouldn't have guessed?Share of exposures whose relevance proxy is ≥ 0.55 while their maximum cosine similarity to the segment’s 12 most obvious items is < 0.5.
Brand-new usersCold-start resilience↑ HigherHow well does this work for someone you know nothing about?The same strategy is re-run against a cold variant of each segment (preferences reduced to a single anchor, behavioural history removed). Scored as 0.5 × cold relevance + 0.5 × (1 − cold concentration).
Creators reachedCreator coverage↑ HigherHow many of your creators got any attention at all?Distinct creators exposed ÷ distinct creators in the catalog. The detail panel reports the exposure share held by the top creator.
Categories reachedCategory coverage↑ HigherHow many of your categories got any attention at all?Distinct categories exposed ÷ distinct categories in the catalog, with the per-category exposure share in the detail panel.

CSV formats

Catalog import

Only title is required. Every other column is optional and improves the simulation. Unrecognised headers can be mapped by hand or set to ignore.

  • id
  • title
  • creator
  • category
  • tags
  • description
  • popularity
  • published_at
  • duration
  • price
  • metadata
id,title,creator,category,tags,popularity,published_at
lum-001,Slow Harbour Lights,Vera Ostlund,Ambient,"calm; evening",0.91,2026-01-12

Event import

user_id, item_id and event_type are required. Item ids must already exist in the catalog.

  • impression
  • view
  • click
  • save
  • like
  • skip
  • complete
  • add_to_cart
  • purchase
  • dismiss
  • share
user_id,item_id,event_type,timestamp,session_id
u-0001,lum-001,view,2026-05-02T09:14:00Z,s-0001

Invalid rows are never silently dropped

Every row that fails validation is reported with its line number, the field that failed and why. You choose whether to import the valid rows anyway.

What TasteLab cannot tell you

TasteLab is a simulation. It is a strong hint about how a recommendation strategy would behave, not a prediction of what your actual users will do. Always confirm with a real test before you ship.

  • It cannot tell you whether people will use your product more. It has never seen a real user.
  • It cannot replace talking to actual customers. The listener types are made up by you.
  • It cannot replace a real A/B test. There is no traffic and no real feedback here.
  • It cannot tell you how big a change needs to be to matter. That comes from your own data.
  • It knows nothing about licensing, availability, editorial choices or business rules.
  • It does not profile real people, and describes listeners only by what they like.

What it is genuinely good at: showing you, before you build anything, which parts of your catalog nobody would ever see, how much attention piles onto the same few items, and exactly what you give up by showing people more variety. See a worked example.

Start here

Prototype the experience
before building the infrastructure.

Explore how different recommendation strategies shape discovery, relevance and catalog exposure using a reproducible simulation.

These results come from a simulation, not from real people. They show how a strategy behaves on this catalog, which is useful for comparing options — but they are not a prediction of what your actual users will do. Try anything promising with real users before you rely on it.