{{ programName }}

Program office

Nightly batch, 06:00 PKT. Rule and pricing changes here are projections, not production writes.

Customer app demo →

{{ sectionTitle }}

{{ sectionSub }}

{{ piiBadge }} Data as of {{ asOf }} {{ liveBadge }}
{{ k.label }}

{{ k.value }}

{{ k.delta }}

The mercenary test {{ periodLabel }} · same cohort

Engagement index against Trust Score movement. Engagement rising while Trust Score stays flat is reward-chasing, not habit formation — the one signal that invalidates the program.

{{ axis1 }} {{ axis2 }} {{ axis3 }} {{ axis4 }} {{ axis5 }} Engagement Trust Score {{ mercenaryVerdict }}
Streak completion
{{ b.label }} {{ b.value }}
Watch list
{{ w.text }}
{{ o.label }}

{{ o.body }}

{{ liveBadge }}

Everything on this page reads from the demo backend — the same ledger the customer phone writes to. An action on the phone lands here within a second; a nudge sent here pops up on the phone within three seconds.

{{ k.label }}

{{ k.value }}

{{ k.sub }}

Live activity newest first · pushed over SSE
{{ e.at }} {{ e.who }} {{ e.what }} {{ e.amount }}

Waiting for the first action. Open the customer app, check in or pay a bill, and it appears here.

Send a nudge

Rendered from the template library, delivered in-app as a popup. The status ticks Queued → Delivered → Seen as the device picks it up.

{{ liveNudgePreview }}

{{ liveNudgeStatusLine }}
Entitlement webhooks

We compute entitlement and fire a signed trigger; the bank moves the money. Replay re-sends with the same idempotency key — the bank side ignores the duplicate.

{{ w.at }} {{ w.type }} · {{ w.status }} {{ w.sig }} · {{ w.latency }}

No deliveries yet. Redeem something on the phone and the trigger lands here.

Pair the customer phone

Backend: {{ livePairBase }}
Device token (c1 · Ayesha): {{ livePairToken }}

Layer Cadence Participation Monthly cost Funded by Phase
{{ l.name }} {{ l.cadence }} {{ l.participation }} {{ l.cost }} {{ l.funder }} {{ l.phase }}
Layers ranked by trigger frequency

Bar length is cadence, not reward value. The top three carry engagement; the bottom three carry meaning.

{{ c.name }}
{{ c.note }}
Deposit angle

ADB gating on Root and Harvest is a funding source, not a cost. Rs. 5.7bn of gated balances, measured as 34 bps off blended cost of funds. Tracked jointly with Treasury.

Self-funding evidence
{{ s.label }} {{ s.value }}

Quiz completion is tracked against fraud-dispute rates by cohort. The gap is what lets Daily Habits be reported as partly self-funding.

{{ selInitials }}
{{ selName }} {{ selTierChip }} {{ selMaskChip }}

{{ selIdLine }}

{{ selLifeLine }}

Points available to spend

{{ selPointsFmt }}

{{ selWorthLine }}

{{ b.label }}
Why points look “missing”
{{ c.label }} {{ c.value }}

{{ c.note }}

Points timeline
{{ e.icon }}
{{ e.title }} {{ e.ref }}
{{ e.tag }} {{ e.delta }} {{ e.date }}

Every row carries a decision trace. Open one to see each source that looked at the transaction and the wording to read back to the customer.

Tier progress

{{ selTierSince }}

{{ selTierNext }}

{{ b.label }}
Next best offer decided 06:00 · traced
{{ o.rank }} {{ o.name }} {{ o.score }}
{{ t.label }}
{{ o.margin }}

The model ranks, the caps and fatigue rules veto, and every decision carries a trace — offers are explained the way points are.

Expiry schedule
{{ l.points }} {{ l.lot }}
{{ l.date }}

{{ selLotNote }}

Decision trace

{{ traceRef }}

{{ k.label }}
{{ traceStatus }}

{{ traceHeadline }}

{{ traceSub }}

{{ traceTotalLabel }} {{ traceTotal }}

Every source that looked at this transaction

{{ s.n }}
{{ s.badge }} {{ s.title }} {{ s.value }}

{{ s.formula }}

Say this to the customer

{{ traceWording }}

{{ traceActionNote }}

{{ traceFooter }}

