Root & Rise · Program Console Operator manual · v1.0 · August 2026
HBL Microfinance Bank · Program Office · internal Confidential — not for customer distribution
HBL Microfinance Bank · Program Office

Root & Rise
Program Console — Operator Manual

Training material for the staff who run the loyalty and engagement program: what every screen is for, which decisions each role may take, the procedures to follow, and the controls that exist to stop a marketing setting from quietly becoming a financial one.

AudienceProgram office, Finance, Compliance, Credit Risk, Internal Audit
PrerequisiteConsole account with a role assigned
VersionBuild spec v4 · console v1.0
DeploymentOn-premise · see Appendix C
Read this first

Every reward value in this console moves a recognised liability on the bank's balance sheet. A change to a streak reward is not a marketing setting — it is a financial change that Finance and Internal Audit have to see. That is why nothing in the engine takes effect when you save it. You build a draft, you submit it, a second person approves it, and it applies on the next nightly run. If you find yourself looking for a way around that, you have misread the task.

Contents

1 · The program in one page14 · Cases 2 · Access, roles and permissions15 · Credit desk 3 · Navigating the console16 · Partners, catalogue and settlement 4 · Overview — the control room17 · Onramp funnel 5 · Layers18 · Ops and reconciliation 6 · Customers and Customer 36019 · Board reporting 7 · The decision trace20 · Audit log 8 · Points liability21 · Operating calendar 9 · Engine configuration22 · Escalation matrix 10 · Campaigns23 · Common tasks — quick reference 11 · Campaign analytics24 · Glossary 12 · ApprovalsA · Field reference 13 · Fraud and abuseB · What the console will not let you do C · On-premise deployment

1 · The program in one page

Root & Rise is six layers stacked on one wallet. Each layer answers a different question, has a different funder, and fails in a different way. You cannot operate the console well without knowing which layer you are touching.

Layer What it is Funded by Fails when
OnrampOne-time bonus for clearing Level 0 to Level 1Growth budgetBonus paid, customer never returns
FoundationInstant cashback on eligible transactions — cash, not pointsBank's own marginRate creeps above the point value
Daily HabitsCheck-ins, streaks, fraud quizzes — free actionsMarketplace partnersEngagement rises, Trust Score does not
MomentsCapped chance reward on a qualifying transactionMarketing budgetVelocity farming on small tickets
Trust ScoreBehavioural score that unlocks credit termsReduced cost of riskUsed for pricing before cohort validation
Marketplace & purposeWhere points are spent; literacy and grantsPartners, bank, donorsA redemption fails and nobody notices
The one rule that governs all six

Points are earned by doing; the Trust Score is earned by banking well. Habits and quizzes never move the score. If they did, the score would be gameable and the credit story collapses. Never approve a change that connects the two.

2 · Access, roles and permissions

Every action in the console is attributed to a named person and written to the audit log. There are no shared accounts and no service logins for humans.

Role May do May not do
Program analystBuild drafts, create campaigns and templates, raise adjustments, triage fraud alerts, own casesApprove anything they raised; unmask PII in bulk
Program adminEverything an analyst can, plus approve engine changes and adjustments, manage usersApprove their own submissions; sign the breakage assumption
FinanceSign the breakage assumption, approve point-value and settlement changes, read all cost viewsEdit engine rules or campaigns
ComplianceApprove customer-facing copy and templates, review fraud dispositionsChange reward values
Credit RiskOwn the Trust Score model, approve weight and tier-threshold changes, work the credit deskAward or reverse points
Internal AuditRead everything, including the full audit log and every reveal eventChange or approve anything

2.1 Customer names are masked by default

Names render as A*** K*** everywhere: the customer list, Customer 360, the credit desk queue and the case file. This is not a display preference. Revealing a name is an action with a subject, a reason and a record.

Procedure — reveal a customer name
  1. Open the customer in Customers and confirm you have a live case or alert that requires the identity.
  2. Click Reveal name. The name unmasks for that customer only, on your session only.
  3. A PII-2026-nnn entry is written to the audit log with your name and the time. You cannot suppress it.
  4. Re-mask when you are done. Leaving names revealed across a shift is an audit finding.

