All help topics

True Pyramids

Tiers learned from how recently, how often and how much each donor gives, and who already looks like the tier above.

Quick start

  1. On Pyramids, choose New pyramid, pick True Pyramid and choose Continue with True Pyramid. On an empty dashboard, choose Build a True Pyramid instead.
  2. Give it a Name, pick the gift file to use under Gifts (or Upload a new file), and choose Continue. Three or more years of gifts work best.
  3. Watch it build: we profile every constituent, try different numbers of tiers, keep the one that fits your data best, place everyone and spot who's ready to move up.
  4. Read each tier's plain-language description and where it starts. Choose Rename tiers to give them names your team uses.
  5. In Ready to move up, pick a tier, review the strongest five, then choose View records or Export N IDs to work the list in your CRM.

What a True Pyramid is

A True Pyramid (in Beta) groups your constituents by how they actually give — how recently, how often and how much — instead of by dollar bands someone chose. Machine learning finds the groups in your own file, puts them in order from the top, and describes each one in plain words, such as “Gives monthly · typical year $260”. Everyone who hasn't given in 18 months forms a gray base tier at the bottom (when your file goes back that far).

It then looks at everyone below the top tier and flags those whose giving already looks like the tier above, learning from your organization's own past upgrades when your file has enough history. That's the Ready to move up list: constituent IDs to review with your team for upgrade asks, mid-level invitations or reactivation.

  • Tier 1 Gave in the last 3 months · about 2 gifts a year · typical year $6,800 96 donors · 46% of revenue · top tier
  • Tier 2 3–4 gifts a year · typical year $1,450 488 donors · 26% of revenue · 37 ready to move up
  • Tier 3 Gives monthly · typical year $260 1,210 donors · 15% of revenue · 112 ready to move up
  • Tier 4 About 1 gift a year · typical gift $120 3,410 donors · 13% of revenue · 268 ready to move up
  • Tier 5 No gift in the last 18 months 4,666 donors · 0% of revenue · 403 ready to move up
Sample: 9,870 constituents; 820 already give like the tier above.
The sample True Pyramid from our home page, for a made-up organization: five tiers, the last of them the gray base tier, and how many in each already give like the tier above.

Note: Beta means the method may still change. Tiers are learned from your file alone and learned again with every build. Treat “ready to move up” as a list to review with your team, not a prediction of any one donor's next gift.

True Pyramid or donor pyramid?

Donor pyramidTrue Pyramid
Tiers come fromDollar bands and rules you set (or our standard five)Your data: groups of constituents who give alike
Time spanOne period — a fiscal year, calendar year or the last 12 months — and the one beforeYour whole file, as of its latest gift
Who's in itDonors who gave in the periodEveryone with money received anywhere in the file, including people who haven't given in 18 months
Best answersWho's where, what each tier gives, and who moved up, down or awayWho gives alike, and who already looks like the tier above
You can changeTiers, rules, amounts, names and periodTier names
DataAny gift file; two or more full years show movementAny gift file; works best with 3+ years and about 500 donors

Use a donor pyramid when your team already agrees on dollar bands and you need consistent year-over-year reporting. Use a True Pyramid when your bands feel arbitrary, when you're choosing who to invite into a mid-level or major-gift conversation, or when a small team needs to decide whom to call first. Many organizations build both from the same file; the True Pyramid then shows where your data draws the lines against your donor pyramid's bands.

Creating a True Pyramid

Choose New pyramid on Pyramids, pick True Pyramid and choose Continue with True Pyramid. The setup page asks for:

Name
Required, up to 200 characters. It starts as “Who's ready to move up”.
Gifts
Every gift file your organization has finished importing, newest first, with its number of gifts and import date; the newest is picked for you. Choose Upload a new file to upload a CSV, Excel or ZIP file or connect your CRM on the next page (it says “Building a True Pyramid”). The pyramid starts filling in as soon as the file is imported.

