Lesson 15 / 24
Behavior Models
That motivation, ability, and a trigger must hold at the same time for a behavior to occur; computing the effect of two types of intervention on a population; and why the motivation gain fades.
Contents
The previous lesson reduced the borrowing flow’s load from thirteen decision points to six and pulled the time from 7.44 seconds to 3.32 seconds. That is a gain that makes things easier for the user who enters the flow. The unanswered question is this: why would the user enter the flow at all? Most catalog users open a record’s detail, read it, and leave without borrowing. Even when the load is low, the behavior may not occur.
This lesson establishes which conditions must hold at the same time for a behavior to occur, and computes which of these conditions is worth intervening on to bring more users to act.
Three Conditions Are Required at Once
A widely used behavior model holds that a behavior occurs at the intersection of three conditions.
Motivation is the degree to which the user wants to perform that behavior. The motivation to borrow a record in the catalog comes from the user’s need for that book; the interface does not create this need, at most it makes it visible.
Ability is the ease of performing the behavior. Ability is not the user’s skill alone; it is determined together with the task’s cost. The same user has lower ability in a flow with thirteen decision points than in a flow with six.
A trigger is the signal that starts the behavior at that moment. The Borrow button on the record detail is a trigger; so is a message notifying the user that a book’s due date is approaching.
The three combine multiplicatively: if one is zero, the behavior does not happen. A user with high motivation who does not see the trigger does not borrow. A user who sees the trigger but lacks the ability to complete the flow does not borrow either. This means an observed “low conversion” can have at least three different causes, and which one it is cannot be found by guessing.
The Effect of Two Interventions on the Population
The computation below builds a population of two thousand users. Each user has a motivation and a base skill. Ability is a quantity determined jointly by skill and flow cost: as cost rises, ability falls. The behavior occurs when the product of motivation and ability clears a threshold and the trigger is seen.
Two interventions are compared: raising motivation by fifteen points (a text that makes the benefit of borrowing visible) and reducing the flow from thirteen decisions to six.
// behavior.mjs — computing the motivation, ability, and trigger framework over a population function generator(seed) { let s = seed >>> 0; return () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296; }; } const POPULATION = 2000; const THRESHOLD = 20; // motivation x ability must clear this threshold // Population: each user's motivation (0-100) and base skill (0.2-1.0) function population() { const rnd = generator(19770401); const people = []; for (let i = 0; i < POPULATION; i++) { people.push({ motivation: rnd() * 100, skill: 0.2 + rnd() * 0.8 }); } return people; } // Flow cost pulls ability down; cost is the decision time from lesson 02. const ability = (skill, cost) => skill * (4 / (4 + cost)); function rate(people, { cost, motivationBoost = 0, triggerRate = 1 }) { let acted = 0; for (const p of people) { const m = Math.min(100, p.motivation + motivationBoost); if (m * ability(p.skill, cost) >= THRESHOLD) acted++; } return (acted / people.length) * triggerRate * 100; } const PEOPLE = population(); const FULL_FLOW = 7.44; // lesson 02: flow with 13 decision points const REDUCED = 3.32; // lesson 02: flow with 6 decision points console.log("intervention flow cost acted"); const baseline = rate(PEOPLE, { cost: FULL_FLOW }); console.log(`none (baseline) ${FULL_FLOW.toFixed(2)} s ${baseline.toFixed(1).padStart(6)} %`); const motivated = rate(PEOPLE, { cost: FULL_FLOW, motivationBoost: 15 }); console.log(`motivation +15 ${FULL_FLOW.toFixed(2)} s ${motivated.toFixed(1).padStart(6)} %`); const abled = rate(PEOPLE, { cost: REDUCED }); console.log(`flow reduced from 13 to 6 decisions ${REDUCED.toFixed(2)} s ${abled.toFixed(1).padStart(6)} %`); const both = rate(PEOPLE, { cost: REDUCED, motivationBoost: 15 }); console.log(`both together ${REDUCED.toFixed(2)} s ${both.toFixed(1).padStart(6)} %`); // Trigger: if the user does not see the call to action at that moment, the behavior does not occur console.log("\ntrigger visibility acted (reduced flow)"); for (const t of [0.3, 0.6, 0.9, 1.0]) { console.log(`${(t * 100).toFixed(0).padStart(21)} % ${rate(PEOPLE, { cost: REDUCED, triggerRate: t }).toFixed(1).padStart(6)} %`); } // Which intervention moves whom: split the population into four zones const zone = (p) => (p.motivation >= 50 ? "high motivation" : "low motivation") + (p.skill >= 0.6 ? " / high skill" : " / low skill"); const ZONES = ["high motivation / high skill", "high motivation / low skill", "low motivation / high skill", "low motivation / low skill"]; function zoneRates(settings) { const count = {}, total = {}; for (const z of ZONES) { count[z] = 0; total[z] = 0; } for (const p of PEOPLE) { const z = zone(p); total[z]++; const m = Math.min(100, p.motivation + (settings.motivationBoost ?? 0)); if (m * ability(p.skill, settings.cost) >= THRESHOLD) count[z]++; } return ZONES.map((z) => ({ z, rate: (count[z] / total[z]) * 100, n: total[z] })); } console.log("\nzone people baseline motivation+15 flow shortening"); const z0 = zoneRates({ cost: FULL_FLOW }); const z1 = zoneRates({ cost: FULL_FLOW, motivationBoost: 15 }); const z2 = zoneRates({ cost: REDUCED }); for (let i = 0; i < ZONES.length; i++) { console.log( `${ZONES[i].padEnd(36)} ${String(z0[i].n).padStart(5)} ${(z0[i].rate.toFixed(1) + " %").padStart(8)}` + ` ${(z1[i].rate.toFixed(1) + " %").padStart(14)} ${(z2[i].rate.toFixed(1) + " %").padStart(14)}` ); } // Second visit: the motivation boost fades, the flow shortening remains console.log("\nvisit motivation intervention flow shortening"); for (const v of [1, 2, 3]) { const boost = v === 1 ? 15 : 0; // the persuasive text is effective only on the first visit const m = rate(PEOPLE, { cost: FULL_FLOW, motivationBoost: boost }); const a = rate(PEOPLE, { cost: REDUCED }); console.log(`${String(v).padStart(5)} ${(m.toFixed(1) + " %").padStart(20)} ${(a.toFixed(1) + " %").padStart(15)}`); } // Threshold curve: the minimum motivation required for a behavior to occur console.log("\nability minimum motivation required"); for (const sk of [0.2, 0.3, 0.4, 0.6, 0.8, 1.0]) { const full = THRESHOLD / ability(sk, FULL_FLOW); const red = THRESHOLD / ability(sk, REDUCED); console.log(`${sk.toFixed(1).padStart(7)} full flow ${(full > 100 ? "unreachable" : full.toFixed(1)).padStart(11)} reduced flow ${(red > 100 ? "unreachable" : red.toFixed(1)).padStart(11)}`); }
intervention flow cost acted
none (baseline) 7.44 s 14.6 %
motivation +15 7.44 s 23.5 %
flow reduced from 13 to 6 decisions 3.32 s 34.6 %
both together 3.32 s 47.0 %
trigger visibility acted (reduced flow)
30 % 10.4 %
60 % 20.8 %
90 % 31.2 %
100 % 34.6 %
zone people baseline motivation+15 flow shortening
high motivation / high skill 531 55.0 % 84.0 % 96.8 %
high motivation / low skill 501 0.2 % 2.2 % 26.3 %
low motivation / high skill 485 0.0 % 2.7 % 9.7 %
low motivation / low skill 483 0.0 % 0.0 % 0.0 %
visit motivation intervention flow shortening
1 23.5 % 34.6 %
2 14.6 % 34.6 %
3 14.6 % 34.6 %
ability minimum motivation required
0.2 full flow unreachable reduced flow unreachable
0.3 full flow unreachable reduced flow unreachable
0.4 full flow unreachable reduced flow 91.5
0.6 full flow 95.3 reduced flow 61.0
0.8 full flow 71.5 reduced flow 45.8
1.0 full flow 57.2 reduced flow 36.6
Intervening on Ability Delivers More Than Intervening on Motivation
The first table compares the two interventions on the same scale. Raising motivation by fifteen points moves the acted-on rate from 14.6 percent to 23.5 percent. Shortening the flow moves the same rate to 34.6 percent. Both together reach 47.0 percent.
For this comparison to be fair, both interventions would need to be “fifteen units”; they are not. What makes the comparison meaningful is that the two interventions’ costs are also similar: writing a text and binding seven fields to defaults are comparable amounts of work. For the same effort, the second intervention brings more than twice as many users into the flow.
The reason shows up in the third table. The motivation intervention raises the “high motivation / high skill” zone from 55 percent to 84 percent — a group that was already close to acting. In the other three zones, its effect stays under 3 percent. Shortening the flow, on the other hand, raises the “high motivation / low skill” zone from 0.2 percent to 26.3 percent. This zone is a quarter of the population and consists of users who genuinely want the book but cannot complete the flow.
The last table gives the reason for this gap plainly. For users with ability of 0.4 or below, the full flow is unreachable: even at a hundred points of motivation, the threshold is not cleared. When the flow is shortened, the motivation required for a user with ability 0.4 drops to 91.5, and for a user with ability 0.6 it drops from 95.3 to 61.0. The motivation intervention can do nothing for these users; their problem is not unwillingness but inability. For a user with ability of 0.3 or below, even shortening the flow is not enough — for this group six decision points are still too many, and what the design needs is not shortening the flow a little more but investigating why that user cannot complete the task.
Motivation Fades, Ability Stays
The fourth table adds the time dimension. The persuasive text gives 23.5 percent on the first visit; on the second visit the user has already read the same text, its effect no longer holds, and the rate returns to the baseline of 14.6 percent. Shortening the flow gives 34.6 percent on every visit.
This is the most practical difference between the two types of intervention. The motivation intervention requires repetition; its effect shrinks with each repetition, and preserving the effect requires raising the dose. Raising the dose means exaggerating the message. Beyond a point, exaggeration parts ways with accuracy, and that parting is exactly the boundary this topic addresses at its end.
The ability intervention requires no repetition; once the flow is shortened, it stays short. The fact that taking a decision away from the user is permanent also makes it more important that the decision be bound to the correct default.
The Trigger Is a Multiplier, Not an Addend
The second table shows that the trigger is a different kind of quantity. At 30 percent visibility, the acted-on rate is 10.4; at 100 percent, it is 34.6. The relationship is linear, because the trigger multiplies the other two conditions: even if the user is ready, if they do not see the signal at that moment, the behavior does not occur.
There are two separate questions in the design of a trigger, and they get conflated. The first is visibility: is the call to action where the user is looking? This is the visual hierarchy question from the Fundamentals of Interface Design course. The second is timing: does the trigger arrive at the moment the user’s motivation and ability clear the threshold?
The second question is the source of the distinction. A message notifying the user that a book’s due date is approaching arrives at the moment the user needs that information; the user, had they known they would want this message, would still want it. A message sent about something the user has no interest in at all is not a trigger but an interruption. The difference between the two is whether the message rests on the user’s existing motivation or tries to manufacture motivation.
What the Model Does Not Say
This framework is a diagnostic tool, not a prediction tool. The threshold value, the multiplicative form, and the motivation–ability distribution are assumptions; other assumptions give other numbers. What the computation carries is this: an intervention cannot be chosen without first identifying which condition is missing when a behavior fails to occur. If motivation is missing, shortening the flow does not help; if ability is missing, the persuasive text does not help.
The model does not say one more thing. It does not assume that a behavior occurring is good. In the model, one way to raise the acted-on rate is to lower the threshold — that is, to make the user commit to a decision without thinking it through. In the borrowing flow, that leaves the user with a book they did not want. The criterion here is the same: would the user make the same decision if they knew why the designer made this change? For shortening the flow, the answer is yes. It is not yes for a speed-up that prevents the decision from being considered.
Summary
- A behavior occurs when the product of motivation, ability, and trigger clears a threshold; if one of them is zero, the behavior does not happen.
- Ability is not the user’s skill but a quantity determined jointly by skill and task cost; shortening the flow raises ability.
- In the computation, the motivation intervention moved the acted-on rate from 14.6 percent to 23.5 percent, shortening the flow moved it to 34.6 percent; both together reached 47.0 percent.
- The motivation intervention affects the group already close to the threshold; for the low-ability group, the full flow is unreachable even at a hundred points of motivation.
- The motivation gain fades on the second visit and preserving it requires raising the dose; the ability gain stays the same on every visit.
- One way to raise the acted-on rate is to prevent the user from thinking the decision through; the criterion is whether the user would make the same decision knowing about the change.
Next Step
This lesson addressed a single behavior: the user borrows once. The catalog interface’s real question is repetition — does the user come back a second, a fifth, a twentieth time? A repeated behavior is explained by a different structure than a one-time behavior. The next lesson builds that structure: the loop formed by cue, routine, and reward, how it strengthens through repetition, and under what condition the designer has the right to build that loop.
To keep your progress and take notes, Log in
My notes
Log in to take notes.