Reveal one customer at a time. There is deliberately no "show all names" control, because an operator who can unmask a book cannot explain why they unmasked one.

3 · Navigating the console

The left rail is grouped by what you are trying to do. A badge means something needs attention: a count of pending items, or a dot on Engine config meaning you have an unpublished draft.

Section Use it to Primary owner
OverviewRead the program's health in one screenProgram office
LayersSee cadence, participation and funder per layerProgram office
CustomersFind an account and open its 360Analyst
Points liabilityRead the IFRS 15 position and test breakageFinance
Engine configChange how earning works — as a draftAnalyst / admin
CampaignsRun bonus mechanics on top of base earnAnalyst
Campaign analyticsJudge whether spend worked, against a holdoutAnalyst / Finance
ApprovalsSecond-pair-of-eyes queue for every changeAdmin / Finance
Fraud & abuseTriage alerts, suspend earning, claw backAnalyst + Compliance
CasesOwn and resolve customer issues to SLAAnalyst
Credit deskPrice applications with the Trust Score attachedCredit Risk
Onramp funnelFind where Level 0 conversion leaksGrowth
Ops & reconciliationTie the ledger to the GL; watch the batchFinance + Ops
Board reportingAssemble the monthly pack from live figuresProgram office
PartnersContracts, catalogue pricing, settlement runsProgram office + Finance
Audit logProve what changed, who changed it, whenInternal Audit

4 · Overview — the control room

Read the Overview in this order, every morning. The order matters more than the numbers.

  1. DAU/MAU first. It is the north star because it moves two to three months before churn shows up in revenue. A fall here is an early warning, not a lagging report.
  2. Then the pair: engagement and Trust Score on the same cohort. This is the mercenary test. Engagement rising with the score flat means the program is buying attention, not habit — which is the failure mode the whole design is built to avoid.
  3. Then execution. Redemption reliability and case responsiveness. A failed redemption undoes a month of engagement, so these sit beside the growth metrics rather than in an ops report nobody reads.

The period selector changes every figure on the screen. Always state the period when you quote a number in a meeting; most disagreements about program performance are two people quoting different windows.

5 · Layers

One row per layer: cadence, participation, cost, funder and phase. Use it for two questions. Is a layer earning its cost? — compare participation against cost. Who pays for this? — the funder column is the one to quote when someone proposes making a layer more generous. Daily Habits is partner-funded; Moments is marketing-funded; Foundation comes out of the bank's own margin. Those are different conversations with different people.

6 · Customers and Customer 360

Search or filter by tier, then click a row. A click updates the quick-look panel on the right; it does not navigate. To open the full record use Open full Customer 360. This separation is deliberate — scanning a list should not cost you your place.

6.1 What the 360 shows

  • Balance and worth. Points, and what they are worth against a bill at the current ratio.
  • Trust Score and its inputs. Each input with its weight and lookback, so you can say why the score is what it is.
  • Caps and limits. Level, daily ceiling, Moments cap, campaign caps consumed.
  • Activity with a decision trace on every line. See section 7.
  • Lifecycle. Months enrolled, wallets, open cases.

6.2 Manual adjustments

An adjustment is the only way points enter a balance without a rule producing them. That is why it needs two signatures and a case reference. Raise it from the trace, never from a blank form: the trace attaches the evidence automatically.

Procedure — goodwill adjustment
  1. Open the customer's 360 and find the transaction in question.
  2. Open its trace and confirm the engine's behaviour. If the rule paid correctly, an adjustment is the wrong answer — explain instead.
  3. If the fault was the bank's, choose Raise adjustment. Enter the amount and the case reference.
  4. It appears in Approvals as ADJ-…. A different person approves it. Raiser and approver can never be the same account.
  5. On approval it posts as a journalled entry against cost centre MKT-LOY and the customer is notified in-app.

7 · The decision trace

Every line of customer activity opens a trace: which rule fired, what inputs it used, the arithmetic, and the plain-language sentence you can read to the customer. This is the single most useful screen in the console and the one to reach for first when someone asks "why did I get this?"