Customer Tier Score Streak Level
{{ c.name }} {{ c.meta }}
{{ c.tier }} {{ c.trust }} {{ c.streak }} {{ c.level }}

No customers match that filter.

{{ resultCount }} · sample extract, not the full book.

{{ selInitials }}

{{ selName }}

{{ selMeta }}

{{ piiNote }}

{{ selTrust }} {{ selBand }}
{{ t.label }} {{ t.weight }} {{ t.note }}
{{ s.label }}

{{ s.value }}

{{ s.sub }}

Flags & constraints

{{ selFlags }}

Habit activity is excluded from the score by design. Engagement that does not show up in transaction consistency, bill punctuality or savings held earns points, never pricing.

Outstanding points

184.2M

all layers, month end

Recognised liability

{{ liabilityTotal }}

{{ bookedBreakageLine }}

Redemption rate

72%

rising is the goal, not falling

Partner-funded share

61%

+4 pts on last quarter

Layer Outstanding Breakage Cost / point Liability Owner
{{ r.layer }} {{ r.outstanding }} {{ r.breakage }} {{ r.cpp }} {{ r.liability }} {{ r.owner }}
Breakage sensitivity {{ breakageLabel }}

Lower breakage means customers actually redeem — a better program and a larger recognised liability. Audit will ask which direction the assumption was moved, and why.

Liability

{{ liabilityTotal }}

Vs. booked

{{ liabilityDelta }}

IFRS 15 position

Outstanding Points × (1 − Breakage Rate) × Cost Per Point.

Daily Habits is modelled separately from Moments — one blended rate misstates both, because habit points are earned free and Moments are near-cash. Finance and Audit sign the model before launch, and re-sign each time a rule moves.

{{ s.label }} {{ s.status }}

{{ draftLine }}

{{ draftSub }}

{{ t.label }}

{{ t.value }}

{{ t.sub }}

The guardrail on this whole section

{{ mercenaryVerdict }}

Every control below buys attention. It only counts if Trust Score follows — engagement mechanics can move the behaviour the score measures, but they are locked out of the score itself.

Tier ladder {{ t.label }} Read-only here — thresholds are Trust Score, edited in Engine config.
Transaction type Earn basis Points Daily cap Monthly cost State
{{ e.label }} {{ e.note }}
{{ e.basis }} {{ e.cost }}

No earn rules. Nothing in the program issues points — add one below.

Add an earn rule for every active trigger already has a rule — add a trigger first
Design rule

Foundation cashback is cash, not points — the one earn line that never touches the ledger, deliberately modest because it comes from the bank's own margin. Every line above creates a liability the moment it fires.

Points issued / month

{{ earnPointsTotal }}

across the enabled lines

Cost / month

{{ earnCostTotal }}

at {{ ratioShort }}, net of breakage

Point value & redemption

The point-to-rupee ratio prices the whole program, and it is the number Audit traces through the liability model.

{{ f.label }}

{{ f.note }}

{{ f.unit }}
Point-to-rupee ratio

{{ ratioHeadline }}

{{ r.label }} {{ r.value }}
Liability at this ratio

{{ ratioLiability }}

184.2M points outstanding

Vs. live ratio

{{ ratioDelta }}

live is Rs. 0.35 a point

Redemption should be easy and the rate should rise. A ratio tuned to suppress redemption turns the program back into a discount scheme with an audit problem attached.

Streak, quiz & onramp rules

{{ habitLayerNote }}

{{ f.label }}

{{ f.note }}

Resulting reward curve

What the customer sees on the Habits tab, computed from the values on the left.

{{ b.value }}
{{ b.label }}

{{ habitCostLine }}

This is where “earned” is defined. The Trust Score is a weighted read of how a customer banks. Points are never an input — not base earn, not campaigns, not habits — so no promotion can buy a better score. Owned by Credit Risk; any change here needs model validation before it reaches production.

Score range

{{ trustRange }}

Input Weight How it is measured Lookback State
{{ trustWeightNote }} {{ trustWeightTotal }}
Never an input — by design
{{ e.label }}

These are locked out of the model, not merely weighted at zero. It is what makes the mercenary test a real test.

Score bands and what they unlock

Thresholds come from the tier ladder — edit them on that tab so the score and the ladder cannot drift apart.

{{ b.name }} {{ b.from }} {{ b.unlock }}
Question library

{{ quizCountLine }}

{{ q.title }} {{ q.meta }}
{{ q.state }}

