Product
Loyalty Engine
A points programme: members, an append-only points ledger, and tiers computed from points earned.
On this page
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
| Capability | What it does | Where |
|---|---|---|
| Members | An 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 |
| Earning | Posting 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, expiring | Redeeming 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 |
| Tiers | Bronze 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.
Works with
- Audit Chain: Requires. Each member, posting and status change is entered in the account's audit chain.
- Identity and Access: Requires. An account signs in and holds the grant that lets it run a programme.
- Retail and E-commerce: Works with. Used in this industry.
- Review Moderation Register: Works with. A programme can reward reviews that were moderated to approved; the posting is made by your staff.
- Storefront Content Register: Works with. Offers and copy for a programme are approved there; points are posted here.
Where it runs
| Supported target | A customer-controlled Linux host on x86-64 with PostgreSQL 18 (linux-x86_64-customer-controlled). |
|---|---|
| Not yet supported | Windows, macOS, phones and tablets, and Linux on other architectures. Each needs its own installation, update and recovery evidence before it is supported. |
| Check a device | Run 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 as | One application and a PostgreSQL database. Installing release 2.0.0-alpha.1 (schema 100) installs every system on this site, including Loyalty Engine. |
| Data | It stays in the PostgreSQL database you run. The only outside service the release can use is an outbound mail relay that you configure. |
| Updating | A 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 restore | rjv2 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. |
| Leaving | The 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