Traces exist for the awkward cases too, not just the happy ones: a transaction excluded by rule (agent cash-out is not an eligible trigger), a redemption on hold awaiting a biller, a manual adjustment with both signatures, and a campaign award showing base earn and bonus separately. If you cannot explain an award from its trace, escalate rather than guess.

Use the wording, not your own

Each trace carries a suggested wording line. Use it. It has been through Compliance, it avoids implying a discretion that does not exist, and it keeps two agents from giving one customer two different explanations.

8 · Points liability

Outstanding points are a contract liability under IFRS 15. The recognised amount is:

liability = outstanding points × point value × (1 − breakage)

Three numbers, three owners. Outstanding points come from the ledger and are not an opinion. The point value is an engine setting that Finance and Internal Audit approve — read the live figure from Engine config → Point value, never from this manual. Breakage — the share expected never to be redeemed — is an assumption Finance signs and Audit traces, and it is set in the same place, as Booked breakage assumption.

Two different breakage controls — do not confuse them

The booked assumption lives in Engine config → Point value. Changing it is a change request: it goes through Approvals with Finance and Internal Audit, and it moves the recognised liability. The slider on the Points liability screen changes nothing — it is a sensitivity tool for asking "what would the position be at a different assumption". If someone says they "changed breakage", establish which of the two they mean before anything else.

This manual deliberately quotes no live values. Every current figure is on screen, and a manual that repeats them goes stale the first time Finance re-signs an assumption. Appendix A lists the values as configured at installation, for reference only.

The counter-intuitive part

Lower breakage means a larger liability — and a better program. Customers actually redeeming is the outcome we want. Do not treat a rising liability as bad news on its own; read it with redemption rate beside it. A program with 40% breakage is cheap because it is not working.

The breakage slider is a sensitivity tool, not a setting. Move it to see what the position would be under a different assumption; the booked figure only changes when Finance re-signs the assumption, which appears in the audit log as a re-signature, not a silent edit.

9 · Engine configuration

This is where earning is defined. Nothing here is live when you change it. The banner at the top of the section is the truth of your session: "Draft matches the live configuration" or "n unpublished changes in this draft".

Procedure — change a rule
  1. Edit. Change values on any tab. Changed rows highlight; the banner counts your changes.
  2. Check the effect. Open Projection for forward cost and liability, and Backtest to replay the draft against real history.
  3. Submit. Submit change request writes a diff — every line, old value to new value — into Approvals and the audit log under your name.
  4. Wait. A different person with the right role approves or rejects. Rejection carries a reason.
  5. It applies on the next nightly run, not instantly. Tell stakeholders "tomorrow", never "now".

Discard changes reverts the entire draft — every tab, including cashback and messaging — back to live. There is no partial discard; if you want to keep some changes, submit those first.

9.1 The tabs, in the order you should learn them

Tab What it controls Watch out for
TriggersThe events the engine can see — QR, POS, bill, P2P, cash-in, salary inflow — with basis and volumeDeactivating a trigger silently disables every rule and campaign built on it
Earn rulesPoints per trigger, per-rule caps, on/offRemoving a rule is not the same as disabling it — disable if you may reverse
Point valueRupees per point, minimum redemption, expiry months, rounding, partner subsidyThe single highest-impact number in the console; it reprices the whole liability
Habits & streaksCheck-in, weekly bonus, day-30 milestone, free freezes, quiz points and questions per sessionFreezes are a retention feature, not generosity — removing them breaks streaks in bulk
Trust ScoreThe five inputs, their weights, lookbacks and definitions; recalculation cadenceWeights must total 100%. Never add a points or habit input
Quiz libraryFraud-awareness questions, answers, explanations, live/draft statePublishing needs Compliance; a wrong answer key teaches customers the wrong lesson
Tier ladderTier names, score thresholds, cashback %, Moments rate, unlock copy; add and remove tiersLowering a threshold promotes a cohort overnight and raises cost immediately
MomentsDaily cap, average value, minimum ticket, win rate, budget, eligible triggersMinimum ticket is the anti-farming control; do not lower it to raise participation
Foundation cashbackChannel eligibility and rate multiplier, payout cadence, minimum ticket, monthly capCash, not points — never hits the ledger, so it never appears in liability
TemplatesNotification copy in three languages, channel, fatigue classA missing translation means an English fallback most of the book will not read
Messaging & ratesCost per channel, SMS segment sizes, default holdout, fatigue cap, quiet hoursMessage length is a budget decision once SMS is involved
BacktestReplays the draft against 30/90/180 days of real history, by cohortTells you cost, never behaviour — see 9.3
SimulationProjects the ledger forward 6, 12 or 24 months on drafted or live rulesQuote the peak and the band, never the closing figure alone — see 9.4
ProjectionForward sandbox for cost and liabilityNothing here reaches production