Live questions are served two or three a session with an explanation after every answer. Draft questions never reach a customer.

{{ editorTitle }} {{ editorRef }}
Question
Answers — tap the circle to mark the correct one
Explanation shown after answering
Category

{{ editorStatus }}

{{ fatigueLine }}

Notification templates
Template · event Channel Sent 30d Status
{{ t.name }} {{ t.id }} · {{ t.event }}
{{ t.channel }} {{ t.sent30 }} {{ t.status }}
Why templates are governed

{{ tplStance }}

{{ tName }} {{ tStatus }}
{{ tId }} · {{ tEvent }} · {{ tChannelLabel }} · {{ tFatigue }}
English

{{ tEn }}

اردو

{{ tUr }}

Roman Urdu

{{ tRoman }}

Sent · 30d {{ tSent }}
Opened {{ tOpen }}

{{ tplCostLine }}

{{ tplLangWarn }}

{{ tplNote }}

Template copy · {{ tId }}
Name
Fires on
Channel
Fatigue class
English
اردو
Roman Urdu

{{ tplVarLine }}

{{ tplCostLine }}

{{ tplLangWarn }}

{{ tplNote }}

Project the ledger forward

{{ simBasisNote }}

Horizon
Basis
Redemption propensity
Monthly customer growth · %
Program adoption · % of MAU
Breakage · %
{{ t.label }} {{ t.value }} {{ t.sub }}
Liability build the darkest bar is the peak
{{ b.value }}
{{ b.label }}
Period Actives Issued Redeemed Outstanding Liability
{{ r.m }} {{ r.actives }} {{ r.issued }} {{ r.redeemed }} {{ r.outstanding }} {{ r.liability }}
Sensitivity to the breakage assumption
{{ s.label }} peak {{ s.peak }} close {{ s.close }}

{{ s.note }}

Per active customer, a month
{{ simPerActive }}issued
{{ simCostPerActive }}recognised cost
How to quote this

{{ simStance }}

What this simulation assumes — and where it will be wrong
{{ a }}
Replay the draft against history

{{ btDraftLine }}

{{ btBaselineNote }}

{{ t.label }} {{ t.value }} {{ t.sub }}
Measure Under the draft Versus actual
{{ r.label }} {{ r.note }}
{{ r.a }} {{ r.b }}
Cannot be backtested
{{ u }}
What a backtest can and cannot say

{{ btHonesty }}

{{ cbOnLabel }} Foundation cashback — instant cash on every eligible transaction, funded from the bank’s own margin.
Channel Eligibility Rate × Monthly volume Rated volume
{{ r.label }} {{ r.vol }} {{ r.effective }}
Payout cadence

Instant is the whole point of this layer — the customer sees cash before they leave the counter.

Minimum ticket · PKR

Below this, a transaction earns nothing — the first defence against velocity farming.

Monthly cap a customer · PKR

Caps the tail without touching the median earner.

What this costs, at today’s volumes
Rated volume {{ cbEligibleVol }}
Weighted rate {{ cbWeighted }}
Gross, before cap {{ cbGross }}
After the cap · monthly {{ cbNet }}

{{ cbAnnual }} annualised. {{ cbCapLine }}

{{ cbTierLine }}

Design rule

{{ cbLedgerLine }}

Tier name Score from Cashback % Moments rate Trust Score unlock Share
{{ t.share }}
Threshold check

{{ tierWarning }}

Bronze-trap rule

One qualifying condition per tier, never four at once. If a customer cannot say in one sentence why they moved up, the ladder is wrong.

Moments engine

Instant, transaction-triggered, capped. A Moment is funds received — the two-hour hold applies and must be disclosed in the reveal copy.

{{ f.label }}

{{ f.note }}

{{ f.unit }}
Projected Moments spend

{{ momentsSpend }}

{{ momentsSpendSub }}

Eligible triggers

Above one reveal a day the mechanic stops being a surprise and starts being an expected discount — at which point the budget line behaves like margin, not marketing.

One catalogue, two consumers. A trigger is an event the engine can react to. Earn rules turn a trigger into points; Moments turns a trigger into an instant reward. Disable a trigger here and it stops firing in both — that is the kill switch.

Trigger Basis Volume / mo Units Used by State
{{ t.usedBy }}
Catalogue

{{ triggerSummary }}