That's all — there are no tiers, amounts or periods to set. Choose Continue and the pyramid opens and starts building. See Uploading gift files and Connecting your CRM.

The data it needs

A True Pyramid builds from any gift file with money received in it. It works best with three or more years of gifts and about 500 donors. With less, we still build everything and warn you:

Your fileWhat happens
Fewer than 500 constituents, or less than 3 years of gifts (give or take a month)A notice: These tiers may be less reliable. “Your file has N constituents and 2 years of gifts. True Pyramids work best with 3 or more years and about 500 donors.”
Less than 18 months of gifts before the latest oneNo gray base tier, because no one can have gone 18 months without a gift.
Less than about two years of gifts, or too few past upgrades“Ready to move up” rests on how closely each constituent resembles the tier above, without learning from your past upgrades. The list says so. See Learning from your own past upgrades.
A small number of recent giversFewer tiers are tried — about 20 recent givers per tier at least. A very small file can end up with one tier above the base.
No money received at allNo gifts to learn from. Planned gifts and open pledges don't count.

Which gifts count

Only money received counts: one-time, recurring, pledge payment and in-kind gifts (see matching gift types). Negative amounts such as refunds are subtracted but aren't gifts. Planned gifts and open pledges aren't money in hand, so they're left out completely. A constituent with no money received anywhere in the file isn't in the pyramid. IDs that differ only in letter case (C-5 and c-5) are the same constituent.

How the tiers are learned

Every build runs the same five steps.

1. A giving profile for each constituent

We take the date of the latest gift of money received in your whole file as the as-of date. “The last 12 months” are the 12 months ending on it, and earlier years are the 12-month spans before that. For each constituent we work out:

  • Typical year — the middle (median) of their yearly totals over the last 3 years, counting only years they gave in.
  • Last 12 months — what they gave in the last 12 months.
  • Gifts per year — their gifts in the last 3 years, divided by how long they've been giving (between 1 and 3 years).
  • Recurring share — the share of those gifts that were recurring.
  • Days since their last gift.
  • Also, for the upgrade model and the reasons it gives: years giving, the trend against the year before, how many years in a row their giving rose, and their typical gift.

2. The gray base tier

Anyone whose last gift is 18 or more months before the as-of date goes in the base tier, drawn in gray at the bottom and described as “No gift in the last 18 months”. They're left out of the grouping so the active tiers describe how people give now. The base tier exists only when your file reaches back at least 18 months.

3. Grouping donors who give alike

Everyone else is grouped on five measures: typical year, last 12 months, gifts per year, recurring share and how recently they gave. Dollar amounts and gift counts are put on a log scale, so $100 to $1,000 is as big a step as $1,000 to $10,000. Each measure is then scaled so no single one swamps the rest, and recency counts half as much as the others. The grouping itself is k-means clustering, using Microsoft's ML.NET.

4. Choosing how many tiers

We don't fix the number of tiers. We try every number from 3 to 7 in all, counting the base tier (so 2 to 6 groups above it, or 3 to 7 when there's no base tier), and keep the one where the groups are tightest and most clearly apart — the highest silhouette score. On a tie, fewer tiers win. Smaller files try fewer tiers: at most one group per 20 recent givers, and never more groups than there are different giving profiles.

While this runs, the build shows “Trying 4 tiers…” and then, for example, “5 tiers fit your data best”.

5. Ordering and placing

Tiers are ordered by their middle member's typical year, highest first, so Tier 1 is the group that gives the most in a typical year. Each constituent who gave in the last 18 months is placed in the group whose middle they're nearest to; everyone else is in the base tier.

Reading the tiers

The Tiers your data shows card says how many constituents were grouped and shows the pyramid, darkest at the top with the base tier in gray, beside a table.

The tier table