9.2 How the Trust Score is defined

Five behavioural inputs, each with a weight, a lookback window and a written definition: repayment and bill punctuality, transaction regularity, savings behaviour, account tenure and dispute history. Weights must total 100% — the tab will not let you submit otherwise. Recalculation is weekly, and the excluded-inputs list is part of the model: campaign awards, habit activity, quiz results, redemptions, manual adjustments and app opens are all explicitly outside it.

Changing a weight changes credit decisions. It requires Credit Risk approval and, before any pricing use, a validated cohort. Say so plainly when asked to "just bump" a weight.

The score itself is produced by a background engine on its own schedule, not by this screen — what you configure here is the definition the engine uses. So a weight change takes effect at the next recalculation, not on approval, and the scores on a customer record are always as of the last successful run. If a recalculation has not run, Ops and reconciliation will show it before anyone notices on a customer record.

9.3 What a backtest can and cannot tell you

A backtest answers one question honestly: what would this rule have cost on transactions that already happened? It cannot tell you whether behaviour would have changed, because the customers in the history were never offered the new rule. The tab lists what it refuses to model — new triggers with no history, quiz changes, Trust Score weights, cashback changes — rather than producing a confident number. Anything behavioural needs a holdout going forward.

9.4 Simulation — the forward view

Backtest looks backwards; Simulation looks forwards. It projects the points ledger month by month over 6, 12 or 24 months, on either your draft or the live configuration, and it is the screen Finance will ask for before approving anything that changes reward values.

You set six inputs: horizon, basis (drafted or live rules — run both to see the counterfactual), redemption propensity as a share of the outstanding balance each month, monthly customer growth, program adoption as a share of MAU, and the breakage assumption.

It returns points issued and redeemed over the horizon, peak liability with the month it occurs, closing liability, the month-by-month table, a sensitivity band at ±6pp of breakage, and points and recognised cost per active customer per month.

Every row is checkable by hand

The simulation uses the same relation as section 8 — outstanding × point value × (1 − breakage) — and "outstanding" means the same quantity here as on the Points liability screen. Pick any row and verify it with a calculator. If a figure on this screen ever fails that check, treat it as a defect and raise it; do not reconcile around it.

How to quote a simulation

A simulation is an argument about a range, not a forecast of a number. Quote the peak and the band around it. Never quote the closing figure on its own, never to two decimal places, and always state the four inputs that produced it — a projection without its assumptions is not a projection, it is a guess with a chart.

The screen also lists what it assumes and where it will be wrong: flat adoption and growth, redemption as a constant share rather than the lumpy reality around expiry warnings and festivals, behaviour held constant so a more generous rule pays more on the same activity without being assumed to create activity, and cashback excluded entirely because it is cash and never enters the ledger. Expiry is not modelled as a separate event — because points are spent oldest lot first, very few survive eighteen months, and points never redeemed are recognised through breakage instead. Modelling both would count the same points twice.

Use the two tools together in one sequence: Backtest to price the change on activity that really happened, Simulation to show Finance the liability curve it creates, and a campaign holdout to find out whether behaviour actually moved. Only the third can answer that last question.

10 · Campaigns

A campaign is a bonus that stacks on top of base earn — never a replacement for it. Each campaign is built across four tabs, with the name, ID, status and launch controls always visible.