Volume is per month and drives every cost projection in this console. Units is how many earn increments one event produces — one for a flat per-transaction rule, twelve for an average Rs. 1,200 QR basket earning per Rs. 100.

Channel rate card Sender ID {{ senderId }} · contracted to {{ contractedUntil }}

These rates are what every campaign's cost estimate is built from. Change one here and every campaign in the builder reprices. Rates come from the aggregator contract — Finance owns them, not Marketing.

{{ r.label }} {{ r.vendor }} · {{ r.free }}
{{ r.unit }}
{{ r.note }} 1M sends · {{ r.cost1m }}
SMS segment sizes

An SMS is billed per segment. Latin text fits 160 characters a segment; Urdu is UCS-2 and fits 70. A trilingual campaign is costed at the worst case of the two.

Latin · chars a segment
اردو UCS-2 · chars
Messaging policy

Defaults every new campaign inherits. The fatigue cap is a hard stop across all campaigns — a customer cannot be messaged past it, whoever is running the promotion.

Default holdout %
Cap · messages a month
Quiet hours from
Until

Messaging spend is a marketing cost, not a points liability — it never touches the IFRS 15 provision. Budget it separately, and watch the ratio: a campaign spending more on telling people about the reward than on the reward itself is a campaign worth killing.

Rule set · projection sandbox

Move a lever to see the projected effect on cost and liability. Nothing here reaches production.

{{ r.label }} {{ r.display }}

{{ r.note }}

Projected monthly program cost

{{ projCost }}

{{ projCostSub }}

{{ projVsLive }}

Points liability

{{ projLiability }}

at the sandbox breakage

Cost per engaged user

{{ projPerUser }}

per month, blended

Change control
{{ c.text }}
Queue {{ queueCount }}
{{ q.name }} {{ q.meta }}
{{ q.trust }} {{ q.status }}
Application {{ caseRef }} Trust Score attached

{{ caseAmount }}

{{ caseWho }}

{{ f.label }}

{{ f.value }}

Behavioural evidence
{{ e.text }}
System recommendation

{{ recPrice }}

{{ recSub }}

Analyst price {{ analystPrice }}

{{ priceNote }}

{{ decisionLine }}

{{ k.label }}

{{ k.value }}

{{ k.sub }}

Partner · funding Redeemed Fulfil Accrued Aug
{{ p.name }} {{ p.cat }} · {{ p.model }}
{{ p.redemptions }} {{ p.fulfil }} {{ p.accrued }}
{{ pName }} {{ pCat }} · {{ pContract }}
{{ f.label }} {{ f.value }} {{ f.sub }}
Accrued in August {{ pAccrued }}
HBL owes {{ pOwed }}

{{ pOwedNote }}

{{ pNote }}

{{ pBreachNote }}

Item Partner Points Value Per point Availability
{{ c.item }} {{ c.status }}
{{ c.partner }} {{ c.pts }} {{ c.value }} {{ c.rate }} {{ c.stock }}

{{ catalogueNote }}

Accrued this month {{ stlAccrued }}
Of which HBL funds {{ stlOwed }}

{{ stlNote }}

Run Period Gross HBL funds Partners Status
{{ s.id }} {{ s.period }} · {{ s.partners }} {{ s.gross }} {{ s.hbl }} {{ s.partner }} {{ s.status }}

{{ s.note }}

How a settlement run works

{{ stlStance }}

Who funds the program
{{ f.label }}

The purpose track is the one line funded on principle rather than return — literacy sessions and small-business grants, reported beside the commercial partners so the trade-off stays visible rather than buried in marketing.

{{ c.name }}

{{ c.detail }}

{{ c.meaning }}

{{ c.status }}
Delivery — four phases over eighteen months month 11 of 18
{{ p.label }}
{{ p.scope }} {{ p.status }}

Phase 1 shipped on existing transaction data. Phases 2 and 3 overlap deliberately; games and the full Shariah variant remain Phase 4, sign-off first.

{{ r.risk }}

{{ r.mitigation }}

{{ r.owner }}
Build a campaign

Name it, say what it fires on and what funds it. Everything else is set in the editor.

Campaigns {{ campCount }}
{{ c.name }} {{ c.status }}

{{ c.ref }}

{{ c.window }} {{ c.spend }}

A campaign never replaces base earn — it adds to it. That is the rule that keeps “where did my points go” answerable: the base line is always there, and every campaign shows as its own line on the trace.

