> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allyy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# From predictions to decisions

> How Allyy turns model scores into an optimised, ranked action list

A prediction tells you *how likely* or *how much* for each supporter. A **decision** turns that into action: **who to contact, in what order, and how far down the list to go** — given your budget and goals.

<Note>
  "Decision" is the combination and optimisation of one or more model scores into a contact list. (Not to be confused with [content recommendations](/integrations/content_recommendation), which is a separate recommender feature for your CMS.)
</Note>

## Why scores aren't enough on their own

Ranking by a single score is a good start, but the best campaigns combine signals and account for cost:

<CardGroup cols={2}>
  <Card title="Combine signals" icon="layer-group">
    Multiply **propensity × expected amount** to rank by **expected revenue**, not just likelihood — a supporter who'll *probably* give a little may be worth less than one who'll *possibly* give a lot.
  </Card>

  <Card title="Account for cost" icon="scale-balanced">
    Every contact costs money. Past a point, mailing more people *lowers* profit. The decision finds where to stop.
  </Card>
</CardGroup>

## What a decision does

<Steps>
  <Step title="Brings scores together">
    It pulls in the relevant model scores for your population — for example DM propensity plus expected amount.
  </Step>

  <Step title="Computes a decision value">
    It combines them (e.g. expected revenue) and ranks every supporter.
  </Step>

  <Step title="Optimises the volume">
    Using a **profit curve** — expected income minus cost as you contact more people — it identifies the volume that maximises return, and where you break even.
  </Step>

  <Step title="Segments and labels">
    It can split the list into segments (e.g. high-potential vs standard), reserve a slice for testing under-explored supporters, and hold out a control group to measure impact.
  </Step>

  <Step title="Produces the final list">
    The output is a ranked, labelled contact list ready to [export](/predictions/exporting).
  </Step>
</Steps>

## The profit curve, in plain terms

Imagine ordering every supporter best-first. As you add more, total income keeps rising but each extra contact adds cost and brings a less-likely supporter. Plot profit against volume and you get a hump: profit climbs, peaks, then falls.

<CardGroup cols={3}>
  <Card title="Optimal volume" icon="arrow-up">
    The peak — contact this many for maximum profit.
  </Card>

  <Card title="Break-even" icon="equals">
    The point past which extra contacts cost more than they bring in.
  </Card>

  <Card title="Confidence band" icon="wave-square">
    A range around the peak — the curve is often flat on top, so nearby volumes are about as good.
  </Card>
</CardGroup>

<Tip>
  The model-evaluation dashboards let you explore exactly this with a cost-per-letter input and an as-is vs optimised comparison — see [Model evaluation dashboards](/dashboards-evaluation/index).
</Tip>

## Testing and fairness

Good programmes keep learning. A decision can:

* **Hold out a control group** so you can prove the uplift versus not contacting.
* **Reserve an exploration quota** — deliberately include some lower-scored or under-contacted supporters so the model keeps learning about them rather than only ever mailing the obvious choices.
* **Run experiments** — split supporters into arms (e.g. standard vs higher ask) to measure what works.

## Next

→ [Exporting decisions](/predictions/exporting)