Tab Decisions you make there
MechanicTrigger, minimum spend, reward shape (flat, per-unit or multiplier), per-customer cap, dates, and a preview of what one customer would earn
AudienceTiers, cities, KYC level, minimum transaction count, lapsed-customer flag — and the control group / holdout %
MessageChannel and copy in English, Urdu and Roman Urdu, frozen at submission
CostPoints liability and messaging spend, kept separate, plus pool consumption against the hard cap
Holdout doctrine — the most important paragraph in this section

Set a holdout of at least 10% on every campaign. The holdout is eligible customers deliberately not given the bonus, so the difference between them and the treated group is the campaign's effect. Without one you can report spend and activity but you cannot say the campaign caused anything. A 5% holdout on a small cohort produces a confidence band wider than the effect you are trying to measure — that is worse than no test, because it looks like an answer.

Two cost figures are shown and they are never netted together: points liability under IFRS 15, and messaging spend as marketing cost. The pool is a hard ceiling — when it is consumed, awards stop. Lifecycle actions are Submit for approval, Pause / Resume (awards stop immediately; points already issued stay), Duplicate and Delete.

11 · Campaign analytics

Opens on the portfolio view: total points spend, incremental actives, blended cost per incremental active, and — reported as prominently as the successes — the spend that cannot be read. The scope dropdown switches to a single campaign for its control-group table, message funnel and post-campaign persistence.

11.1 Reading a result

  1. Check the holdout size before the result. If the holdout was too small, stop — the result is noise whatever it says.
  2. Compare treated against control on the same metric. Lift is the difference, not the treated group's absolute performance.
  3. Read the significance. A +0.5pp lift at p = 0.31 is not a lift. Report it as "no detectable effect", not "a small improvement".
  4. Divide by incremental actives, not by everyone. Cost per incremental active is the only cost figure that means anything.
  5. Look at persistence. Habit retained after the campaign ended is the real prize; a spike that vanishes bought transactions, not customers.

Campaigns with no adequate control group are excluded from the blended cost figure rather than assumed to work. This is deliberate and you should not "fix" it by estimating a denominator.

12 · Approvals

Every submission lands here: engine change requests, campaigns, adjustments, templates and settlement runs. Each shows the requester, role, timestamp, required sign-offs and the full diff. Approving applies it on the next run; rejecting returns it with a reason. Both write to the audit log.

Change Required sign-off
Point value / rupees per pointFinance + Internal Audit
Earn rule or habit valueFinance + Program admin
Tier threshold or Trust Score weightCredit Risk
Campaign launchFinance + Compliance
Customer-facing copy or quiz questionCompliance
Manual adjustment over 250 pointsProgram admin (never the raiser)
Partner settlement runFinance + Procurement

13 · Fraud and abuse

A points program is a fraud target. Six detection patterns run on the same nightly batch as the ledger, so an alert and the points it questions are always the same age.

Pattern Threshold
Circular P2P2 A→B→A round trips inside 24h, both legs earning
Agent collusion4 customers, one agent, cash-in then cash-out inside 30 minutes
QR velocity farming12 payments a day just over the Moments minimum ticket
Self-referral ring3 KYC upgrade bonuses per device fingerprint
Quiz automationAnswered under 4 seconds, 5 days running
Dormant reactivation spike30 transactions in 48h after a bonus
Procedure — triage an alert
  1. Open the alert and read the evidence list before forming a view. Confidence is a score, not a verdict.
  2. Check the customer's 360 for context: tenure, disputes, whether the pattern is new.
  3. Choose one action.
    • Suspend earning — existing points stay in the balance, nothing new accrues, a case opens automatically. Use when the pattern is live and material.
    • Claw back points — raises a journalled adjustment with two signatures. The original award is never deleted; a reversal is posted against it.
    • Clear as legitimate — earning continues, the pattern stays on the record for 12 months, thresholds unchanged.
  4. High-severity patterns involving agents or rings are referred to the Financial Crime Unit in parallel — the console action is not the referral.