Campaigns award points, never Trust Score. They move the behaviour the score measures — a bill campaign lifts bill punctuality — but a promotion can never buy a better score. That separation is what makes the mercenary test meaningful.

{{ campId }} {{ campStatus }}

{{ campTabNote }}

Fires on
from the trigger catalogue
Reward shape
{{ campRewardLabel }} {{ campRewardUnit }}
Per amount spent PKR
{{ f.label }}

{{ f.note }}

{{ f.unit }}
Runs from
Until
Audience · tiers
Audience · cities none selected = all cities
KYC level
Min lifetime transactions
{{ audienceLine }} {{ audienceSample }}
Control group / holdout {{ holdoutLabel }}

{{ treatedLine }}

{{ holdoutNote }}

What a customer would earn test a spend of
{{ l.badge }} {{ l.title }} {{ l.value }}

{{ l.formula }}

Total the customer sees {{ campPreviewTotal }}

{{ campPreviewSentence }}

{{ campPreviewWarn }}

{{ campProjection }}

Message
{{ msgChannelNote }}
English
اردو
Roman Urdu
{{ msgLenNote }}
{{ msgPreviewTitle }}

{{ msgPreview }}

{{ msgPreviewUr }}

{{ msgFooterText }}

What this costs HBL {{ costPctLabel }}
{{ r.label }} {{ r.value }}
Total expected · worst case {{ costTotal }}

{{ costSplit }}

{{ costNote }}

Pool consumption {{ campSpendLine }}

{{ campNote }}

Nothing here awards a point until Finance signs the pool and Compliance signs the mechanic. Every change lands in the audit log.

New campaign

Four decisions to open a draft. It awards nothing until Finance and Compliance sign it.

Campaign name
Start from
Fires on

From the trigger catalogue — only active triggers can carry a campaign.

Runs from
Until
Pool · Rs. M

{{ wizSummary }}

{{ wizHint }}

{{ confirmTitle }}

{{ confirmBody }}

{{ confirmRef }}
Scope {{ scopeNote }}
All campaigns · {{ aggWindow }} {{ aggCount }}
{{ t.label }} {{ t.value }} {{ t.sub }}
Where the points spend went — and what it bought
{{ b.label }} {{ b.value }} {{ b.pct }}

{{ b.note }}

Program read

{{ aggVerdict }}

{{ aggMethod }}

Results · {{ perfName }} {{ perfWindow }} {{ perfHoldLabel }}

{{ perfEmpty }}

{{ t.label }} {{ t.value }} {{ t.sub }}
Treated vs held-back control Treated Control Difference
{{ r.label }} {{ r.note }}
{{ r.treated }} {{ r.control }} {{ r.delta }}
{{ verdictBadge }}

{{ verdictText }}

{{ funnelTitle }}
{{ f.label }} {{ f.value }} {{ f.pct }}

{{ funnelNote }}

{{ persistTitle }}
{{ p.label }}
{{ p.value }}

{{ persistNote }}

{{ perfMethod }}

Portfolio — every campaign, ranked by cost per incremental active {{ portfolioTotal }}
Campaign Spent Lift Cost / incr. Read
{{ p.name }} {{ p.meta }}
{{ p.spend }} {{ p.lift }} {{ p.cpi }} {{ p.read }}

Cost per incremental active divides campaign spend by the extra actives the holdout says the campaign caused — not by everyone who qualified. A campaign with no holdout has no denominator, and stays unranked.

{{ apprCount }}
{{ a.title }} {{ a.status }}

{{ a.ref }}

{{ a.meta }}

Nothing in this state.

Nothing configured in this console reaches a customer without passing through here. An analyst drafts, a second person decides, and the decision is written to the audit log with both names on it.

{{ apprTitle }} {{ apprStatus }}

{{ apprRef }}

{{ apprWho }}

What changes

{{ l.text }}

Sign-off required from
{{ s.label }}
your own request — needs a different account

{{ apprNote }}

Why this queue exists

Reward values move a recognised liability, so a rule change is a financial change, not a marketing setting. The queue is what turns that principle into a control an auditor can test — and the reason maker and checker can never be the same person.

{{ t.label }} {{ t.value }} {{ t.sub }}
Install to habit last 90 days, all channels
{{ f.stage }} {{ f.n }} {{ f.rate }} {{ f.drop }}