Tier
The tier's name (“Tier 1” until you rename it), its plain-language description, and View records.
Constituents
How many constituents are in the tier.
Of revenue
The tier's share of all money received in the last 12 months, to the nearest whole percent. The base tier's share is 0%, because its members haven't given in 18 months.
Where it starts
Roughly where the tier begins. See Where it starts.
Ready for next tier
How many in the tier already look like the tier above, with See the list. The top tier shows “Top tier”: there's nowhere higher to go.

How descriptions are written

Each description describes the tier's middle member — the median of its members' typical year, typical gift, gifts per year, days since last gift and recurring share — so not every member matches every word. It's built from up to three parts:

  1. Recency: “Gave in the last 3 months” when the middle member gave within about 3 months; “Last gift 12–18 months ago” when it's been more than a year. Left out for monthly givers.
  2. How often: “Gives monthly” (mostly recurring gifts, 9 or more a year); “Recurring gifts, about N a year”; or less than 1 gift a year, about 1, about 2, 3–4, 5–8, or 9 or more gifts a year.
  3. How much: “typical gift $120” for tiers that give about once a year or less (and aren't monthly), otherwise “typical year $1,450”.

Amounts are rounded so they read as typical, not exact: to the nearest $5 under $100, $10 under $1,000, $50 under $10,000, $500 under $100,000, and $5,000 above that. The base tier always reads “No gift in the last 18 months”.

Where it starts

  • For most tiers: From about $X a year, where $X is the yearly giving that the bottom tenth of the tier's members are at or below — measured as each member's typical year or their last 12 months, whichever is higher — rounded the same way as descriptions.
  • Monthly tiers: Monthly giving, any amount. Other mostly-recurring tiers: Recurring giving, any amount.
  • The lowest tier above the base: A gift in the last 18 months — it takes in everyone active who doesn't fit higher up.
  • The base tier: Last gift 18+ months ago.

Rename tiers

Choose Rename tiers to open the side panel. Each tier has a box labeled with its position (“Tier 1”, “Tier 2”…), its description underneath to remind you who's in it, and room for a name up to 100 characters — “Leadership circle”, “Monthly givers”, “Lapsed”. Choose Save names.

  • Names are only labels: saving doesn't rebuild anything or move anyone.
  • Clear a box to go back to “Tier N”.
  • New names show everywhere: the tier table, the ready list (“Tier 3 → Monthly givers”), View records and exports.
  • Rename tiers is available once the pyramid has finished building.

Careful: Names are saved by position, not by group. If a later build finds different tiers — after a CRM refresh, say — “Monthly givers” stays on Tier 2 even if monthly donors are now Tier 3. Check your names against the descriptions after each rebuild.

Ready to move up

The Ready to move up card says how many constituents' giving already looks like the tier above theirs. A menu switches between All tiers and each tier's own list (“Tier 4 → Tier 3”); the table shows the five strongest for your choice, with:

constituentid
Their ID from your file or CRM.
Now
Their tier.
Looks like
The tier above, which their giving resembles.
Why
One or two reasons from their own giving, such as “Giving up 3 years running; $3,900 in the last 12 months”.
Signal
Strong, Moderate or Early, with three, two or one bars.

Under the table: “Showing 5 of N.” Choose View records for everyone on the list with their gifts and details, or Export N IDs for a CSV of the list you've picked. When no one qualifies, the card says “No one's giving looks enough like the tier above theirs yet. Check again after your next upload.”

Everyone below the top tier is considered — including the gray base tier, whose “tier above” is the lowest active tier. A base-tier constituent on the list is a lapsed donor whose old giving pattern looks like today's active donors: a reactivation candidate.

How close they are to the tier above

Every tier has a middle. For each constituent we measure how far they've come from the middle of their own tier toward the middle of the tier above, counting only the differences that separate those two tiers. This similarity runs from 0 (typical of their own tier) to 1 (right at the edge of the tier above).

Learning from your own past upgrades

When your file has enough history, we also learn from what actually happened at your organization. We rebuild everyone's profile as it stood a year ago (and two years ago), place them with today's tiers, and note who was in a higher tier a year later. A logistic regression model learns which profiles tended to move up, then gives each constituent today a chance of moving up within a year.

That chance is compared with how often people in the same tier moved up, so a tier where many people move up anyway isn't flagged wholesale. Someone three times as likely as others in their tier gets full credit from the model; someone less likely than usual has their score lowered in proportion.

The model needs your data to reach back about two years before your latest gift, and at least 50 past examples, including at least 10 who moved up and 10 who didn't. Without that, the list says: “Your file doesn't have enough past upgrades for the model to learn from yet, so this list is based only on how closely each constituent's giving resembles the tier above.”

Score and signal

Each constituent's score starts from their similarity and is raised or lowered by the model (or is the similarity alone without one). Scores of 0.60 or more are flagged:

ScoreSignal
0.85 or moreStrong
0.72 to just under 0.85Moderate
0.60 to just under 0.72Early
Under 0.60Not on the list

At most 10% of a tier

The list is for people to review, so each tier's list keeps to the strongest 10% of the tier at most (10% of its constituents, rounded up), highest scores first. In a tier of 3,410, at most 341 are listed even if more score 0.60 or above.

The Why column

Reasons come from the constituent's own giving, at most two:

  • “Giving up N years running” — each of the last N years gave more than the year before.
  • “Recurring donor for N years; added a $500 one-time gift” — a mostly recurring donor who gave a one-time gift in the last 12 months.
  • “Gave 150% more than the year before” — at least half again as much as the previous 12 months.
  • “Gave 4 times in the last 12 months, up from once the year before” — at least 3 gifts, and 2 more than the year before.
  • “$3,900 in the last 12 months”, or “Typical year $120” when nothing else applies.
  • For the base tier: “7 years of giving before a 20-month pause”, or “Gave $100 before a 39-month pause”.

Using the list

  1. Pick a tier in the menu, for example your mid-level tier, to see who looks ready for major-gift conversations.
  2. Choose View records to see each person's gifts and kept details such as fund or appeal.
  3. Choose Export N IDs, then look the IDs up or import them as a list in your CRM.
  4. Review with the people who know the donors. A score says giving looks like the tier above; it doesn't know about a recent conversation, a capacity rating or a life change.

Where your data draws the lines

This card puts your learned tiers beside a donor pyramid's fixed dollar boundaries on a log scale: the donor pyramid (fixed) on one line, your data (learned) on the other. It compares against:

  • a donor pyramid built from the same file, if there is one;
  • otherwise your most recently updated donor pyramid;
  • otherwise the tiers your new donor pyramids start with — your saved ones, or the standard five.

The caption says which, for example “Typical yearly giving, compared with the fixed boundaries of a standard donor pyramid.” Only tiers that start at a dollar amount get a line — not the base tier, the lowest tier above it, or a recurring tier — and only donor tiers starting above $0. A note under the scales compares each learned line with the nearest fixed one:

  • Within 10%: “Tier 3 starts near $1,050 a year, about where your donor pyramid draws its $1,000 mid-level line.”
  • Less than half or more than double: “Tier 1 starts near $4,100 a year — well below the $10,000 major-gift line.”
  • Below the line, but not by half: “Tier 2 starts around $720 a year in your file, not $1,000. 140 donors giving $720–$999 already behave like your mid-level donors.”
  • Above the line, but not double: “Tier 2 starts around $1,500 a year in your file, not $1,000. 1 donor giving $1,000–$1,499 counts as mid-level in your donor pyramid but gives like a lower tier here.”

The donor counts are constituents whose last 12 months fall in that gap. The card is hidden when there's nothing to compare.

Live build

A True Pyramid builds on our servers and fills in as it goes. You'll see Building your True Pyramid, a percentage, a progress bar and five stages:

  1. Reading and sorting transactions
  2. Building donor profiles
  3. Finding tiers in your data — “Trying 4 tiers…”, then “5 tiers fit your data best”
  4. Placing constituents in tiers
  5. Spotting who's ready to move up — “N constituents flagged”

Until the tiers are found, the page shows five placeholder tiers (“Waiting for donor profiles”, then “Finding tiers…”). Once they're found, the page redraws with the real tiers and the counts fill in; numbers only grow while Still counting shows, and “Ready for next tier” shows “—” until spotting starts. You can leave the page; building keeps going, and if you leave before a build you started finishes, we email you a link when it's ready (not for rebuilds after a scheduled sync or Sync now). When it's done: Your True Pyramid is ready, with how many transactions and constituents it was built from.

If a build fails, you'll see Building the True Pyramid didn't finish. with Try again.

What changes between builds

The same data always gives the same tiers and the same list: the grouping and the model run single-threaded with fixed starting seeds, so nothing is left to chance.

A True Pyramid is built again when its gifts change — a Refresh from your CRM, a sync, or matching a new gift type your CRM sent — or when you choose Try again after a failure. Renaming doesn't rebuild. Each build learns everything afresh from the whole file, so with new gifts:

  • the as-of date moves to the newest gift, so “last 12 months”, dormancy and recency all move with it;
  • the number of tiers, their order, descriptions and starting points can change;
  • constituents can change tiers, and the ready lists are drawn up again;
  • your tier names stay on the same positions (see the warning in Rename tiers).

To keep a record over time, use the History tab (Plus), which saves snapshots.

View records

View records on a tier lists everyone in it; on the ready list it lists everyone flagged (for all tiers or the tier you picked), strongest first, with Looks like, Signal and Why columns. Each row shows constituent ID, total given over your whole file, the last 12 months, number of gifts, first and last gift, and tier. Open a row to see the constituent's gifts of money received; add kept detail columns; search, filter, sort and export. See Viewing records and what each column counts.

Exporting

Export CSV at the top of the page downloads the tier table, named after the pyramid. Its columns are:

Tier,What defines it,Constituents,% of constituents,Revenue (last 12 months),% of revenue,Where it starts,Ready for next tier

There's one row per tier and a Total row. Revenue has two decimals; shares have one decimal (the page rounds Of revenue to whole percents). Ready for next tier is “Top tier” for Tier 1.

Export N IDs in the ready card downloads the list you've picked (all tiers or one) with these columns:

constituentid,total_given,last_12_months,gifts,first_gift,last_gift,tier,looks_like,signal,why

To add kept detail columns, search or filter first, use Export CSV inside View records.

Refreshing from your CRM

When the gifts were pulled from a connected CRM, a Refresh from button (for example Refresh from Salesforce) pulls them again and rebuilds every pyramid built from that pull. The pyramid keeps its current numbers until the new gifts are in. See Refreshing from your CRM; with Plus, scheduled sync does it nightly or weekly.

History Plus

Each True Pyramid has Pyramid and History tabs. With Plus, we save a snapshot every month and after each CRM sync; the History tab charts each tier over time and compares any two snapshots. On the Free plan the tab carries a Plus tag; an organization whose Plus has ended keeps the tab for the history it already has. See Pyramid history.

Worked example

One constituent's profile

A file's latest gift of money received is Sep 30, 2026, so that's the as-of date. The last 12 months run Oct 1, 2025 – Sep 30, 2026. Constituent C2731 has these rows:

DateAmountTypeCounts?
May 1, 2022$100One-timeYes
Nov 15, 2023$100One-timeYes
Dec 1, 2024$150One-timeYes
Oct 15, 2025$40RecurringYes
Nov 15, 2025$40RecurringYes
Jun 1, 2026$500One-timeYes
Jun 5, 2026−$100One-time (refund)Subtracted, not a gift
Jul 1, 2026$1,000PlannedNo
Aug 1, 2026$5,000PledgeNo
  • Yearly totals: last 12 months $40 + $40 + $500 − $100 = $480 (3 gifts); the year before (Oct 1, 2024 – Sep 30, 2025) $150; the year before that $100.
  • Typical year: the middle of $480, $150 and $100 = $150.
  • Typical gift: the middle of the five gifts since Sep 30, 2023 ($40, $40, $100, $150, $500) = $100.
  • Gifts per year: 5 gifts ÷ 3 years (they've given for 4.4 years, capped at 3) = 1.67.
  • Recurring share: 2 of those 5 gifts = 40%.
  • Days since last gift: Jun 1 to Sep 30 = 121, so not dormant.
  • Years rising: $480 > $150 > $100, so 2.
  • View records shows a total given of $830 (every row that counts, net of the refund) from 6 gifts.

If C2731 is flagged, the Why column reads: “Giving up 2 years running; gave 3 times in the last 12 months, up from once the year before”.

Scoring who's ready

Five constituents in the same tier, with the score worked out exactly as the app does (see the formula):

ConstituentSimilarityModel: times as likely to move up as others in the tierScoreSignal
C33180.70No model0.70Early
C41270.702.2×0.88Strong
C44020.700.5×0.35Not flagged
C51200.203.5×1.00Strong
C60070.661.4×0.728Moderate

C4127: the model's 2.2× is 1.2 above typical, which is 60% of the way to full credit (3×), so the score closes 60% of the gap from 0.70 to 1: 1 − 0.30 × 0.40 = 0.88. C4402 is half as likely as most to move up, so their similarity is halved. C5120 doesn't look much like the tier above yet, but the organization's history says people like them move up — 3× or more flags someone on the history alone.

A whole pyramid

The sample above has 9,870 constituents in five tiers. With the 10% cap, Tier 2 (488 constituents) lists at most 49; Tier 3 (1,210) at most 121; Tier 4 (3,410) at most 341; and the base tier (4,666) at most 467. The sample lists 37, 112, 268 and 403 — 820 in all — because only those scored 0.60 or more.

Suppose its Tier 1 started at about $4,100 a year and Tier 2 at about $720, and the organization had no donor pyramid. Where your data draws the lines would compare them with the standard donor tiers: $4,100 is less than half of $10,000, so “Tier 1 starts near $4,100 a year — well below the $10,000 major-gift line”; $720 is below $1,000 but more than half of it, so “Tier 2 starts around $720 a year in your file, not $1,000,” followed by how many Tier 2 donors gave $720–$999 in the last 12 months.

Advanced: the exact method

For analysts who want to check or reproduce the numbers.

Profile measures

  • As-of date A: the latest date of a gift of money received (one-time, recurring, pledge payment or in-kind) with an amount above zero, anywhere in the file. The file's start is the earliest such date.
  • Years back: year 0 is (A − 1 year, A]; year 1 is (A − 2 years, A − 1 year]; and so on. Each year's net is the sum of all its counted rows, refunds included; its gifts are rows above zero. A year “gave” when it has a gift and its net is above zero.
  • Typical year = median of the nets of years 0, 1 and 2 that gave (0 if none). Typical gift = median of gift amounts dated after A − 3 years.
  • Gifts per year = gifts dated after A − 3 years ÷ min(max(tenure, 1), 3), where tenure = days from first gift to A ÷ 365.25.
  • Recurring share = recurring gifts ÷ all gifts, both dated after A − 3 years.
  • Years giving = years back with at least one gift. Years rising = how many consecutive years k = 0, 1, … had year k + 1 give and year k's net exceed year k + 1's.
  • Dormant = last gift on or before A − 18 months. The base tier exists only if the file starts on or before A − 18 months.
  • Medians of an even count average the two middle values.

Features and scaling

Grouping uses five measures for each active (not dormant) constituent:

x1 = log10(1 + typical year)
x2 = log10(1 + last 12 months)
x3 = ln(1 + gifts per year)
x4 = recurring share
x5 = min(days since last gift, 548) / 365

Negative amounts are treated as 0. Each measure is standardized over the active constituents — (x − mean) ÷ standard deviation, with a standard deviation of 1 used when everyone has the same value — then weighted 1, 1, 1, 1 and 0.5. Years giving and the trend aren't used for grouping, only by the upgrade model.

k-means settings

ML.NET's k-means trainer with k-means++ initialization, one thread, at most 300 iterations and an optimization tolerance of 1e-7. For each number of groups it starts four times, with seeds 17, 18, 19 and 20, and keeps the start with the smallest total squared distance from each constituent to their nearest group middle. Groups left empty are dropped. With one group to make, or no more constituents than groups, everyone forms one group.

Choosing the number of tiers

Groups above the base tried: from 2 (with a base tier) or 3 (without) up to the smallest of 6 (with a base tier) or 7 (without), the number of active constituents ÷ 20 (rounded down), and the number of distinct profiles. If that upper bound isn't above the lower one, only max(1, upper bound) is tried.

Each try is scored by the mean silhouette: for each constituent, (b − a) ÷ max(a, b), where a is their mean distance to the rest of their group and b the smallest mean distance to another group. Files of up to 3,999 active constituents are measured in full; larger files use an evenly spaced sample of about 2,000 to 3,000 of them. The highest score wins; ties go to fewer groups.

Tier order and placement

Groups are ordered by median typical year, then mean typical year, then mean last 12 months, then median gifts per year, all highest first. A constituent is placed in the base tier if dormant, otherwise in the group whose middle is nearest by straight-line distance in the weighted, standardized space.

Similarity

For a constituent at point x in tier t (below the top), with c the middle of tier t (for the base tier, the average of its members' points) and u the middle of tier t − 1:

similarity = clamp( 2 × (x − c)·(u − c) / |u − c|² , 0, 1 )

That's the distance travelled along the line from c to u, where 1 is the halfway point — the edge between the two tiers.

The upgrade model

  • Past dates: A − 1 year and A − 2 years, each used only if the file starts no later than one year before it plus one month.
  • Examples: for each constituent with a profile at A − 1 year whose tier then (placed with today's tiers) is below the top, the label is “in a higher tier today”. For A − 2 years (needing a profile at A − 1 year too), the label is “in a higher tier at A − 1 year”.
  • Minimums: at least 50 examples, at least 10 that moved up and at least 10 that didn't; otherwise no model.
  • Trainer: ML.NET L-BFGS logistic regression, one thread, seed 17.
  • Ten features: the five weighted, standardized measures; recency = min(days since last gift, 1,825) ÷ 1,825; tenure = min(years since first gift, 10) ÷ 10; trend = clamp(log2((last 12 months + 1) ÷ (prior 12 months + 1)), −4, 4) ÷ 4; tier position = tier ÷ (tier count − 1); and similarity.
  • Tier rate: the share of a tier's past examples that moved up, if the tier had at least 20 examples and at least one moved up; otherwise the share across all examples.
  • Relative chance r = the model's probability ÷ the tier rate.

Score, signal and cap

no model:  score = similarity
r < 1:     score = similarity × r
r ≥ 1:     score = 1 − (1 − similarity) × (1 − min(1, (r − 1) / 2))

Strong ≥ 0.85, Moderate ≥ 0.72, Early ≥ 0.60. Within each tier, flagged constituents are ranked by score (ties by constituent ID) and at most ⌈10% × the tier's constituents⌉ are kept. The top tier is never scored. The page's top-five lists and default sort use the same score.

Description rules

From the tier's medians: monthly = recurring share ≥ 0.5 and gifts per year ≥ 9. Recency phrase if not monthly: days since last ≤ 92 → “gave in the last 3 months”; > 365 → “last gift 12–18 months ago”. Frequency: monthly → “gives monthly”; recurring share ≥ 0.5 → “recurring gifts, about N a year” (N = gifts per year rounded, at least 1); otherwise < 0.75 less than 1, < 1.5 about 1, < 2.5 about 2, < 4.5 3–4, < 8.5 5–8, else 9 or more gifts a year. Amount: gifts per year < 1.5 and not monthly → typical gift, otherwise typical year. “From about” uses the value at position ⌊(n − 1) × 0.1⌋ of members' max(typical year, last 12 months) sorted ascending. Description amounts round to the nearest step ($5, $10, $50, $500, $5,000 by size, never below one step); amounts in the Why column are whole dollars.

Line comparison rules

Fixed lines: each distinct “From” above $0 in the compared donor pyramid's tiers. Learned lines: each tier's rounded starting amount, except the base tier, the lowest tier above it and tiers with a median recurring share of 0.5 or more. Each learned line is compared with the fixed line nearest on a log scale. Ratio within 1 ÷ 1.1 to 1.1 → “about where”; below ½ or above 2 → “well below / well above”; otherwise “around … not …”, with a count of constituents whose last 12 months fall between the two amounts — in that tier when it starts lower, in the tiers below it when it starts higher. The scale spans whole decades from at most $100 to at least $100,000.

Questions

Why does my True Pyramid have a different number of tiers than last time?

Its gifts changed — a refresh, sync or newly matched gift type — and every build learns the tiers afresh. With new data, a different number of tiers can fit best. The same data always gives the same result.

Will I get the same tiers if I build it again from the same file?

Yes. The grouping and the model use fixed seeds and run single-threaded, so the same gifts always give the same tiers, descriptions and ready lists.

Why is a $5,000 donor not in the top tier?

Tiers group people by several measures at once — typical year, last 12 months, how often and how recently — not by one gift. A single $5,000 gift from someone who usually gives $100 a year, or a gift 17 months ago, can leave someone nearer another group's middle. Open their row in View records to see their gifts.

Why is someone who hasn't given in years “ready to move up”?

They're in the gray base tier, and their old giving looks like your lowest active tier. That makes them a reactivation candidate. The Why column says so, for example “7 years of giving before a 20-month pause”.

Why are so few people flagged in a big tier?

Only scores of 0.60 or more are flagged, and each tier's list keeps to its strongest 10% at most. See At most 10% of a tier.

Why does the list say it's based only on similarity?

Your file doesn't have enough history for the model to learn from: it needs about two years of gifts before your latest one and at least 50 past examples, 10 of whom moved up and 10 who didn't. See Learning from your own past upgrades.

What does “These tiers may be less reliable” mean?

Your file has fewer than 500 constituents or less than three years of gifts. We still build everything, but with less data the groups and the list rest on fewer people and less history. See The data it needs.

Why are there only two tiers?

Your file has few recent givers. We try at most one group per 20 recent givers, so a small file may get one group plus the gray base tier.

Why is there no gray base tier?

Your file covers less than 18 months before its latest gift, so no one can have gone 18 months without giving.

Why don't planned gifts or pledges count?

A True Pyramid learns from money in hand. Planned gifts and open pledges are promises, so they're left out; pledge payments count as they arrive. A donor pyramid can place planned-gift donors in a tier of their own.

Can I set my own tier boundaries?

No — the boundaries are what the True Pyramid learns. You can rename tiers. If you need fixed bands, build a donor pyramid from the same file; the True Pyramid will then compare against it in Where your data draws the lines.

Will my tier names survive a refresh?

They stay on the same positions — Tier 1, Tier 2 and so on — even if the tiers themselves change. Check them against the descriptions after a rebuild.

Can I choose a period, like last fiscal year?

No. A True Pyramid always looks at your whole file as of its latest gift of money received. For a fixed period, use a donor pyramid.

How do I rebuild it?

It rebuilds itself when its gifts change, for example after Refresh from your CRM. After a failed build, choose Try again. Otherwise there's nothing to rebuild: the same data gives the same result.

Can I see who these people are?

We show constituent IDs only; we never store names or contact details. Look the IDs up in your CRM — see Looking people up in your CRM.