Nothing here reverses points on its own. A claw-back is the mirror image of a goodwill credit and carries the same dual authorisation.

14 · Cases

Every customer issue on the program, with an owner, a priority and an SLA. Cases arrive from app chat, the contact centre, branches and automatically from fraud alerts.

  • Assign to me takes ownership. The SLA clock does not restart — it never does.
  • Escalate raises priority to Urgent, which pages the duty officer and appears on the Finance daily.
  • Resolve closes it and writes the resolution into the customer's own activity feed. A case closed here is a case the customer can read.

Work the queue by SLA, not by age: a breached case with no owner is the most urgent thing on the screen. Always run the engine trace before contacting the customer — roughly a third of "missing points" cases turn out to be transactions excluded by rule, where the answer is an explanation rather than an adjustment.

15 · Credit desk

Applications with the Trust Score attached, alongside bureau depth. The recommended price is a model output; the analyst may price it. Two standing constraints: preferential pricing from the Trust Score stays gated on risk-model validation, and no decision taken here writes to a core system — the desk demonstrates the workflow and records the judgement.

The case for the score is thin-file customers: someone with two years of punctual bill payments through the wallet and no bureau history is invisible to a traditional score and legible to this one. That is the argument to make, and the reason the score must never be movable by playing a game.

16 · Partners, catalogue and settlement

16.1 Partners

One row per partner with accrued value for the month; the detail panel carries the contract, funding model, redemption rate, monthly cap and the SLA against actual fulfilment. Watch the fulfilment column: a partner outside SLA with a failure rate several times the program average is a customer-trust problem before it is a commercial one, and service credits are netted off the next settlement.

16.2 Catalogue

Every item with its points cost, rupee value and — the column that matters — the per-point rate. That rate is not the same across the catalogue: a point buys more against a bill than it does at a partner whose funding rate is lower. Customers work this out, so the catalogue is priced deliberately rather than left to whatever each partner offered. Two standing rules: no item may be priced above the booked point value, and bill payment should remain the best rate available, because it is also the redemption that helps a customer's Trust Score.

16.3 Settlement

Procedure — monthly settlement run
  1. Confirm the redemption ledger is reconciled for the period (section 18).
  2. Open Partners → Settlement and check accrued value and the HBL-funded share.
  3. Click Run settlement. The run reads the ledger, nets off service credits and drafts one payment file per partner.
  4. It goes to Approvals for Finance and Procurement. No payment file is produced before sign-off.
  5. A closed period cannot be re-run. That is the control that stops a double payment — if a correction is needed, raise it as an adjustment to the next run.

17 · Onramp funnel

Install → registered → KYC started → submitted → Level 1 → first transaction → active in month two, each step showing conversion off the previous one, with the four leaks named alongside cause and proposed fix. Read it with one question in mind: is the bonus the problem, or is the journey? Currently the bonus works at roughly Rs. 74 a head while half of everyone upgraded is gone by month two — which makes the 72-hour window after the bonus, not the bonus size, the thing to fix.

18 · Ops and reconciliation

The points ledger tied out to the general ledger, account by account: opening, issued, redeemed, expired, closing, GL and variance. Below it, every nightly job with schedule, duration, records and retries, and the health of each upstream feed.

Daily checklist — before 09:00
  1. Did every job succeed? A failed job with no retry is the top of your day, whatever else is on it.
  2. Does every GL account tie? Any variance becomes a break with an owner and a target date.
  3. Are any feeds degraded? A degraded SMS gateway means expiry warnings are not landing; a degraded biller means reservations are queueing.
  4. Any new fraud alerts overnight? Triage before the customer notices.
  5. Any case breached overnight? Assign it before you do anything else.
Why this screen exists

A streak payout job once timed out with no retry. Three days later it was a customer complaint; three days after that it was a goodwill adjustment with two signatures. Batch reliability is a customer-trust metric, not an IT metric — which is why it is reported here and in the board pack rather than in a systems report.

19 · Board reporting

Choose a period, select sections, build the pack. Figures are read live from the console at the moment of assembly — nothing is retyped, which is why the numbers always match the screens they came from.

