Product

Loyalty Engine

A points programme: members, an append-only points ledger, and tiers computed from points earned.

On this page
  1. What it does
  2. What exists now
  3. Data handling
  4. Operating needs
  5. Limits
  6. Availability
  7. Evidence

What it does

The Loyalty Engine keeps a points programme for an account: members, an append-only ledger of points earned, redeemed, adjusted and expired, and a tier for each member that follows the points they have earned. The balance and the tier are always computed from the ledger, never stored, so they cannot drift from it.

What exists now

CapabilityWhat it doesWhere
MembersAn account registers members by its own reference (no names or contact details are held). A member is active, suspended, expired or terminated; expired and terminated are final.Loyalty
EarningPosting base points to an active member earns base points times the multiplier of the tier the member holds when the entry is posted. The entry records the base, the multiplier and the tier.POST /account/loyalty/members/{id}/points
Redeeming, adjusting, expiringRedeeming and expiring remove points and are refused if the balance would go below zero. An adjustment may add or remove points. Every entry carries a reason.Loyalty
TiersBronze from 0 points earned, silver from 1,000, gold from 5,000 and platinum from 20,000, with multipliers of 1.0, 1.25, 1.5 and 2.0. The thresholds are stored data, not code.Loyalty

Data handling

The platform stores a member reference of your choosing and the points history, for the account that created them. Use a reference that does not identify a person outside your own systems. The privacy notice states what the platform collects and keeps.

Operating needs

  • PostgreSQL. Posting locks the member row, so two postings for one member cannot overdraw the balance.

Limits

  • It does not connect to a shop or till: points are posted by your own staff or systems through this page or the JSON route.
  • Points expire only when someone posts an expiry; there is no automatic expiry.
  • A tier is set by points earned, so it does not fall when points are redeemed.
  • Points have no cash value in the platform and it does not hold money.
  • Entries cannot be edited or deleted by the account; a mistake is corrected with an adjustment. The automated erasure step does not remove loyalty members or entries: an erasure request that covers them is completed by the operator.

Availability

The Loyalty Engine is running on RJV's own platform. RJV does not sell a licence for it as a separate product today: the commercial terms state what is on sale. It can be part of the result of an engineering engagement, where the written proposal names it, its licence terms and what you would hold at the end. To discuss it, use Work with Us.

Evidence

The ledger rules, the tier multiplier, the overdraw refusal and account isolation are enforced by the database and exercised by the platform's own tests. The evidence register lists the graded claims.

Where it runs

Supported targetA customer-controlled Linux host on x86-64 with PostgreSQL 18 (linux-x86_64-customer-controlled).
Not yet supportedWindows, macOS, phones and tablets, and Linux on other architectures. Each needs its own installation, update and recovery evidence before it is supported.
Check a deviceRun rjv2 preflight on it. It reads the operating system, architecture, memory, disk, listen address, configuration, database, database role and schema, changes nothing, and exits non-zero if release 2.0.0-alpha.1 cannot run there.
Installed asOne application and a PostgreSQL database. Installing release 2.0.0-alpha.1 (schema 100) installs every system on this site, including Loyalty Engine.
DataIt stays in the PostgreSQL database you run. The only outside service the release can use is an outbound mail relay that you configure.
UpdatingA release is a numbered build. The schema is applied by a separate owner step (rjv2 migrate), and the application refuses to serve a schema it was not built for.
Backup and restorerjv2 backup writes a checksummed dump. rjv2 restore restores it into an empty database and checks the checksum, the schema version and the audit chain of every account.
LeavingThe data is in your own database and can be dumped at any time. What you may do with the release is set by the terms on deployment and ownership.
Published
29 October 2026
Revision
1

Last reviewed 29 October 2026.