{{ f.note }}

Where it leaks, and what would fix it
Step Lost Why Fix
{{ l.where }} {{ l.lost }} {{ l.why }} {{ l.fix }}
Read

{{ onrampVerdict }}

{{ t.label }} {{ t.value }} {{ t.sub }}
Ledger to general ledger · 20 Aug close points movement in millions, value in PKR
Account Opening Issued Redeemed Expired Closing GL Variance
{{ r.acct }} {{ r.open }} {{ r.issued }} {{ r.redeemed }} {{ r.expired }} {{ r.close }} {{ r.gl }} {{ r.varn }}
{{ breakTitle }}

{{ breakBody }}

{{ l }}
Nightly batch every job that touches points
Job Last run Duration Records Status
{{ j.name }} {{ j.sched }}
{{ j.last }} {{ j.dur }} {{ j.recs }} {{ j.status }}
Feed health · 30 days
{{ f.name }} {{ f.last }}
{{ f.uptime }} {{ f.lat }}
Why this screen exists

{{ opsStance }}

Build the pack
{{ boardCount }}
{{ s.label }} {{ s.note }}

{{ boardNote }}

Board pack · draft

{{ boardTitle }}

{{ f.label }} {{ f.value }} {{ f.sub }}
Contents
{{ c.n }}
{{ c.label }} {{ c.note }}
How this pack is written

{{ boardHonest }}

{{ t.label }} {{ t.value }} {{ t.sub }}
Alerts newest first · click to open
{{ a.id }} {{ a.pat }} {{ a.name }} {{ a.sev }} {{ a.points }} {{ a.status }}
Detection patterns the abuse this program is actually exposed to
Pattern Threshold Open Exposure
{{ p.name }} {{ p.rule }}
{{ p.threshold }} {{ p.open }} {{ p.cost }}
{{ alPat }} {{ alStatus }}
{{ alId }} · {{ alName }} · {{ alSev }} · {{ alConf }}

{{ alDetail }}

Evidence
{{ e }}
{{ alPoints }} in scope

{{ alNote }}

How this works

{{ riskStance }}

{{ t.label }} {{ t.value }} {{ t.sub }}
Case queue
Case Type · customer Owner SLA
{{ c.id }} {{ c.pri }}
{{ c.type }} {{ c.name }} · raised {{ c.raised }}
{{ c.owner }}
{{ c.sla }} {{ c.status }}

No cases in this state.

{{ csType }} {{ csStatus }}
{{ csId }} · {{ csName }} · via {{ csChannel }} · raised {{ csRaised }}

{{ csSummary }}

Owner {{ csOwner }} SLA {{ csSla }} {{ csPri }}
Timeline
{{ t.at }} {{ t.text }}
Linked records
{{ l }}

{{ csNote }}

How this works

{{ caseStance }}

Timestamp Actor Area Change Reference Result
{{ a.at }}
{{ a.actor }} {{ a.role }}
{{ a.area }}
{{ a.action }} {{ a.diff }}
{{ a.ref }} {{ a.result }}

No entries match that filter.

The log is append-only and retained seven years. Every reward value, ratio, tier threshold, quiz publication, access change and customer-name unmasking lands here with the before and after values — this is the artefact Internal Audit asks for first, and the reason no lever in this console writes silently.

This month
{{ s.label }} {{ s.value }}
User Role MFA Last active Status Action
{{ u.name }} {{ u.email }}
{{ u.mfa }} {{ u.lastSeen }} {{ u.status }}

Change this role?

{{ roleAskBody }}

{{ roleAskName }}
Role View Configure Publish Price Export
{{ p.role }} {{ p.c1 }} {{ p.c2 }} {{ p.c3 }} {{ p.c4 }} {{ p.c5 }}

Configure and publish are deliberately split: an analyst can draft a reward change, only a program admin can raise it, and Finance signs before it reaches production. Credit pricing sits with Credit Risk alone — no program role can touch it.

{{ usersSummary }}

{{ meInitials }}

{{ meName }}

{{ meEmail }} · {{ meRole }}

{{ f.label }}

{{ f.value }}

What my role can do
{{ p.label }} {{ p.state }}
Security
Two-factor authentication

Required for every role that can configure or publish.

Active sessions
{{ s.device }} {{ s.meta }}
Alerts I receive
{{ a.label }}

{{ meActivityLine }}