The pack leads with DAU/MAU and closes with what did not work: campaign spend with no detectable lift, spend that cannot be judged at all, SLA breaches, open reconciliation breaks. Keep it that way. A board pack containing only good news is a pack nobody can act on, and the first time the bad news arrives from outside the program office you have lost the argument for the program.

20 · Audit log

Append-only. Every configuration change, approval, adjustment, reveal event, template publication, settlement run and access change, with actor, role, area, diff, reference and result. Filter by area or search by actor, reference or action. Nothing can be edited or removed, including by an administrator. When Audit asks "who changed the ratio and who approved it", this screen is the answer and no other screen is.

21 · Operating calendar

Cadence What happens Owner
Daily, before 09:00Ops checklist; fraud triage; breached cases assignedAnalyst on duty
DailyApprovals queue cleared to zero pending over 24hProgram admin
WeeklyTrust Score recalculation reviewed; DAU/MAU and the mercenary test read togetherProgram office + Credit Risk
WeeklyLive campaign check: pool consumption, message funnel, early liftAnalyst
Monthly, 1stPartner settlement run; liability revaluation; board pack assembledFinance + Program office
MonthlyCampaign post-mortems, including the ones that did not workAnalyst
QuarterlyBreakage assumption re-signed; access review; catalogue repricingFinance + Audit

22 · Escalation matrix

Situation Do this, in this order
Points issued in error at scalePause the rule or campaign → notify Finance → quantify from the ledger → single claw-back request with evidence. Do not reverse account by account.
A nightly job failsRaise with Ops for retry → estimate affected customers → open a case per affected customer if the retry cannot run same day.
GL will not tieRecord the break with an owner and target date → do not adjust the ledger to force a tie → escalate to Finance if open beyond 72 hours.
Suspected agent or ring fraudSuspend earning → refer to the Financial Crime Unit → do not contact the customer before FCU advises.
Partner outside SLA repeatedlyClaim service credits → throttle the catalogue item → notify Procurement before renewal.
Pressure to use the Trust Score for pricing earlyRefuse and route to Credit Risk. Cohort validation is a launch gate, not a formality.

23 · Common tasks — quick reference

Task Where Approval
Explain an award to a customerCustomer 360 → activity → traceNone
Raise a goodwill creditTrace → Raise adjustmentProgram admin
Change a streak rewardEngine config → Habits & streaks → SubmitFinance + admin
Launch a festival campaignCampaigns → New campaign → four tabs → SubmitFinance + Compliance
Add a quiz questionEngine config → Quiz library → publishCompliance
Write a new notificationEngine config → Templates → New templateCompliance + admin
Suspend a suspicious account's earningFraud & abuse → alert → Suspend earningNone to suspend; admin to claw back
Pay the partnersPartners → Settlement → Run settlementFinance + Procurement
Prepare the board packBoard reporting → select → BuildProgram head
Show Finance a 12-month cost curveEngine config → Simulation → RunNone to run; Finance signs the change

24 · Glossary

BacktestReplay of a draft rule against transactions that already happened. Answers cost, never behaviour. BreakAn unexplained variance between the points ledger and the general ledger. Owned until closed. BreakageThe share of issued points expected never to be redeemed. An assumption Finance signs. Claw-backReversal of awarded points via a journalled adjustment with two signatures. Fatigue classWhether a message counts against the monthly cap. Service and earned messages are exempt. HoldoutEligible customers deliberately excluded from a campaign so its effect can be measured. Incremental activeAn active customer the campaign caused, measured against the control group. LotA batch of points earned in one period with a single expiry date. Spent oldest first. MDEMinimum detectable effect — the smallest lift a given holdout can resolve. Mercenary testReading engagement and Trust Score on the same cohort to see whether the program buys habit or attention. MomentA capped chance reward on a qualifying transaction, funded by marketing. Point valueRupees per point. Prices the whole program and the liability. ReservationPoints held against a pending redemption. Held, not spent; released if unconfirmed. SimulationForward projection of the ledger. Answers what a rule will cost; quoted as a range. TraceThe full explanation of one award: rule, inputs, arithmetic, plain wording. Trust ScoreBehavioural credit signal built from banking behaviour only. Never movable by games.

Appendix A · Field reference

Field Live value Effect of raising it
Rupees per pointRs. 0.35Liability and every redemption cost rise proportionally
Minimum redemption200 ptsFewer small redemptions; breakage rises
Expiry18 monthsLonger life lowers breakage and raises liability
Daily check-in1 ptHighest-volume line — small changes are large in aggregate
Day-30 milestone10 ptsRetention lever; paid once per cycle
Quiz points2 pts × 2 questionsCheap and partly self-funding via lower dispute rates
Free streak freezes1 a monthCosts nothing; protects streaks and retention
Onramp bonus500 ptsRaises upgrade rate; does nothing for month-two retention
Moments cap1 a dayDirect multiplier on marketing spend
Moments minimum ticketPKR 100Anti-farming control — lowering it invites abuse
Cashback monthly capPKR 400Caps the tail without touching the median earner
Message fatigue cap6 a customer a monthMore reach, more SMS cost, faster opt-out
Default campaign holdout10%Larger holdout resolves smaller effects; do not go below 10%

Appendix B · What the console will not let you do

These are controls, not gaps. If a colleague asks you to work around one, the answer is no and the reason is here.

  • Approve your own submission. Raiser and approver are always different accounts.
  • Apply an engine change immediately. Everything waits for the nightly run.
  • Unmask a book of customer names. One customer at a time, each one logged.
  • Delete or edit an audit entry. Append-only, including for administrators.
  • Re-run a closed settlement period. Corrections go to the next run.
  • Adjust the ledger to make the GL tie. A break stays a break until it is explained.
  • Publish a template with an empty English body. English is the source the translations are checked against.
  • Price credit off the Trust Score before validation. Gated on the cohort, not on enthusiasm.
  • Add a points or habit input to the Trust Score. The separation is the entire credit argument.

Appendix C · On-premise deployment

The console runs inside the bank's own data centre. Three consequences you will meet in practice.

How the parts fit

This console is a configuration and read surface. It is not where anything is computed. The work happens in background engines running inside the bank's own batch window, and the console's job is to configure them, govern the changes, and display what they produced.

Engine Computes Console's role
Earn engineAwards, caps, campaign attribution, expiry, the points ledgerConfigure the rules; approve changes; read the trace
Trust Score engineThe behavioural score, recalculated on its own scheduleConfigure inputs, weights and lookbacks; read the score
Detection engineFraud and abuse alerts against the pattern thresholdsTriage alerts; record dispositions
Liability engineNightly revaluation and the GL journalHold the point value and breakage assumption; read the position
Retention engineChurn and at-risk scoring — a separate deploymentDisplay only, and filter campaign audiences by the flag

Two consequences that come up constantly in practice. A screen showing a stale figure is usually an engine that has not run, not a broken screen — check Ops and reconciliation before raising a UI defect. And the console cannot produce a number an engine has not computed: if the Trust Score recalculation did not run this week, the scores on screen are last week's, and they are labelled as such rather than silently re-estimated.

  • No customer data leaves the bank. Points, scores, traces and audit entries are computed and stored on the bank's own infrastructure. There is no external analytics dependency to explain to Compliance.
  • The nightly batch is the bank's batch. Its window is agreed with Ops and it competes with everything else in that window. This is why a change applies "tomorrow" rather than "now", and why a failed job cannot simply be re-run at will.
  • Upgrades are events, not background releases. A version is deployed on a date, tested against the bank's own data, and the audit log spans versions — which is exactly why nothing in it may be edited.
If you remember one thing

The customer can see almost everything you can. They can read why an award was what it was, which points expire first, why they got a message, and how their case was resolved. Operate on the assumption that every figure on your screen will be read back to you by the person it belongs to — because it can be.

Figures in this manual are illustrative and consistent with the console build. Thresholds, reward values and tier names remain subject to workshop confirmation. Version 1.0 · August 2026 · Program Office, HBL Microfinance Bank.