PageSourceSearch

https://lji.io/

html lji.io collected 2026-09-25 14:57:01 UTC 131,644 bytes, 443 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Loyalty Juggernaut. Transform loyalty into the enterprise growth engine.</title><meta property="og:type" content="website"><meta property="og:site_name" content="Loyalty Juggernaut"><meta property="og:title" content="Loyalty Juggernaut. Transform loyalty into the enterprise growth engine."><meta property="og:description" content="Agentic AI, real-time experiences, ecosystem-scale intelligence. What legacy platforms were never built to deliver."><meta property="og:url" content="https://lji.io/"><meta property="og:image" content="https://lji.io/assets/library/ecosystem-orbits.jpg"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://lji.io/assets/library/ecosystem-orbits.jpg">
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Loyalty Juggernaut, Inc.","alternateName":"LJI","url":"https://lji.io","logo":"https://lji.io/lji-logo-horizontal.png","sameAs":["https://www.linkedin.com/company/loyalty-juggernaut"]}</script>
1<meta name="description" content="Agentic AI, real-time experiences, ecosystem-scale intelligence. What legacy platforms were never built to deliver."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"><link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest">
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://lji.io/#organization","name":"Loyalty Juggernaut, Inc.","alternateName":"LJI","url":"https://lji.io","logo":{"@type":"ImageObject","url":"https://lji.io/assets/brand/lji-logo-horizontal.svg"},"description":"Loyalty Juggernaut builds GRAVTY, an enterprise loyalty platform for multi-brand ecosystems: shared currency, partner settlement, and configurable program rules at scale.","sameAs":["https://www.linkedin.com/company/loyalty-juggernaut"],"founder":[{"@type":"Person","name":"Shyam Shah","jobTitle":"Co-founder & CEO"},{"@type":"Person","name":"Kalpak Shah","jobTitle":"Co-founder & CTO"}],"makesOffer":{"@type":"Offer","itemOffered":{"@type":"SoftwareApplication","name":"GRAVTY","applicationCategory":"BusinessApplication","description":"Enterprise loyalty platform for ecosystem programs: shared currency, partner settlement, configurable rules, and member identity across brands."}}}</script>
1<!-- Ahrefs Web Analytics · site-wide traffic tracking (added 2026-07-15). -->
1<script src="https://analytics.ahrefs.com/analytics.js" data-key="E4pQO28csc+u6J/oKpI0LA" async></script>
1 
1<script>
2  (function () {
3    globalThis.dataLayer = globalThis.dataLayer || [];
4    function gtag() { dataLayer.push(arguments); }
5
6    var marketingBundleLoaded = false;
7
8    function addExternalScript(src, id) {
9      if (id && document.getElementById(id)) return;
10      var s = document.createElement('script');
11      if (id) s.id = id;
12      s.async = true;
13      s.defer = true;
14      s.src = src;
15      document.head.appendChild(s);
16    }
17
18    function loadGA() {
19      var s = document.createElement('script');
20      s.async = true;
21      s.src = 'https://www.googletagmanager.com/gtag/js?id=G-YY4FDBKS7C';
22      document.head.appendChild(s);
23      gtag('js', new Date());
24      gtag('config', 'G-YY4FDBKS7C', { anonymize_ip: true });
25    }
26
27    // Apollo website tracker · identifies the companies visiting (B2B intent).
28    // Loads for every visitor so bounces are captured too. appId is LJI's.
29    function loadApollo() {
30      if (document.getElementById('apollo-tracker')) return;
31      var n = Math.random().toString(36).substring(7);
32      var s = document.createElement('script');
33      s.id = 'apollo-tracker';
34      s.async = true;
35      s.defer = true;
36      s.src = 'https://assets.apollo.io/micro/website-tracker/tracker.iife.js?nocache=' + n;
37      s.onload = function () {
38        if (globalThis.trackingFunctions) {
39          globalThis.trackingFunctions.onLoad({ appId: '66335d8b09eed401c7656395' });
40        }
41      };
42      document.head.appendChild(s);
43    }
44
45    function loadGTMAndMarketing() {
46      if (marketingBundleLoaded) return;
47      marketingBundleLoaded = true;
48      globalThis.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
49      addExternalScript('https://www.googletagmanager.com/gtm.js?id=GTM-T6DH2THB&l=dataLayer');
50      addExternalScript('https://js.hs-scripts.com/47672145.js', 'hs-script-loader');
51      addExternalScript('https://ads.kwanzoo.com/embed-code/12995');
52    }
53
54    function onDeliberateInteraction() {
55      loadGTMAndMarketing();
56      ['pointerdown', 'keydown'].forEach(function (eventName) {
57        globalThis.removeEventListener(eventName, onDeliberateInteraction, true);
58      });
59    }
60
61    ['pointerdown', 'keydown'].forEach(function (eventName) {
62      globalThis.addEventListener(eventName, onDeliberateInteraction, { capture: true, passive: true, once: true });
63    });
64
65    function loadEveryVisitorTags() { loadGA(); loadApollo(); }
66    if ('requestIdleCallback' in globalThis) {
67      requestIdleCallback(loadEveryVisitorTags);
68    } else {
69      setTimeout(loadEveryVisitorTags, 2000);
70    }
71  })();
72</script>
72 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T6DH2THB" title="Google Tag Manager" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
72<script>
73    // Audit mode (?audit=1): force-reveal everything for screenshot pipeline.
74    try {
75      if (location.search.indexOf('audit') !== -1) {
76        document.documentElement.setAttribute('data-audit', '1');
77        var markEverything = function () {
78          if (document.body) document.body.setAttribute('data-loaded', 'true');
79          var nodes = document.querySelectorAll('[data-reveal]');
80          for (var i = 0; i < nodes.length; i++) nodes[i].setAttribute('data-reveal', 'in');
81          var lit = document.querySelectorAll('.forrester__visual');
82          for (var j = 0; j < lit.length; j++) lit[j].classList.add('is-lit');
83        };
84        document.addEventListener('readystatechange', markEverything);
85        document.addEventListener('DOMContentLoaded', markEverything);
86        window.addEventListener('load', markEverything);
87        var ticks = 0;
88        var tick = setInterval(function () {
89          markEverything();
90          if (++ticks > 30) clearInterval(tick);
91        }, 100);
92      }
93    } catch (e) {}
94  </script>
94<link rel="stylesheet" href="/_astro/NavCinematic.CphaD4yf.css">
95<style>:root{--accent: var(--teal);--accent-glow: var(--glow)}.mm-light{--bg: #FFFFFF;--bg-2: #F4F6F7;--bg-elev: #FFFFFF;--rule: rgba(31,36,48,.1);--rule-3: rgba(31,36,48,.17);--ink: #1F2430;--ink-2: #525966;--ink-3: #878D97;--accent: #069CB5;--accent-glow: rgba(6,156,181,.2)}
96.orb-halo[data-astro-cid-6hxtnhf3]{position:relative;width:100%;height:var(--oh-height, 480px);overflow:hidden;pointer-events:none;isolation:isolate}.orb-halo__core[data-astro-cid-6hxtnhf3]{position:absolute;left:50%;top:50%;width:60%;aspect-ratio:1 / 1;transform:translate(-50%,-50%);background:radial-gradient(circle at 50% 50%,#069cb58c,#069cb538 22%,#069cb51a 48%,#02080d00 70%);filter:blur(20px);animation:orb-pulse 7s ease-in-out infinite}.orb-halo__ring[data-astro-cid-6hxtnhf3]{position:absolute;left:50%;top:50%;width:38%;aspect-ratio:1 / 1;transform:translate(-50%,-50%);border-radius:50%;box-shadow:inset 0 0 40px #069cb533,0 0 60px #069cb51a;border:1px solid rgba(6,156,181,.18)}.orb-halo__orbit[data-astro-cid-6hxtnhf3]{position:absolute;left:50%;top:50%;width:52%;aspect-ratio:1 / 1;transform:translate(-50%,-50%);animation:orb-spin 22s linear infinite}.orb-halo__orbit--b[data-astro-cid-6hxtnhf3]{width:70%;animation:orb-spin-rev 36s linear infinite}.orb-halo__point[data-astro-cid-6hxtnhf3]{position:absolute;top:50%;width:6px;height:6px;border-radius:50%;background:#069cb5e6;box-shadow:0 0 14px #069cb5b3}.orb-halo__point--a[data-astro-cid-6hxtnhf3]{left:0;transform:translate(-50%,-50%)}.orb-halo__point--b[data-astro-cid-6hxtnhf3]{left:100%;transform:translate(-50%,-50%);width:4px;height:4px;background:#ffffffbf;box-shadow:0 0 10px #069cb580}.orb-halo__mask[data-astro-cid-6hxtnhf3]{position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,transparent 60%,rgba(2,8,13,.6) 88%,rgba(2,8,13,1) 100%)}@keyframes orb-pulse{0%,to{opacity:.85;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}}@keyframes orb-spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes orb-spin-rev{0%{transform:translate(-50%,-50%) rotate(360deg)}to{transform:translate(-50%,-50%) rotate(0)}}@media(prefers-reduced-motion:reduce){.orb-halo__core[data-astro-cid-6hxtnhf3],.orb-halo__orbit[data-astro-cid-6hxtnhf3]{animation:none}}
97.outro__eyebrow[data-astro-cid-bapavatq]{margin:0 auto clamp(14px,2vh,20px)}.outro-stage__scene--lite[data-astro-cid-bapavatq]{background:radial-gradient(ellipse 60% 45% at 50% 40%,rgba(6,156,181,.15),transparent 70%),radial-gradient(ellipse 95% 45% at 50% 100%,rgba(13,191,227,.12),transparent 72%)}.outro-stage__scene--lite[data-astro-cid-bapavatq]:after{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle 1px at 14% 20%,rgba(255,255,255,.6),transparent 2px),radial-gradient(circle 1px at 32% 66%,rgba(13,191,227,.6),transparent 2px),radial-gradient(circle 1px at 48% 12%,rgba(255,255,255,.45),transparent 2px),radial-gradient(circle 1px at 62% 74%,rgba(13,191,227,.55),transparent 2px),radial-gradient(circle 1px at 76% 28%,rgba(255,255,255,.55),transparent 2px),radial-gradient(circle 1px at 88% 56%,rgba(13,191,227,.5),transparent 2px),radial-gradient(circle 1px at 8% 78%,rgba(255,255,255,.4),transparent 2px),radial-gradient(circle 1px at 92% 16%,rgba(255,255,255,.42),transparent 2px),radial-gradient(circle 1px at 22% 44%,rgba(255,255,255,.35),transparent 2px),radial-gradient(circle 1px at 70% 50%,rgba(13,191,227,.4),transparent 2px);animation:outro-twinkle 6s ease-in-out infinite}@keyframes outro-twinkle{0%,to{opacity:.5}50%{opacity:.85}}.outro-stage__halo[data-astro-cid-bapavatq]{position:absolute;left:50%;bottom:6%;width:min(1100px,120%);height:72%;transform:translate(-50%);background:radial-gradient(ellipse 50% 60% at 50% 100%,rgba(13,191,227,.22) 0%,rgba(6,156,181,.12) 38%,rgba(6,156,181,.04) 62%,transparent 80%);filter:blur(6px);pointer-events:none}.outro-stage__horizon[data-astro-cid-bapavatq]{position:absolute;left:50%;top:52%;width:min(860px,94%);height:130px;transform:translate(-50%,-50%);background:radial-gradient(ellipse 60% 50% at 50% 50%,rgba(79,224,255,.2),transparent 72%);filter:blur(16px);pointer-events:none}.outro-stage__pulse[data-astro-cid-bapavatq]{position:absolute;
97left:50%;top:52%;width:460px;height:240px;transform:translate(-50%,-50%);background:radial-gradient(ellipse 50% 60% at 50% 50%,rgba(79,224,255,.16),transparent 70%);filter:blur(12px);pointer-events:none;animation:outro-pulse 5.5s ease-in-out infinite}@keyframes outro-pulse{0%,to{opacity:.55;transform:translate(-50%,-50%) scale(.96)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}}@media(prefers-reduced-motion:reduce){.outro-stage__scene--lite[data-astro-cid-bapavatq]:after,.outro-stage__pulse[data-astro-cid-bapavatq]{animation:none}}.section--final[data-astro-cid-bapavatq] .section__head[data-astro-cid-bapavatq]{position:relative;z-index:1}.section--final[data-astro-cid-bapavatq] .section__head[data-astro-cid-bapavatq]:before{content:"";position:absolute;left:50%;top:46%;width:min(940px,124%);height:460px;transform:translate(-50%,-50%);background:radial-gradient(ellipse 48% 50% at 50% 50%,rgba(13,191,227,.18) 0%,rgba(6,156,181,.09) 40%,transparent 72%);filter:blur(10px);z-index:-1;pointer-events:none}.section--final[data-astro-cid-bapavatq] .section__head[data-astro-cid-bapavatq] h2[data-astro-cid-bapavatq]{text-shadow:0 0 44px rgba(13,191,227,.26)}
98.outro-stage--blog{display:block!important;min-height:0!important;grid-template-rows:none!important}.outro-stage--blog>.site-footer{padding-top:3rem}.outro-stage:not(.outro-stage--blog){min-height:0!important;grid-template-rows:auto auto!important}.outro-stage:not(.outro-stage--blog)>section.section--final{padding-block:clamp(3rem,6vh,4.5rem) clamp(2rem,4vh,3rem)!important}
99.site-footer[data-astro-cid-jxwxk3jy]{background:#000;border-top:1px solid rgba(255,255,255,.06);color:#ffffffa6;padding:4rem 0 2rem}.site-footer[data-astro-cid-jxwxk3jy] .footer__inner[data-astro-cid-jxwxk3jy]{max-width:1600px;margin:0 auto;padding:0 clamp(1.5rem,4vw,3rem);display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr 1fr;gap:3rem}.site-footer[data-astro-cid-jxwxk3jy] .footer__brand[data-astro-cid-jxwxk3jy]{display:flex;flex-direction:column;gap:1rem}.site-footer[data-astro-cid-jxwxk3jy] .footer__brand[data-astro-cid-jxwxk3jy] img[data-astro-cid-jxwxk3jy]{height:28px;width:auto}.site-footer[data-astro-cid-jxwxk3jy] .footer__brand[data-astro-cid-jxwxk3jy] .small[data-astro-cid-jxwxk3jy]{font-size:.85rem;color:#ffffff8c;line-height:1.6;margin:0}
99.site-footer[data-astro-cid-jxwxk3jy] .footer__col[data-astro-cid-jxwxk3jy] h4[data-astro-cid-jxwxk3jy]{font-family:var(--display);font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:#fff;margin:0 0 1rem;font-weight:600}.site-footer[data-astro-cid-jxwxk3jy] .footer__col[data-astro-cid-jxwxk3jy] ul[data-astro-cid-jxwxk3jy]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.site-footer[data-astro-cid-jxwxk3jy] .footer__col[data-astro-cid-jxwxk3jy] ul[data-astro-cid-jxwxk3jy] a[data-astro-cid-jxwxk3jy]{font-size:.88rem;color:#fff9;text-decoration:none;transition:color .18s ease}.site-footer[data-astro-cid-jxwxk3jy] .footer__col[data-astro-cid-jxwxk3jy] ul[data-astro-cid-jxwxk3jy] a[data-astro-cid-jxwxk3jy]:hover{color:#069cb5}.site-footer[data-astro-cid-jxwxk3jy] .footer__base[data-astro-cid-jxwxk3jy]{max-width:1600px;margin:3rem auto 0;padding:1.5rem clamp(1.5rem,4vw,3rem) 0;border-top:1px solid rgba(255,255,255,.06);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:.8rem;color:#ffffff73}.site-footer[data-astro-cid-jxwxk3jy] .footer__base[data-astro-cid-jxwxk3jy] a[data-astro-cid-jxwxk3jy]{color:#ffffff8c;text-decoration:none;transition:color .18s ease}.site-footer[data-astro-cid-jxwxk3jy] .footer__base[data-astro-cid-jxwxk3jy] a[data-astro-cid-jxwxk3jy]:hover{color:#069cb5}@media(max-width:900px){.site-footer[data-astro-cid-jxwxk3jy] .footer__inner[data-astro-cid-jxwxk3jy]{grid-template-columns:1fr 1fr;gap:2.5rem}.site-footer[data-astro-cid-jxwxk3jy] .footer__brand[data-astro-cid-jxwxk3jy]{grid-column:1 / -1}}@media(max-width:500px){.site-footer[data-astro-cid-jxwxk3jy] .footer__inner[data-astro-cid-jxwxk3jy]{grid-template-columns:1fr}}
100</style></head> <body class> <header class="nav"> <div class="nav__inner"> <a href="/" class="nav__logo" aria-label="Loyalty Juggernaut, home"> <img src="/assets/brand/lji-logo-horizontal.svg" alt="Loyalty Juggernaut"> </a> <nav aria-label="Primary"> <ul class="nav__links">  <li class="nav__item nav__item--has-menu"> <a class="nav__link nav__link--menu" href="/technology" data-menu="technology">
101Technology <span class="nav__caret" aria-hidden="true"><svg viewBox="0 0 12 8" width="11" height="8" fill="none"><path d="M1.5 1.75 6 6.25l4.5-4.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"></path></svg></span> </a> <div class="nav__mega" data-submenu="technology" role="menu"> <a class="nav__mega-card" href="/technology" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/technology_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> GRAVTY® Technology  </span> <span class="nav__mega-desc">World&#39;s Most Advanced Loyalty Technology</span> </div> </a><a class="nav__mega-card" href="/integrations" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/integration_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> Integration &amp;
101 Partners  </span> <span class="nav__mega-desc">Your Tech Stack, Supercharged.</span> </div> </a><a class="nav__mega-card" href="https://docs.gravty.io" target="_blank" rel="noopener noreferrer" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/developer_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> Developer Central <span class="nav__mega-ext" aria-hidden="true">↗</span> </span> <span class="nav__mega-desc">Our API Documentation</span> </div> </a> </div> </li> <li class="nav__item nav__item--has-menu"> <a class="nav__link nav__link--menu" href="/resources" data-menu="resources">
102Resources <span class="nav__caret" aria-hidden="true"><svg viewBox="0 0 12 8" width="11" height="8" fill="none"><path d="M1.5 1.75 6 6.25l4.5-4.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"></path></svg></span> </a> <div class="nav__mega" data-submenu="resources" role="menu"> <a class="nav__mega-card" href="/blog" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/blog_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> Blog  </span> <span class="nav__mega-desc">Perspectives on loyalty &amp; AI</span> </div> </a><a class="nav__mega-card" href="/press" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/press_video_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> Press  </span> <span class="nav__mega-desc">GRAVTY® in the News</span> </div> </a><a class="nav__mega-card" href="https://pulse.lji.io/" target="_blank" rel="noopener noreferrer" role="menuitem"> <span class="nav__mega-icon nav__mega-icon--img" aria-hidden="true"> <img src="/assets/icons/gPulse_header_icon.svg" alt="" loading="lazy" decoding="async"> </span> <div class="nav__mega-text"> <span class="nav__mega-title"> GRAVTY® Pulse <span class="nav__mega-ext" aria-hidden="true">↗</span> </span> <span class="nav__mega-desc">Community &amp; Release Notes</span> </div> </a> </div> </li> <li class="nav__item"><a class="nav__link" href="/about-us">About Us</a></li> <li class="nav__item"><a class="nav__link" href="/agentic-ai-compass">Agentic AI Compass</a></li> </ul> </nav> <div class="nav__cta"> <a class="btn btn--primary" href="/contact-us">Contact Us <span>&rarr;</span></a> </div> <button class="nav__toggle" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer"> <span class="nav__toggle-bar"></span> <span class="nav__toggle-bar"></span> <span class="nav__toggle-bar"></span> </button> </div> <div class="nav__drawer" id="nav-drawer" aria-hidden="true"> <ul class="nav__drawer-links">  <li><span class="nav__drawer-group">Technology</span></li> <li><a class="nav__drawer-link nav__drawer-link--child" href="/technology">GRAVTY® Technology</a></li><li><a class="nav__drawer-link nav__drawer-link--child" href="/integrations">Integration &amp; Partners</a></li><li><a class="nav__drawer-link nav__drawer-link--child" href="https://docs.gravty.io" target="_blank" rel="noopener noreferrer">Developer Central ↗</a></li> <li><span class="nav__drawer-group">Resources</span></li> <li><a class="nav__drawer-link nav__drawer-link--child" href="/blog">Blog</a></li><li><a class="nav__drawer-link nav__drawer-link--child" href="/press">Press</a></li><li><a class="nav__drawer-link nav__drawer-link--child" href="https://pulse.lji.io/" target="_blank" rel="noopener noreferrer">GRAVTY® Pulse ↗</a></li> <li><a class="nav__drawer-link" href="/about-us">About Us</a></li> <li><a class="nav__drawer-link" href="/agentic-ai-compass">Agentic AI Compass</a></li> <li><a class="nav__drawer-link" href="/contact-us">Contact Us</a></li> </ul> <a class="btn btn--primary nav__drawer-cta" href="/contact-us">Contact Us <span>&rarr;</span></a> </div> </header>  
102<script>
103  (function(){
104    var toggle = document.querySelector('.nav__toggle');
105    var drawer = document.querySelector('.nav__drawer');
106    if (toggle && drawer) {
107      toggle.addEventListener('click', function(){
108        var open = drawer.classList.toggle('is-open');
109        toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
110        drawer.setAttribute('aria-hidden', open ? 'false' : 'true');
111        document.body.classList.toggle('nav-open', open);
112      });
113      drawer.querySelectorAll('a').forEach(function(a){
114        a.addEventListener('click', function(){
115          drawer.classList.remove('is-open');
116          toggle.setAttribute('aria-expanded', 'false');
117          drawer.setAttribute('aria-hidden', 'true');
118          document.body.classList.remove('nav-open');
119        });
120      });
121    }
122
123    // Click-to-toggle for mega menu on touch devices (CSS handles hover)
124    document.querySelectorAll('.nav__link--menu').forEach(function(link){
125      link.addEventListener('click', function(e){
126        // On touch / no-hover devices, first tap opens the menu instead of navigating
127        if (window.matchMedia('(hover: none)').matches) {
128          var mega = link.parentElement.querySelector('.nav__mega');
129          if (mega && !mega.classList.contains('is-open')) {
130            e.preventDefault();
131            document.querySelectorAll('.nav__mega.is-open').forEach(function(m){ m.classList.remove('is-open'); });
132            mega.classList.add('is-open');
133          }
134        }
135      });
136    });
137    document.addEventListener('click', function(e){
138      document.querySelectorAll('.nav__mega.is-open').forEach(function(m){
139        if (!m.parentElement.contains(e.target)) m.classList.remove('is-open');
140      });
141    });
142  })();
143</script>
143   <main> <section class="hero hero--scene"> <!-- Real HTML headline . uses mix-blend + radial light-mask so the
144 text appears illuminated by the WebGL sphere below it. --> <ul class="hero__eyebrow" aria-label="Industry recognition"> <li class="hero__eyebrow-item"> <img src="/assets/brand/forrester-favicon.png" alt=""> <div class="hero__eyebrow-text"> <span class="hero__eyebrow-title">Strong Performer</span> <span class="hero__eyebrow-sub">Forrester Wave™ · Q4 2025</span> </div> </li> <li class="hero__eyebrow-item"> <span class="hero__eyebrow-icon hero__eyebrow-icon--white"> <img src="/assets/awards/everest-peak-matrix.png" alt=""> </span> <div class="hero__eyebrow-text"> <span class="hero__eyebrow-title">Star Performer</span> <span class="hero__eyebrow-sub">Everest PEAK Matrix® · 2025</span> </div> </li> <li class="hero__eyebrow-item"> <img src="/assets/awards/gla-winner-2023.png" alt=""> <div class="hero__eyebrow-text"> <span class="hero__eyebrow-title">3× Golden Loyalty</span> <span class="hero__eyebrow-sub">Awards 2021 · 2022 · 2023</span> </div> </li> </ul>  <div class="hero__text"> <h1 class="hero__title"> <span class="hero__title-white">Transform Loyalty into</span> <span>your Enterprise Growth Engine</span> </h1> <p class="hero__lede">GRAVTY<sup>®</sup> is the enterprise growth platform that connects every customer signal, partner, and touchpoint at ecosystem scale; <span class="hero__lede--mute">so your loyalty program stops being a cost center and starts compounding revenue across your entire business.</span></p> </div> <div class="hero__scene"> <div class="hero__stage"> <!-- data-us-disablemouse: 2026-05-31 · the scene's cursor-parallax snapped
145      the glow "up→down" the first time the mouse entered (UnicornStudio binds
146      mousemove to window and jumps its baseline to the cursor). This official
147      flag turns the cursor interaction off so the background stays put on
148      hover; the scene keeps its own ambient motion. --> <div data-us-project="MYTaGBjUQmlO0Zigv0pf" data-us-disablemouse="true" style="width:100%; height:100%;"></div> 
148<script>!function(){var u=window.UnicornStudio;if(u&&u.init){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",function(){u.init()})}else{u.init()}}else{window.UnicornStudio={isInitialized:!1};var i=document.createElement("script");i.src="https://cdn.jsdelivr.net/gh/hiunicornstudio/[email protected]/dist/unicornStudio.umd.js",i.onload=function(){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",function(){UnicornStudio.init()})}else{UnicornStudio.init()}},(document.head||document.body).appendChild(i)}}();</script>
148 <div class="glass glass--dash" aria-hidden="true"> <div class="dash" aria-hidden="true"> <aside class="dash__side"> <div class="dash__brand"> <span class="dash__brand-mark"><img src="/assets/brand/gravty-logo.svg" alt=""></span> <span class="dash__brand-name">GRAVTY®</span> </div> <div class="dash__profile"> <div class="dash__avatar">  <span class="dash__avatar-letter" aria-hidden="true">J</span> </div> <div class="dash__profile-name">Jessica Brown</div> <div class="dash__profile-link">View account</div> </div> <nav class="dash__nav"> <div class="dash__nav-item dash__nav-item--active"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="9" rx="1"></rect><rect x="14" y="3" width="7" height="5" rx="1"></rect><rect x="14" y="12" width="7" height="9" rx="1"></rect><rect x="3" y="16" width="7" height="5" rx="1"></rect></svg>
149Dashboard
150</div> <div class="dash__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M20 12V8a2 2 0 0 0-2-2h-7l-2-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6"></path><circle cx="18" cy="17" r="3"></circle><path d="M21 20l-1.5-1.5"></path></svg>
151Offers
152</div> <div class="dash__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h4l3-9 4 18 3-12 2 6h4"></path></svg>
153Sponsors
154</div> <div class="dash__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.9"></path><path d="M16 3.1A4 4 0 0 1 16 11"></path></svg>
155Members
156</div> <div class="dash__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
157BITs
158</div> <div class="dash__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="6" rx="1"></rect><rect x="3" y="13" width="18" height="6" rx="1"></rect></svg>
159Batches
160</div> </nav> </aside> <div class="dash__main"> <header class="dash__header"> <div class="dash__header-text"> <div class="dash__title">Dashboard</div> <div class="dash__sub">KPIs on Customer Acquisition, Recency, Frequency, Sales Lift, Accrual &amp; Redemption Velocity, Financial Indicators and Leaderboards.</div> </div> <div class="dash__toggle" aria-hidden="true"></div> </header> <div class="dash__stats dash__stats--5"> <div class="dash__stat" style="--c: #0DBFE3"> <div class="dash__stat-label">Revenue Influenced by Loyalty</div> <div class="dash__stat-val">$2.4B <span class="dash__stat-delta dash__stat-delta--up">&uarr;&nbsp;23% YoY</span></div> </div> <div class="dash__stat" style="--c: #FFD466"> <div class="dash__stat-label">Redemption Velocity</div> <div class="dash__stat-val">61% <span class="dash__stat-delta dash__stat-delta--up">&uarr;&nbsp;7% MoM</span></div> </div> <div class="dash__stat" style="--c: #34D9B5"> <div class="dash__stat-label">Monthly Active Users</div> <div class="dash__stat-val">46% <span class="dash__stat-delta dash__stat-delta--up">&uarr;&nbsp;12% MoM</span></div> </div> <div class="dash__stat" style="--c: #E25B5B"> <div class="dash__stat-label">Loyalty EBITDA</div> <div class="dash__stat-val">+21% <span class="dash__stat-delta dash__stat-delta--up">&uarr;&nbsp;6% QoQ</span></div> </div> <div class="dash__stat" style="--c: #B47BFF"> <div class="dash__stat-label">Liability Provision Coverage</div> <div class="dash__stat-val">110% <span class="dash__stat-delta dash__stat-delta--up">&uarr;&nbsp;4% QoQ</span></div> </div> </div> <div class="dash__panel"> <div class="dash__panel-head"> <span>Engagement Heatmap</span> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12l7 7 7-7"></path></svg> </div> <div class="dash__heatmap" data-heatmap></div> <div class="dash__heatmap-months"> <span>Nov</span><span>Dec</span><span>Jan</span><span>Feb</span><span>Mar</span><span>Apr</span><span>May</span><span>Jun</span><span>Jul</span><span>
160Aug</span><span>Sep</span><span>Oct</span> </div> </div> <div class="dash__row"> <div class="dash__panel"> <div class="dash__panel-head"> <span>By Enrollment Channel</span> </div> <div class="dash__donut-wrap"> <svg class="dash__donut" viewBox="0 0 42 42"> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="rgba(255,255,255,0.06)" stroke-width="6"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#0DBFE3" stroke-width="6" stroke-dasharray="28 72" stroke-dashoffset="25" transform="rotate(-90 21 21)"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#7C5CFF" stroke-width="6" stroke-dasharray="18 82" stroke-dashoffset="-3" transform="rotate(-90 21 21)"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#34D9B5" stroke-width="6" stroke-dasharray="14 86" stroke-dashoffset="-21" transform="rotate(-90 21 21)"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#FFD466" stroke-width="6" stroke-dasharray="14 86" stroke-dashoffset="-35" transform="rotate(-90 21 21)"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#E25B5B" stroke-width="6" stroke-dasharray="13 87" stroke-dashoffset="-49" transform="rotate(-90 21 21)"></circle> <circle cx="21" cy="21" r="15.9" fill="transparent" stroke="#0DBFE3" stroke-width="6" stroke-dasharray="13 87" stroke-dashoffset="-62" opacity="0.55" transform="rotate(-90 21 21)"></circle> </svg> <div class="dash__legend"> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: #0DBFE3"></span>Website</div> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: #7C5CFF"></span>CSC</div> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: #34D9B5"></span>Unknown</div> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: #FFD466"></span>WiFi</div> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: #E25B5B"></span>GfkScan</div> <div class="dash__legend-row"><span class="dash__legend-dot" style="--c: rgba(13,191,227,0.55)"></span>Mobile</div> </div> </div> </div> <div class="dash__panel"> <div class="dash__panel-head"> <span>Member Acquisition Trend</span> </div> <div class="dash__chart"> <svg viewBox="0 0 200 60" preserveAspectRatio="none"> <defs> <linearGradient id="dashLineFill" x1="0" x2="0" y1="0" y2="1"> <stop offset="0%" stop-color="rgba(13,191,227,0.35)"></stop> <stop offset="100%" stop-color="rgba(13,191,227,0)"></stop> </linearGradient> </defs> <path d="M0,52 L18,50 L36,48 L54,45 L72,42 L90,18 L108,32 L126,28 L144,20 L162,15 L180,10 L200,6 L200,60 L0,60 Z" fill="url(#dashLineFill)"></path> <path d="M0,52 L18,50 L36,48 L54,45 L72,42 L90,18 L108,32 L126,28 L144,20 L162,15 L180,10 L200,6" fill="none" stroke="#0DBFE3" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> <div class="dash__chart-axis"><span>2016</span><span>2018</span><span>2020</span><span>2022</span></div> </div> </div> </div> </div> </div> </div><!-- /glass --><div hidden> <!-- LEFT SIDEBAR --> <aside class="rfl__side"> <div class="rfl__search"> <svg class="rfl__search-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"></circle><path d="M21 21l-4.3-4.3"></path></svg> <span class="rfl__search-input">Search anything…</span> <span class="rfl__search-kbd">⌘K</span> <span class="rfl__search-mic"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="3" width="6" height="12" rx="3"></rect><path d="M5 11a7 7 0 0 0 14 0"></path><path d="M12 18v3"></path></svg> </span> </div> <nav class="rfl__nav"> <div class="rfl__nav-item rfl__nav-item--active"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"></path><path d="M16.5 3.5a2.12 2.12 0 1 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg>
161Daily ops
162</div> <div class="rfl__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path></svg>
163All members
164</div> <div class="rfl__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l3 3L22 4"></path><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>
165Campaigns
166</div> <div class="rfl__nav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"></circle><path d="M16 8l-2 6-6 2 2-6 6-2z"></path></svg>
167Compass
168</div> </nav> <div class="rfl__divider"></div> <div class="rfl__pin-label">Pinned views</div> <div class="rfl__pin-item">Activation playbook</div> <div class="rfl__pin-item">Tier migration</div> <div class="rfl__pin-item">Partner mix matrix</div> <div class="rfl__pin-item">FFP audit · Q2</div> </aside> <!-- CENTER PANE --> <div class="rfl__main"> <div class="rfl__date"> <span class="rfl__date-bar"></span> <span class="rfl__date-text">Tue, May 26th, 2026</span> </div> <ul class="rfl__bullets"> <li>Today we launched <a class="rfl__link">Campaign 0042</a> across all WestJet tiers.</li> <li class="rfl__bul-h">What's in flight?
169<ul> <li>Compass shipped offer 0042 to 1.2M actives.</li> <li>Pulsar flagged <a class="rfl__link">1,204 churn-risk</a> members in Silver.</li> <li>OXXO partner sync · 26K transactions reconciled.</li> <li>AgenticTest run on Tier Bridge · <a class="rfl__link">pass 100%</a>.</li> </ul> </li> <li class="rfl__bul-h">What ships tomorrow?
170<ul> <li>Sfeer beta cutover · <a class="rfl__link">read the runbook</a>.</li> <li>Magenta Moments cross-border merge · 9 countries.</li> </ul> </li> </ul> </div> <!-- RIGHT PANE --> <aside class="rfl__cal"> <div class="rfl__cal-head"> <span class="rfl__cal-month">May 2026</span>
170 <span class="rfl__cal-controls"> <span class="rfl__cal-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg></span> <span class="rfl__cal-btn rfl__cal-btn--box"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2"></rect><path d="M16 2v4M8 2v4M3 10h18"></path></svg></span> <span class="rfl__cal-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></span> </span> </div> <div class="rfl__cal-grid"> <div class="rfl__cal-dow">Mo</div><div class="rfl__cal-dow">Tu</div><div class="rfl__cal-dow">We</div><div class="rfl__cal-dow">Th</div><div class="rfl__cal-dow">Fr</div><div class="rfl__cal-dow">Sa</div><div class="rfl__cal-dow">Su</div> <!-- Week 1: Apr 27–May 3 --> <div class="rfl__cal-day rfl__cal-day--out">27</div><div class="rfl__cal-day rfl__cal-day--out">28</div><div class="rfl__cal-day rfl__cal-day--out">29</div><div class="rfl__cal-day rfl__cal-day--out">30</div><div class="rfl__cal-day">1</div><div class="rfl__cal-day">2</div><div class="rfl__cal-day">3</div> <!-- Week 2 --> <div class="rfl__cal-day">4</div><div class="rfl__cal-day">5</div><div class="rfl__cal-day">6</div><div class="rfl__cal-day">7</div><div class="rfl__cal-day">8</div><div class="rfl__cal-day">9</div><div class="rfl__cal-day">10</div> <!-- Week 3 --> <div class="rfl__cal-day">11</div><div class="rfl__cal-day">12</div><div class="rfl__cal-day">13</div><div class="rfl__cal-day">14</div><div class="rfl__cal-day">15</div><div class="rfl__cal-day">16</div><div class="rfl__cal-day">17</div> <!-- Week 4 --> <div class="rfl__cal-day">18</div><div class="rfl__cal-day">19</div><div class="rfl__cal-day">20</div><div class="rfl__cal-day">21</div><div class="rfl__cal-day">22</div><div class="rfl__cal-day">23</div><div class="rfl__cal-day">24</div> <!-- Week 5 --> <div class="rfl__cal-day">25</div><div class="rfl__cal-day rfl__cal-day--today">26</div><div class="rfl__cal-day">27</div><div class="rfl__cal-day">28</div><div class="rfl__cal-day">29</div><div class="rfl__cal-day">30</div><div class="rfl__cal-day">31</div> </div> <div class="rfl__actions"> <div class="rfl__actions-label">Note actions</div> <div class="rfl__action-row"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 17l-5 3 1.9-5.7L4 10.3l5.9-.4L12 4l2.1 5.9 5.9.4-4.9 4 1.9 5.7z"></path></svg>
171Pin this view
172</div> <div class="rfl__action-row"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7L11.5 6"></path><path d="M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7L12.5 18"></path></svg>
173Share with team
174</div> <div class="rfl__action-row"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5l3 2"></path></svg>
175Show history
176</div> </div> </aside> </div><!-- /hidden legacy Reflect markup --> </div><!-- /hero__stage --> </div><!-- /hero__scene --> <!-- Bottom-of-hero overlay: dark gradient + lede + logo carousel.
177 Sits over the bottom portion of the glass dashboard so the entire
178 experience is visible on initial load within 100vh. --> <div class="hero__bottom-band"> <div class="hero__split"> <div class="marquee" aria-hidden="true"> <div class="marquee__track"> <img loading="lazy" decoding="async" src="/assets/logos/westjet.webp" alt="WestJet"> <img loading="lazy" decoding="async" src="/assets/logos/emirates.webp" alt="Emirates"> <img loading="lazy" decoding="async" src="/assets/logos/sfeer-riyadh-air.webp" alt="Riyadh Air"> <img loading="lazy" decoding="async" src="/assets/logos/nomad-club-air-astana.webp" alt="Air Astana"> <img loading="lazy" decoding="async" src="/assets/logos/air-rewards-airarabia.webp" alt="Air Rewards Air Arabia"> <img loading="lazy" decoding="async" src="/assets/logos/gha-discovery.webp" alt="GHA Discovery"> <img loading="lazy" decoding="async" src="/assets/logos/club-itc.webp" alt="Club ITC"> <img loading="lazy" decoding="async" src="/assets/logos/brilliant-langham.webp" alt="Brilliant by Langham"> <img loading="lazy" decoding="async" src="/assets/logos/lalit.webp" alt="The Lalit"> <img loading="lazy" decoding="async" src="/assets/logos/jumeirah-one.webp" alt="Jumeirah One"> <img loading="lazy" decoding="async" src="/assets/logos/deutsche-telekom.webp" alt="Deutsche Telekom"> <img loading="lazy" decoding="async" src="/assets/logos/coca-cola-femsa.webp" alt="Coca-Cola FEMSA"> <img loading="lazy" decoding="async" src="/assets/logos/maf-share.webp" alt="SHARE by Majid Al Futtaim"> <img loading="lazy" decoding="async" src="/assets/logos/liverpool.webp" alt="Liverpool"> <img loading="lazy" decoding="async" src="/assets/logos/vivo-energy.webp" alt="Vivo Energy"> <img loading="lazy" decoding="async" src="/assets/logos/sanlam.webp" alt="Sanlam"> <img loading="lazy" decoding="async" src="/assets/logos/saudi-rewards.webp" alt="Saudi Rewards"> <img loading="lazy" decoding="async" src="/assets/logos/blr-pulse.webp" alt="BLR Pulse"> <img loading="lazy" decoding="async" src="/assets/logos/spenn.webp" alt="Spenn"> <!-- duplicate for seamless loop --> <img loading="lazy" decoding="async" src="/assets/logos/westjet.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/emirates.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/sfeer-riyadh-air.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/nomad-club-air-astana.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/air-rewards-airarabia.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/gha-discovery.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/club-itc.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/brilliant-langham.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/lalit.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/jumeirah-one.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/deutsche-telekom.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/coca-cola-femsa.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/maf-share.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/liverpool.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/vivo-energy.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/sanlam.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/saudi-rewards.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/blr-pulse.webp" alt=""> <img loading="lazy" decoding="async" src="/assets/logos/spenn.webp" alt=""> </div> </div><!-- /marquee --> </div><!-- /hero__split --> </div><!-- /hero__bottom-band --> </section> <section id="cases" class="section section--cases" aria-label="Customer case studies"> <div class="wrap"> <header class="section__head"> <h2>The brands that turn loyalty into growth run on <span class="gravty-wordmark" role="img" aria-label="GRAVTY"></span></h2> <p class="lede">
178Airlines, hospitality, retail, CPG, banking, and telco ecosystems.<br>Here's how.</p> </header> </div> <!-- Full-size case story carousel (3 stories). Each card: content left,
179         brand-context photo on the right with the brand logo superimposed.
180         Prev/Next + dot pagination. --> <div class="cases-carousel" data-cases-carousel> <div class="cases-carousel__track" data-cases-track>  <!-- 1 · WestJet Rewards --> <article class="case-story" data-brand="westjet">  <img class="case-story__bg" src="/assets/casestudy/westjet-new.webp" alt="WestJet Rewards serving 10M+ travelers across 100+ destinations." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div> <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/westjet.webp" alt="WestJet"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Airline · Canada</div> <h3 class="case-story__h">Canada's second-largest airline transformed loyalty with more personalized, flexible, and rewarding member experiences</h3> <p class="case-story__body">GRAVTY&reg; powers WestJet Rewards, serving 10M+ travelers across 100+ destinations with real-time tier progression, personalized rewards, and an ever-expanding partner ecosystem. WestJet reimagined its entire program: new currency, new partners, new experience. Complete transformation, zero disruption.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">10M+</span><span class="case-story__stat-label">Travelers served</span></li> <li><span class="case-story__stat-num">100+</span><span class="case-story__stat-label">Destinations</span></li> <li><span class="case-story__stat-num">Zero</span><span class="case-story__stat-label">Disruption migration</span></li> </ul> </div> </article> <!-- 2 · Spin Premia / FEMSA · uses OXXO storefront photo + OXXO
181             wordmark per 2026-05-29 user direction. OXXO is the retail
182             face of the Spin Premia coalition (33K stores). --> <article class="case-story" data-brand="spin"> <img class="case-story__bg" src="/assets/casestudy/oxxo-femsa.webp" alt="OXXO storefront — the 33,000-store retail face of Spin Premia by FEMSA across Latin America." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div> <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/oxxo.webp" alt="OXXO"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Retail · Latin America</div> <h3 class="case-story__h">Latin America's largest retail coalition grew loyalty-driven revenue by 554% in three years</h3> <p class="case-story__body">GRAVTY® turned Spin Premia into FEMSA's most powerful growth engine, transforming a loyalty program into the revenue heartbeat of an entire retail ecosystem, delivering real-time engagement across 33,000 stores.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">46%</span><span class="case-story__stat-label">Monthly Active Users</span></li> <li><span class="case-story__stat-num">147%</span><span class="case-story__stat-label">Growth in Average Ticket Size</span></li> <li><span class="case-story__stat-num">1B+</span><span class="case-story__stat-label">Loyalty-influenced Engagements / yr</span></li> </ul> </div> </article> <!-- 2 · Magenta Moments / Deutsche Telekom --> <article class="case-story" data-brand="magenta"> <img class="case-story__bg" src="/assets/casestudy/magenta-moments-bg.webp" alt="Magenta Moments members celebrating Deutsche Telekom's loyalty program at a stadium." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div>  <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/deutsche-telekom.webp" alt="Deutsche Telekom"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Telco · Europe</div> <h3 class="case-story__h">Europe's largest telco engages customers across 9 countries, 4,000 partners in 13 languages</h3> <p class="case-story__body">GRAVTY® powers Magenta Moments, Deutsche Telekom's loyalty program serving 10M+ members. In three years, partner locations grew from 1,000 to 25,000. Loyalty became the connective tissue of a continent-scale growth engine.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">48%</span><span class="case-story__stat-label">Monthly Active Customers</span></li> <li><span class="case-story__stat-num">625×</span><span class="case-story__stat-label">Growth in Partner Ecosystem</span></li> <li><span class="case-story__stat-num">25×</span><span class="case-story__stat-label">Growth in Partner Locations</span></li> </ul> </div> </article> <!-- 3 · GHA DISCOVERY --> <article class="case-story" data-brand="gha">  <img class="case-story__bg" src="/assets/casestudy/gha-new.webp" alt="GHA DISCOVERY 40 hotel brands and 1,000+ properties across 100+ countries." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div> <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/gha-discovery.webp" alt="GHA DISCOVERY"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Hospitality · Global</div> <h3 class="case-story__h">
182The world's largest independent hospitality alliance grew total revenue by 146% and direct bookings by 29%</h3> <p class="case-story__body">GRAVTY® powers GHA DISCOVERY, uniting 40+ hotel brands and 1,000+ properties across 100+ countries. Real-time earning and redemption of DISCOVERY Dollars turned a guest perk into a direct revenue driver.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">29%</span><span class="case-story__stat-label">Surge in Direct Bookings</span></li> <li><span class="case-story__stat-num">55%</span><span class="case-story__stat-label">Spike in D$ Redemption</span></li> <li><span class="case-story__stat-num">15%</span><span class="case-story__stat-label">Increase in cross-brand Stays</span></li> </ul> </div> </article> <!-- 4 · Emirates Skywards Everyday --> <article class="case-story" data-brand="emirates">  <img class="case-story__bg" src="/assets/casestudy/emirates-new.webp" alt="Emirates Skywards Everyday lifestyle rewards across the UAE." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div>  <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/emirates.webp" alt="Emirates"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Airline · UAE</div> <h3 class="case-story__h">The world's first airline everyday rewards program, turning daily spending into miles, and miles into deeper loyalty</h3> <p class="case-story__body">GRAVTY&reg; powers Emirates Skywards Everyday, the lifestyle rewards program that redefines airline loyalty beyond flights. Members earn and redeem Skywards Miles on everyday spending across 400+ partners and 2,000+ outlets, turning daily transactions into meaningful loyalty moments while driving greater mindshare, engagement, and brand affinity.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">66%</span><span class="case-story__stat-label">Active Members</span></li> <li><span class="case-story__stat-num">12.7</span><span class="case-story__stat-label">Avg Transactions / Month</span></li> <li><span class="case-story__stat-num">80%</span><span class="case-story__stat-label">Reduction in Partner Onboarding Time</span></li> </ul> </div> </article>  <!-- 6 · SHARE Rewards / Majid Al Futtaim --> <article class="case-story" data-brand="maf">  <img class="case-story__bg" src="/assets/casestudy/maf-new.webp" alt="Majid Al Futtaim SHARE Rewards uniting malls, retail, restaurants, hotels, and leisure across the Middle East." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div> <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/maf-share.webp" alt="SHARE Rewards by Majid Al Futtaim"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">Lifestyle Coalition · Middle East</div> <h3 class="case-story__h">One of the Middle East's largest lifestyle loyalty ecosystems drives deeper engagement, higher revenue, and stronger cross-brand behaviors</h3> <p class="case-story__body">GRAVTY&reg; powers SHARE Rewards, Majid Al Futtaim's integrated loyalty program uniting malls, retail, restaurants, hotels, and leisure across the region. Serving 15M+ members across diversified group companies and external partners, SHARE turns everyday experiences into delightful moments, driving engagement, cross-brand spend, and revenue growth at scale.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">50%</span><span class="case-story__stat-label">Active Customers</span></li> <li><span class="case-story__stat-num">35%</span><span class="case-story__stat-label">Increase in Cross-Brand Engagement</span></li> <li><span class="case-story__stat-num">4.5M</span><span class="case-story__stat-label">Individualized Offers / Month</span></li> </ul> </div> </article> <!-- 7 · Premia Juntos+ / Coca-Cola FEMSA --> <article class="case-story" data-brand="femsa">  <img class="case-story__bg" src="/assets/casestudy/femsa-new.webp" alt="Coca-Cola FEMSA Premia Juntos+ B2B loyalty program for 1.5M SMBs across Latin America." loading="lazy"> <div class="case-story__overlay" aria-hidden="true"></div>  <div class="case-story__logo"><img loading="lazy" decoding="async" src="/assets/logos/coca-cola-femsa.webp" alt="Coca-Cola FEMSA"></div> <div class="case-story__copy"> <div class="case-story__text"> <div class="case-story__industry">B2B CPG · Latin America</div> <h3 class="case-story__h">The world's largest Coca-Cola bottler turned 1.5M SMB partners into a loyalty-driven growth engine</h3> <p class="case-story__body">GRAVTY&reg; powers Premia Juntos+, the B2B loyalty program of Coca-Cola FEMSA, engaging 1.5 million SMBs across Latin America with personalized offers, gamification, and dynamic promotions designed to drive incremental revenue and long-term partner value.</p> </div> <ul class="case-story__stats"> <li><span class="case-story__stat-num">90%</span><span class="case-story__stat-label">Monthly Active Customers</span></li> <li><span class="case-story__stat-num">14.3%</span><span class="case-story__stat-label">Increase in Revenue (2025)</span></li> <li><span class="case-story__stat-num">25%</span><span class="case-story__stat-label">Increase in Operating Income</span></li> </ul> </div> </article> </div> <div class="cases-carousel__controls"> <button class="cases-carousel__btn" data-cases-prev aria-label="Previous case study"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg> </button> <div class="cases-carousel__dots" data-cases-dots role="tablist" aria-label="Case study pagination"> <button class="cases-carousel__dot" data-cases-dot="0" aria-current="true" aria-label="Story 1 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="1" aria-label="Story 2 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="2" aria-label="Story 3 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="3" aria-label="Story 4 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="4" aria-label="Story 5 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="5" aria-label="Story 6 of 7"></button> <button class="cases-carousel__dot" data-cases-dot="6" aria-label="Story 7 of 7"></button> </div> <button class="cases-carousel__btn" data-cases-next aria-label="Next case study"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg> </button> </div> </div> 
182<script type="module">(function(){var r=document.querySelector("[data-cases-carousel]");if(!r)return;var a=r.querySelector("[data-cases-track]"),i=r.querySelector("[data-cases-prev]"),l=r.querySelector("[data-cases-next]"),v=Array.prototype.slice.call(r.querySelectorAll("[data-cases-dot]")),n=Array.prototype.slice.call(a.querySelectorAll(".case-story"));if(!n.length)return;function c(){for(var e=a.scrollLeft+a.clientWidth/2,t=0,s=1/0,f=0;f<n.length;f++){var h=n[f],A=h.offsetLeft+h.offsetWidth/2,y=Math.abs(e-A);y<s&&(s=y,t=f)}return t}function u(e){v.forEach(function(t,s){s===e?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}),i&&(i.disabled=e<=0),l&&(l.disabled=e>=n.length-1)}function o(e){e=Math.max(0,Math.min(n.length-1,e));var t=n[e];a.scrollTo({left:t.offsetLeft-(a.clientWidth-t.offsetWidth)/2,behavior:"smooth"}),u(e)}i&&i.addEventListener("click",function(){o(c()-1)}),l&&l.addEventListener("click",function(){o(c()+1)}),v.forEach(function(e,t){e.addEventListener("click",function(){o(t)})});var d=null;a.addEventListener("scroll",function(){d&&cancelAnimationFrame(d),d=requestAnimationFrame(function(){u(c())})},{passive:!0}),r.addEventListener("keydown",function(e){e.key==="ArrowLeft"&&(e.preventDefault(),o(c()-1)),e.key==="ArrowRight"&&(e.preventDefault(),o(c()+1))}),u(0)})();</script>
182 </section> <section class="section section--forrester" id="forrester"> <canvas class="forrester__beam" id="forrester-beam" aria-hidden="true"></canvas> <div class="wrap"> <div class="forrester"> <div class="forrester__copy"> <span class="chip chip--accent">The Forrester Wave™ · Loyalty Platforms · Q4 2025</span> <h2 class="forrester__h2"> <span class="forrester__h2-mute">Strong Performer.</span><br>
183Praised for reliability, partnership, and personalization.
184</h2> <blockquote class="forrester__quote">
185"Customers praise Loyalty Juggernaut's reliability and strong partnership mindset, specifically calling out support responsiveness and executive engagement. The platform's personalization and multi-partner capabilities exceed customer expectations."
186<cite>The Forrester Wave™: Loyalty Platforms, Q4 2025</cite> </blockquote> <div class="forrester__cta">  <a class="btn btn--primary" href="/forrester-wave">
187Download the report <span>↓</span> </a> <a class="btn btn--ghost" href="/contact-us">Contact us</a> </div> </div> <figure class="forrester__visual"> <img loading="lazy" decoding="async" class="wavechart wavechart--img" src="/assets/awards/forrester-wave-chart.webp" alt="Loyalty Juggernaut positioned in the Strong Performer band of the Forrester Wave Loyalty Platforms Q4 2025."> <svg class="wavechart wavechart--hidden" viewBox="0 0 480 460" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" style="display:none"> <defs> <!-- Bands: radial gradients anchored at bottom-right (Leaders apex) --> <radialGradient id="band-leaders" cx="100%" cy="100%" r="120%"> <stop offset="0%" stop-color="#0DBFE3" stop-opacity="0.55"></stop> <stop offset="60%" stop-color="#069CB5" stop-opacity="0.38"></stop> <stop offset="100%" stop-color="#069CB5" stop-opacity="0.20"></stop> </radialGradient> <radialGradient id="band-strong" cx="100%" cy="100%" r="120%"> <stop offset="0%" stop-color="#0DBFE3" stop-opacity="0.30"></stop> <stop offset="60%" stop-color="#069CB5" stop-opacity="0.18"></stop> <stop offset="100%" stop-color="#069CB5" stop-opacity="0.08"></stop> </radialGradient> <radialGradient id="band-contenders" cx="100%" cy="100%" r="120%"> <stop offset="0%" stop-color="#0DBFE3" stop-opacity="0.12"></stop> <stop offset="100%" stop-color="#069CB5" stop-opacity="0.03"></stop> </radialGradient> <radialGradient id="marker-glow" cx="50%" cy="50%" r="50%"> <stop offset="0%" stop-color="#0DBFE3" stop-opacity="0.55"></stop> <stop offset="50%" stop-color="#0DBFE3" stop-opacity="0.18"></stop> <stop offset="100%" stop-color="#0DBFE3" stop-opacity="0"></stop> </radialGradient> <filter id="soft-blur" x="-50%" y="-50%" width="200%" height="200%"> <feGaussianBlur stdDeviation="8"></feGaussianBlur> </filter> </defs> <!-- Bands (bullseye at bottom-right corner = Leaders apex) --> <!-- Plot is full SVG area: 0..480 x 0..420 (leaving room for axis labels) --> <path d="M 0 420 L 0 0 A 480 420 0 0 1 480 420 Z" fill="url(#band-contenders)"></path> <path d="M 0 420 L 0 130 A 320 290 0 0 1 320 420 Z" fill="url(#band-strong)"></path> <path d="M 0 420 L 0 250 A 175 170 0 0 1 175 420 Z" fill="url(#band-leaders)"></path> <!-- Band hairline edges (very subtle) --> <path d="M 0 130 A 320 290 0 0 1 320 420" fill="none" stroke="rgba(13,191,227,0.18)" stroke-width="0.75"></path> <path d="M 0 250 A 175 170 0 0 1 175 420" fill="none" stroke="rgba(13,191,227,0.28)" stroke-width="0.75"></path> <!-- Band labels --> <text x="36" y="36" font-family="Inter, sans-serif" font-size="10" letter-spacing="1.6" fill="rgba(255,255,255,0.55)">CONTENDERS</text> <text x="140" y="145" font-family="Inter, sans-serif" font-size="10" letter-spacing="1.6" fill="rgba(255,255,255,0.75)">STRONG PERFORMERS</text> <text x="320" y="270" font-family="Inter, sans-serif" font-size="10" letter-spacing="1.6" fill="#0DBFE3">LEADERS</text> <!-- LJI marker --> <g transform="translate(155, 290)"> <!-- Outer soft glow halo --> <circle r="48" fill="url(#marker-glow)" filter="url(#soft-blur)"></circle> <circle r="26" fill="url(#marker-glow)"></circle> <!-- Solid dot --> <circle r="9" fill="#0DBFE3"></circle> <circle r="9" fill="none" stroke="#FFFFFF" stroke-width="1.5"></circle> <!-- Vertical "Customer feedback ▲" indicator above --> <line x1="0" y1="-22" x2="0" y2="-58" stroke="#0DBFE3" stroke-width="1.2" stroke-dasharray="3 3" opacity="0.7"></line> <text x="0" y="-70" text-anchor="middle" font-family="Inter, sans-serif" font-size="13" font-weight="600" fill="#FFFFFF">Loyalty Juggernaut</text> <text x="0" y="-86" text-anchor="middle" font-family="Inter, sans-serif" font-size="9" letter-spacing="1.4" fill="#0DBFE3">CUSTOMER FEEDBACK ▲</text> </g> <!-- Axis labels (along bottom + left) --> <text x="240" y="448" text-anchor="middle" font-family="Inter, sans-serif" font-size="9" letter-spacing="1.6" fill="rgba(255,255,255,0.40)">STRENGTH OF STRATEGY →</text> <text x="12" y="220" text-anchor="middle" font-family="Inter, sans-serif" font-size="9" letter-spacing="1.6" fill="rgba(255,255,255,0.40)" transform="rotate(-90, 12, 220)">STRENGTH OF OFFERING →</text> </svg> </figure> </div> </div> 
187<script>
188      /* When the Forrester chart enters the viewport, flip `.is-lit` on
189         the .forrester__visual . that drives the left-edge light beam
190         scanning down + the chart content revealing from top to bottom
191         in lockstep. Honors prefers-reduced-motion (visible immediately). */
192      (function(){
193        var fv = document.querySelector('.forrester__visual');
194        if (!fv) return;
195        if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
196          fv.classList.add('is-lit');
197          return;
198        }
199        if (!('IntersectionObserver' in window)) {
200          fv.classList.add('is-lit');
201          return;
202        }
203        var io = new IntersectionObserver(function(entries){
204          entries.forEach(function(e){
205            if (e.isIntersecting) {
206              fv.classList.add('is-lit');
207              io.unobserve(e.target);
208            }
209          });
210        }, { rootMargin: '0px 0px -15% 0px', threshold: 0.1 });
211        io.observe(fv);
212      })();
213    </script>
213 </section> <section class="section section--platform-intro"> <div class="wrap"> <header class="section__head section__head--wide"> <span class="chip chip--accent">The Platform</span> <h2>One platform.<br><span class="accent">Infinite possibilities</span></h2> <!-- Lens flare canvas . real WebGL shader (Three.js fragment).
214             Volumetric anamorphic lens flare with horizontal streak,
215             halo, ghost orbs, fBm-noise diffusion, scroll-driven expand.
216             Sibling to the Forrester volumetric beam. --> <canvas class="platform-intro__flare" id="platform-flare" aria-hidden="true"></canvas> <p class="lede">GRAVTY® is the only loyalty solution built to support every program model. Brand-led, multi-partner, ecosystem-driven, subscription-based, or co-brand. Across B2C, B2B, B2B2C, and B2E segments. GRAVTY® delivers the flexibility and adaptability to bring your vision to life.</p> </header> </div> </section> <section class="section section--capabilities"> <div class="wrap"> <div class="caps">  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">GRAVTY® AI</span> <h3 class="caps__h">Grow member lifetime value, powered by agentic AI</h3> <p class="caps__body">GRAVTY&reg; Agentic AI predicts behavior, personalizes engagement, detects fraud, creates offers, and recommends next-best actions to maximize loyalty performance. At its core is Compass, our Agentic AI interface, helping teams understand program performance, uncover growth opportunities, and make smarter decisions with confidence. Built to act. Built to perform.</p> <a class="btn btn--text" href="/agentic-ai-compass">Explore GRAVTY® AI <span>→</span></a> </div> <div class="caps__visual"> <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/01-gravty-ai.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">Offers &amp; Promotions Management</span> <h3 class="caps__h">Personalized incentives, profitable conversions</h3> <p class="caps__body">Leverage AI-powered, real-time personalization to deliver dynamic incentives, gamified promotions, and experiential rewards that influence behavior, increase conversion, and maximize customer lifetime value.</p> <a class="btn btn--text" href="/technology">Explore Offers &amp; Promotions <span>→</span></a> </div> <div class="caps__visual">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/02-offers-promotions.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">Ecosystem Partnership Management</span> <h3 class="caps__h">Empowered partnerships, accelerated growth</h3> <p class="caps__body">Advanced partnership management with self-service onboarding, partner intelligence, offer management, and automated settlement. Expand member value, unlock new revenue streams, and build a rich foundation of first-party data that fuels enterprise growth.</p> <a class="btn btn--text" href="/technology">Explore Ecosystem Management <span>→</span></a> </div> <div class="caps__visual">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/03-ecosystem.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">Customer Data Management</span> <h3 class="caps__h">Unified profiles, actionable insights</h3> <p class="caps__body">360-degree customer view with real-time data, advanced segmentation, and AI insights. Personalize engagement, predict needs, and ensure data privacy in a cookie-less world.</p> <a class="btn btn--text" href="/technology">Explore Customer Data <span>→</span></a> </div> <div class="caps__visual">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/04-customer-data.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">GRAVTY® AI-Scan</span> <h3 class="caps__h">Frictionless rewards, deeper engagement</h3> <p class="caps__body">AI-powered receipt scanning for instant rewards and personalized offers in offline retail. Enhance data collection and bridge in-store and digital experiences.</p> <a class="btn btn--text" href="/technology">Explore GRAVTY® AI-Scan <span>→</span></a> </div> <div class="caps__visual caps__visual--phone">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/05-frictionless-rewards.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">GRAVTY® Intelligence</span> <h3 class="caps__h">Real-time insights, smarter decisions</h3> <p class="caps__body">Real-time analytics with pre-built KPIs and AI-driven insights. Track performance, optimize engagement, and maximize profitability with data-driven decision-making.</p> <a class="btn btn--text" href="/technology">Explore GRAVTY® Intelligence <span>→</span></a> </div> <div class="caps__visual">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/06-intelligence.mp4" type="video/mp4"> </video> </div> </article>  <article class="caps__row"> <div class="caps__copy"> <span class="chip chip--accent">FIDIVIO</span> <h3 class="caps__h">Turn loyalty into a predictable growth asset</h3> <p class="caps__body">FIDIVIO gives finance, loyalty, and executive teams a real-time view of loyalty economics. From IFRS-compliant accounting and liability management to scenario planning and profitability analysis, FIDIVIO replaces spreadsheets and delayed reporting with clarity, control, and confidence.</p> <a class="btn btn--text" href="/technology">Explore FIDIVIO <span>→</span></a> </div> <div class="caps__visual">  <video class="caps__scene caps__scene--video" data-caps-video muted loop playsinline preload="none" poster="" aria-hidden="true"> <source src="/assets/videos/platform/07-fidivio.mp4" type="video/mp4"> </video> </div> </article> </div> </div> </section> 
216<script>
217(function(){
218  function applyEmbedCss(doc, isPhone){
219    var existing = doc.getElementById('__capsEmbedStyle');
220    if (existing) return;
221    if (!doc || !doc.body) return;
222    var st = doc.createElement('style');
223    st.id = '__capsEmbedStyle';
224    st.textContent = [
225      'html { background: transparent !important; overflow: hidden !important; margin: 0 !important; padding: 0 !important; }',
226      'body {' +
227        'background:' +
228          'radial-gradient(ellipse 70% 40% at 50% -10%, rgba(13,191,227,0.10), transparent 65%),' +
229          'linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.005)),' +
230          '#05080F !important;' +
231        'overflow: hidden !important;' +
232        'margin: 0 !important;' +
233        'padding: 0 !important;' +
234        (isPhone ? '' : 'width: 1500px !important;') +
235        'min-height: 100vh !important;' +
236      '}',
237      'body .scene { background: transparent !important; box-shadow: none !important; padding: 0 !important; margin: 0 !important; border: 0 !important; max-width: none !important; height: auto !important; }',
238      'body .scene-stage, body .scene-stage.one-up, body .scene-stage.three-up {' +
239        'background: transparent !important;' +
240        'padding: 0 !important;' +
241        'margin: 0 !important;' +
242        'min-height: 0 !important;' +
243        'width: 100% !important;' +
244        'height: auto !important;' +
245      '}',
246      'body .scene-meta { display: none !important; }',
247      'body::before, body::after { display: none !important; }',
248      '.admin-topbar, .scene-topbar, .topbar, .dots, .crumb { display: none !important; }',
249      '.admin-surface, .admin, .surface {' +
250        'background: transparent !important;' +
251        'border: 0 !important;' +
252        'border-radius: 0 !important;' +
253        'box-shadow: none !important;' +
254        'width: 100% !important;' +
255        'height: 100% !important;' +
256        'min-height: 100vh !important;' +
257      '}',
258      '.admin-layout, [data-scene="1"] .admin-layout, [data-scene="2"] .admin-layout, [data-scene="3"] .admin-layout, [data-scene="4"] .admin-layout, [data-scene="6"] .admin-layout {' +
259        'height: auto !important;' +
260        'aspect-ratio: 1.6 / 1 !important;' +
261        'min-height: 0 !important;' +
262        'width: 100% !important;' +
263      '}',
264      '.cc {' +
265        'aspect-ratio: 1.585 / 1 !important;' +
266        'flex: 0 0 auto !important;' +
267        'width: auto !important;' +
268        'min-width: 240px !important;' +
269        'min-height: 0 !important;' +
270      '}',
271      '.cc--hero { min-width: 280px !important; height: auto !important; }',
272      '.cc--mini { min-width: 180px !important; }'
273    ].join('');
274    doc.head.appendChild(st);
275  }
276  function fit(iframe){
277    try {
278      var doc = iframe.contentDocument;
279      if (!doc || !doc.body) return;
280      var box = iframe.getBoundingClientRect();
281      if (box.width <= 0 || box.height <= 0) return;
282      var isPhone = iframe.closest('.caps__visual--phone') !== null;
283      applyEmbedCss(doc, isPhone);
284
285      if (isPhone) {
286        var iphone = doc.querySelector('.iphone-air');
287        if (iphone) {
288          doc.querySelectorAll('.scene-stage, .scene').forEach(function(el){
289            el.style.transform = '';
290            el.style.width = '';
291            el.style.height = '';
292            el.style.maxWidth = 'none';
293            el.style.textAlign = 'center';
294          });
295          doc.body.style.transform = '';
296          doc.body.style.transformOrigin = '';
297          iphone.style.height = Math.round(box.height * 1.42) + 'px';
298          iphone.style.width  = 'auto';
299          iphone.style.maxWidth = 'none';
300          iphone.style.margin = '0 auto';
301          iphone.style.display = 'block';
302          iphone.style.filter = 'none';
303        }
304        return;
305      }
306
307      var body = doc.body;
308      body.style.transform = '';
309      body.style.transformOrigin = '';
310      var s = box.width / 1500;
311      if (s > 1.0) s = 1.0;
312      body.style.transformOrigin = 'top left';
313      body.style.transform = 'scale(' + s.toFixed(4) + ')';
314    } catch(e) { /* cross-origin or not ready, ignore */ }
315  }
316  function wire(iframe){
317    if (iframe.complete || iframe.readyState === 'complete') fit(iframe);
318    iframe.addEventListener('load', function(){ fit(iframe); });
319  }
320  function refitAll(){
321    document.querySelectorAll('iframe[data-caps-scene]').forEach(fit);
322  }
323  function init(){
324    document.querySelectorAll('iframe[data-caps-scene]').forEach(wire);
325    var ro = ('ResizeObserver' in window) ? new ResizeObserver(function(entries){
326      for (var i = 0; i < entries.length; i++) {
327        var f = entries[i].target.querySelector('iframe[data-caps-scene]');
328        if (f) fit(f);
329      }
330    }) : null;
331    if (ro) document.querySelectorAll('.caps__visual').forEach(function(v){ ro.observe(v); });
332    var rTimer = 0;
333    function onResize(){
334      clearTimeout(rTimer);
335      rTimer = setTimeout(refitAll, 80);
336    }
337    window.addEventListener('resize', onResize, { passive: true });
338    window.addEventListener('orientationchange', onResize, { passive: true });
339    requestAnimationFrame(function(){
340      requestAnimationFrame(refitAll);
341    });
342    setTimeout(refitAll, 100);
343    setTimeout(refitAll, 300);
344    setTimeout(refitAll, 700);
345    setTimeout(refitAll, 1500);
346    setTimeout(refitAll, 3000);
347    if (document.fonts && document.fonts.ready) {
348      document.fonts.ready.then(refitAll).catch(function(){});
349    }
350    window.addEventListener('load', refitAll);
351  }
352  /* NOTE: the iframe-fitting code above (init/fit/applyEmbedCss) is
353     legacy from the embedded-scene version of this section. The current
354     markup uses <video> tags, so that path is dead and never invoked.
355     What runs is the video controller below. */
356
357  /* ----------------------------------------------------------------
358     Video controller · the fan-saver.
359     Previously every <video> had autoplay+loop, so all 7 decoded
360     continuously and simultaneously (even far offscreen) — pegging the
361     GPU. Now: a video only plays while its row is in the viewport, and
362     ALL videos pause when the tab/window is hidden. At most one or two
363     decode at a time, and zero when you switch away. */
364  function capsVideoInit(){
365    var vids = Array.prototype.slice.call(
366      document.querySelectorAll('video[data-caps-video]')
367    );
368    if (!vids.length) return;
369
370    var reduce = window.matchMedia &&
371      window.matchMedia('(prefers-reduced-motion: reduce)').matches;
372
373    function play(v){
374      if (reduce) return;
375      if (document.hidden) return;
376      var p = v.play();
377      if (p && typeof p.catch === 'function') p.catch(function(){});
378    }
379    function pause(v){
380      try { v.pause(); } catch(e){}
381    }
382
383    // H3: only ONE video plays at a time — the most-visible row. Previously
384    // every in-view row played at once, so two or three ran in a single frame,
385    // which the LJI team flagged as distracting.
386    var ratios = new WeakMap();
387    function reconcile(){
388      var best = null, bestRatio = 0;
389      vids.forEach(function(v){ var r = ratios.get(v) || 0; if (r > bestRatio) { bestRatio = r; best = v; } });
390      vids.forEach(function(v){ if (v === best && bestRatio > 0) play(v); else pause(v); });
391    }
392
393    if ('IntersectionObserver' in window) {
394      var io = new IntersectionObserver(function(entries){
395        entries.forEach(function(e){ ratios.set(e.target, e.isIntersecting ? e.intersectionRatio : 0); });
396        reconcile();
397      }, { threshold: [0, 0.25, 0.5, 0.75, 1] });
398      vids.forEach(function(v){ io.observe(v); });
399    } else {
400      vids.forEach(function(v){ ratios.set(v, 1); });
401      reconcile();
402    }
403
404    // Pause every video when the tab/window is backgrounded; resume the
405    // single most-visible one when it returns.
406    document.addEventListener('visibilitychange', function(){
407      if (document.hidden) { vids.forEach(pause); } else { reconcile(); }
408    });
409  }
410
411  if (document.readyState === 'loading') {
412    document.addEventListener('DOMContentLoaded', capsVideoInit);
413  } else {
414    capsVideoInit();
415  }
416})();
417</script>
417 <section class="section section--aws-quote"> <div class="wrap"> <figure class="aws-card" data-brand="magenta"> <blockquote class="aws-card__text">
418GRAVTY® allows us to move faster and react to what customers actually want. We've seen the platform evolve, and that's important for us. We're building something that keeps evolving, because customer expectations don't stand still.
419</blockquote> <figcaption class="aws-card__attr"> <!-- Photo removed per 2026-05-28 LJI call. Awaiting Shyam's revised quote text. --> <div class="aws-card__attr-text"> <div class="aws-card__attr-name">Nereida Fundo</div> <div class="aws-card__attr-role">Loyalty Operations · Deutsche Telekom · Magenta Moments</div> </div> <div class="aws-card__attr-brand aws-card__attr-brand--recolor" style="--brand-logo:url('/assets/logos/deutsche-telekom.webp')" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/logos/deutsche-telekom.webp" alt="Deutsche Telekom"> </div> </figcaption> </figure> </div> </section> <section class="section section--scale"> <div class="wrap"> <header class="section__head"> <!-- Rocket-falling-down-a-page beam removed per 2026-05-28 LJI call.
420             Shyam: "complete non-starter for those 8 things. Just put those simple stats." --> <h2>The scale <span class="gravty-wordmark" role="img" aria-label="GRAVTY®"></span> runs at today</h2> </header> </div><!-- /.wrap (header) --> <div class="wrap"> <div class="stats-grid"> <div class="stats-grid__item"> <div class="stats-grid__num">100M<span class="stats-grid__num-unit">+</span></div> <div class="stats-grid__label">Members on a single tenant</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">121M<span class="stats-grid__num-unit">+</span></div> <div class="stats-grid__label">Events processed per hour</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">&lt;50<span class="stats-grid__num-unit">ms</span></div> <div class="stats-grid__label">Average response time at the API layer</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">99.99<span class="stats-grid__num-unit">%</span></div> <div class="stats-grid__label">Enterprise uptime</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">80<span class="stats-grid__num-unit">+</span></div> <div class="stats-grid__label">Programs managed globally</div> </div>  <div class="stats-grid__item"> <div class="stats-grid__num">16</div> <div class="stats-grid__label">Verticals driving enterprise growth on GRAVTY®</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">110</div> <div class="stats-grid__label">Countries with programs in production</div> </div> <div class="stats-grid__item"> <div class="stats-grid__num">Zero</div> <div class="stats-grid__label">Failed implementations</div> </div> </div> </div> </section> <section class="section section--tech" id="technology"> <div class="tech-stars" aria-hidden="true"> <span style="left:4%;  --fd:24s; --fdy:-6s;  --pd:7s;  --pdy:-1s;"></span> <span style="left:9%;  --fd:30s; --fdy:-14s; --pd:9s;  --pdy:-3s; width:1px; height:1px;"></span> <span style="left:13%; --fd:18s; --fdy:-2s;  --pd:6s;  --pdy:-4s;"></span> <span style="left:17%; --fd:34s; --fdy:-22s; --pd:11s; --pdy:-2s;"></span> <span style="left:21%; --fd:21s; --fdy:-9s;  --pd:8s;  --pdy:-5s; width:3px; height:3px;"></span> <span style="left:26%; --fd:28s; --fdy:-16s; --pd:10s; --pdy:-1s;"></span> <span style="left:31%; --fd:23s; --fdy:-3s;  --pd:7s;  --pdy:-6s; width:1px; height:1px;"></span> <span style="left:35%; --fd:33s; --fdy:-18s; --pd:9s;  --pdy:-3s;"></span> <span style="left:40%; --fd:19s; --fdy:-7s;  --pd:8s;  --pdy:-2s;"></span> <span style="left:44%; --fd:27s; --fdy:-12s; --pd:11s; --pdy:-7s; width:3px; height:3px;"></span> <span style="left:49%; --fd:32s; --fdy:-21s; --pd:6s;  --pdy:-4s; width:1px; height:1px;"></span> <span style="left:53%; --fd:22s; --fdy:-5s;  --pd:7s;  --pdy:0s;"></span> <span style="left:58%; --fd:29s; --fdy:-15s; --pd:10s; --pdy:-3s;"></span> <span style="left:62%; --fd:20s; --fdy:-8s;  --pd:8s;  --pdy:-5s; width:1px; height:1px;"></span> <span style="left:67%; --fd:31s; --fdy:-19s; --pd:9s;  --pdy:-1s;"></span> <span style="left:71%; --fd:24s; --fdy:-10s; --pd:7s;  --pdy:-6s;"></span> <span style="left:75%; --fd:26s; --fdy:-13s; --pd:11s; --pdy:-2s; width:3px; height:3px;"></span> <span style="left:79%; --fd:35s; --fdy:-24s; --pd:8s;  --pdy:-4s; width:1px; height:1px;"></span> <span style="left:83%; --fd:21s; --fdy:-4s;  --pd:6s;  --pdy:-7s;"></span> <span style="left:87%; --fd:28s; --fdy:-17s; --pd:10s; --pdy:-3s;"></span> <span style="left:91%; --fd:23s; --fdy:-11s; --pd:7s;  --pdy:-5s; width:1px; height:1px;"></span> <span style="left:95%; --fd:30s; --fdy:-20s; --pd:9s;  --pdy:-1s;"></span> <span style="left:7%;  --fd:25s; --fdy:-13s; --pd:8s;  --pdy:-2s;"></span> <span style="left:19%; --fd:33s; --fdy:-23s; --pd:11s; --pdy:-6s;"></span> <span style="left:46%; --fd:18s; --fdy:-6s;  --pd:6s;  --pdy:-4s; width:1px; height:1px;"></span> <span style="left:64%; --fd:36s; --fdy:-25s; --pd:10s; --pdy:-1s;"></span> <span style="left:81%; --fd:22s; --fdy:-9s;  --pd:7s;  --pdy:-3s;"></span> <span style="left:11%; --fd:29s; --fdy:-17s; --pd:9s;  --pdy:-7s; width:3px; height:3px;"></span> <span style="left:38%; --fd:31s; --fdy:-20s; --pd:8s;  --pdy:-2s;"></span> <span style="left:56%; --fd:24s; --fdy:-12s; --pd:6s;  --pdy:-5s; width:1px; height:1px;"></span> </div> <div class="wrap"> <header class="section__head"> <span class="chip chip--accent">Technology</span> <h2><span class="gravty-wordmark" role="img" aria-label="GRAVTY®"></span>: world's most advanced<br>loyalty technology</h2> <p class="lede">GRAVTY® is the industry's first cloud-native, enterprise-class, patented technology for loyalty programs and ecosystems, reshaping the loyalty program landscape through advanced AI, serverless, and autonomous capabilities.</p> 
420<script type="module">(function(){var o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZαβγΔΛΣΦΨΩЖ⌬⎔◆◇◈⬢⬡@#$%&*+=?/<>{}[]:;~^";function i(){return o.charAt(Math.floor(Math.random()*o.length))}var a=null;function d(){var t=document.querySelector("[data-cipher]");if(!t)return;function l(){t.innerHTML="";for(var v=t.getBoundingClientRect(),c=32,g=23,y=Math.ceil(v.width/c),C=Math.ceil(v.height/g)+6,h=document.createDocumentFragment(),r=0;r<y;r++){var e=document.createElement("div");e.className="cipher-col",e.style.left=(r*c+(Math.random()-.5)*6).toFixed(1)+"px";var m=(7+Math.random()*7).toFixed(2),x=(-Math.random()*m).toFixed(2);e.style.setProperty("--cd",m+"s"),e.style.setProperty("--cdy",x+"s");var E=.15+Math.random()*.2;e.style.setProperty("--op",E.toFixed(2));for(var u=0;u<C;u++){var f=document.createElement("span");f.textContent=i(),e.appendChild(f)}h.appendChild(e)}t.appendChild(h),a&&clearInterval(a),a=setInterval(function(){var p=t.getElementsByTagName("span"),n=p.length;if(n)for(var L=Math.max(2,Math.floor(n*.025)),M=0;M<L;M++)p[Math.random()*n|0].textContent=i()},180)}l();var s;window.addEventListener("resize",function(){clearTimeout(s),s=setTimeout(l,180)})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",d):d()})();</script>
420 </header> <!-- 2-column layout (Alexander's clarification: NOT bento, 2 cols).
421           5 pillars with canonical copy locked. 5th pillar (Autonomous)
422           spans full width as a band below the 2-col grid. --> <div class="bento bento--2col"> <article class="bento__cell bento__cell--arch"> <div class="bento__graphic bento__graphic--img"> <img src="/assets/tech/limitless-scale.webp" alt="" loading="lazy"> <div class="bento__sparks" aria-hidden="true"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div> </div> <div class="bento__copy"> <div class="bento__eye">01 · Serverless First</div> <h3 class="bento__h">Limitless scale,<br>unmatched performance</h3> <p class="bento__body">GRAVTY® is built serverless-first to deliver unlimited scalability, high availability, and real-time performance, effortlessly managing thousands of partners, millions of members, billions of transactions, and complex ecosystems at once.</p> </div> </article> <article class="bento__cell bento__cell--intel"> <div class="bento__graphic bento__graphic--img bento__graphic--ai-streams"> <img src="/assets/tech/ai-first-data-streams.webp" alt="An isometric data landscape where floating teal UI cards (profile, analytics chart, network, chat, payment, dashboard) are connected by glowing data streams that flow through a circuit-board terrain." loading="lazy"> <div class="bento__sparks" aria-hidden="true"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div> </div> <div class="bento__copy"> <div class="bento__eye">02 · AI-First</div> <h3 class="bento__h">Smarter, faster,<br>more engaging</h3> <p class="bento__body">GRAVTY® is an AI-first platform that empowers loyalty teams with predictive insights, autonomous decisions, and hyper-personalized experiences, driving faster engagement, smarter content, and efficient program innovation.</p> </div> </article> <article class="bento__cell bento__cell--perf"> <div class="bento__graphic bento__graphic--img bento__graphic--integrations">  <img src="/assets/tech/endless-integrations.webp" alt="GRAVTY connects a central platform out to every loyalty touchpoint — data, mobile, code, partners, storefronts, IoT, analytics, identity, and more — via a network of teal connections." loading="lazy"> <div class="bento__sparks" aria-hidden="true"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div> </div> <div class="bento__copy"> <div class="bento__eye">03 · API-First</div> <h3 class="bento__h">Seamless integrations,<br>endless possibilities</h3> <p class="bento__body">With its comprehensive set of APIs, support for a range of integration patterns, and a rich catalog of prebuilt connectors, GRAVTY® makes integration effortless, ensuring your loyalty program connects seamlessly across customer touchpoints, ERP, CRM, and IoT or any other systems.</p> </div> </article> <article class="bento__cell bento__cell--rules"> <div class="bento__graphic bento__graphic--img"> <img src="/assets/tech/any-program.webp" alt="" loading="lazy"> <div class="bento__sparks" aria-hidden="true"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div> </div> <div class="bento__copy"> <div class="bento__eye">04 · Adaptable</div> <h3 class="bento__h">Configure it<br>your way</h3> <p class="bento__body">GRAVTY® gives you the flexibility to shape your loyalty program with an extensible data model, patent pending flexible deployment architecture that adapts to your unique business needs, and data residency requirements. With GRAVTY®, you're in control. No rigid structures, no limitations.</p> </div> </article> <article class="bento__cell bento__cell--scale bento__cell--full"> <div class="bento__graphic bento__graphic--img"> <img src="/assets/tech/self-healing.webp" alt="" loading="lazy"> <div class="bento__sparks" aria-hidden="true"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div> </div> <div class="bento__copy"> <div class="bento__eye">05 · Autonomous</div> <h3 class="bento__h">Always on and<br>self-healing loyalty programs</h3> <p class="bento__body">GRAVTY® takes autonomous business monitoring to the next level. With intelligent, award-winning, alert
422ing, and automated resolution, GRAVTY® ensures commercial integrity, operational reliability, and consistent customer experience at scale, helping brands detect, respond, and adapt to unusual events effortlessly.</p> </div> </article> </div> </div> </section>  <section class="section section--aws-quote" id="aws-quote"> <div class="wrap"> <figure class="aws-card" data-brand="aws"> <blockquote class="aws-card__text">
423AWS is proud to support Loyalty Juggernaut's GRAVTY<sup>®</sup> platform as it sets new benchmarks in performance, scalability, and reliability for loyalty ecosystems. By leveraging AWS' serverless capabilities, including AWS Lambda, ECS Fargate, DynamoDB, and RDS, GRAVTY<sup>®</sup> has achieved a dynamic, high-performance architecture optimized for today's fast-growing, data-intensive loyalty programs.
424</blockquote> <figcaption class="aws-card__attr">  <div class="aws-card__attr-text"> <div class="aws-card__attr-name">Josh Kahn</div> <div class="aws-card__attr-role">Worldwide Tech Lead for Serverless at AWS</div> </div> <div class="aws-card__attr-brand aws-card__attr-brand--colored" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/logos/aws-white.webp" alt="AWS"> </div> </figcaption> </figure> </div> </section> <section class="section section--audit" id="audit"> <div class="wrap"> <header class="section__head audit-head"> <div class="cipher-bg" data-cipher aria-hidden="true"></div> <div class="audit-lock" aria-hidden="true"> <svg viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"> <rect x="6" y="14" width="20" height="14" rx="2.5"></rect> <path d="M10 14V9a6 6 0 0 1 12 0v5"></path> <circle cx="16" cy="21" r="1.5" fill="currentColor"></circle> <path d="M16 22.5v2"></path> </svg> </div> <h2 style="text-wrap: balance; max-width: 22ch; margin-inline: auto;">Enterprise security, independently verified</h2> <p class="lede">SOC 1 + SOC 2 Type II audited by Deloitte. ISO/IEC 27001 + 27018 + 22301 certified. GDPR compliant.</p> </header> <div class="stamps"> <div class="stamp"> <div class="stamp__title">SOC 1 · Type II</div> <div class="stamp__seal stamp__seal--svg stamp__seal--square"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="soc1g" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#dd1f26"></stop><stop offset="100%" stop-color="#8e1419"></stop></linearGradient></defs> <rect x="6" y="6" width="88" height="88" rx="6" fill="url(#soc1g)"></rect> <rect x="11" y="11" width="78" height="78" rx="4" fill="none" stroke="#fff" stroke-width="0.6" opacity="0.45"></rect> <text x="50" y="32" text-anchor="middle" font-family="Inter, sans-serif" font-size="8" font-weight="700" letter-spacing="0.18em" fill="#fff">AICPA</text> <text x="50" y="55" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="22" font-weight="400" letter-spacing="-0.02em" fill="#fff">SOC 1</text> <text x="50" y="72" text-anchor="middle" font-family="Inter, sans-serif" font-size="7" font-weight="600" letter-spacing="0.22em" fill="#fff" opacity="0.85">TYPE II</text> <text x="50" y="86" text-anchor="middle" font-family="Inter, sans-serif" font-size="5" font-weight="500" letter-spacing="0.24em" fill="#fff" opacity="0.65">COMPLIANT</text> </svg> </div> <div class="stamp__foot">Audited by Deloitte</div> </div> <div class="stamp"> <div class="stamp__title">SOC 2 · Type II</div> <div class="stamp__seal stamp__seal--svg stamp__seal--square"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="soc2g" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#dd1f26"></stop><stop offset="100%" stop-color="#8e1419"></stop></linearGradient></defs> <rect x="6" y="6" width="88" height="88" rx="6" fill="url(#soc2g)"></rect> <rect x="11" y="11" width="78" height="78" rx="4" fill="none" stroke="#fff" stroke-width="0.6" opacity="0.45"></rect> <text x="50" y="32" text-anchor="middle" font-family="Inter, sans-serif" font-size="8" font-weight="700" letter-spacing="0.18em" fill="#fff">AICPA</text> <text x="50" y="55" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="22" font-weight="400" letter-spacing="-0.02em" fill="#fff">SOC 2</text> <text x="50" y="72" text-anchor="middle" font-family="Inter, sans-serif" font-size="7" font-weight="600" letter-spacing="0.22em" fill="#fff" op
424acity="0.85">TYPE II</text> <text x="50" y="86" text-anchor="middle" font-family="Inter, sans-serif" font-size="5" font-weight="500" letter-spacing="0.24em" fill="#fff" opacity="0.65">COMPLIANT</text> </svg> </div> <div class="stamp__foot">Audited by Deloitte</div> </div> <div class="stamp"> <div class="stamp__title">ISO/IEC 27001</div> <div class="stamp__seal stamp__seal--svg"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="iso27g" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#1e64a8"></stop><stop offset="100%" stop-color="#0b3a6f"></stop></linearGradient></defs> <circle cx="50" cy="50" r="48" fill="url(#iso27g)"></circle> <circle cx="50" cy="50" r="42" fill="none" stroke="#fff" stroke-width="0.6" opacity="0.5"></circle> <text x="50" y="36" text-anchor="middle" font-family="Inter, sans-serif" font-size="10" font-weight="700" letter-spacing="0.16em" fill="#fff">ISO/IEC</text> <text x="50" y="58" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="22" font-weight="400" letter-spacing="-0.02em" fill="#fff">27001</text> <text x="50" y="74" text-anchor="middle" font-family="Inter, sans-serif" font-size="6" font-weight="600" letter-spacing="0.32em" fill="#fff" opacity="0.85">CERTIFIED</text> </svg> </div> <div class="stamp__foot">Information security</div> </div> <div class="stamp"> <div class="stamp__title">ISO/IEC 27018</div> <div class="stamp__seal stamp__seal--svg"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="iso18g" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#3a8ec0"></stop><stop offset="100%" stop-color="#1a4f73"></stop></linearGradient></defs> <circle cx="50" cy="50" r="48" fill="url(#iso18g)"></circle> <circle cx="50" cy="50" r="42" fill="none" stroke="#fff" stroke-width="0.6" opacity="0.5"></circle> <text x="50" y="36" text-anchor="middle" font-family="Inter, sans-serif" font-size="10" font-weight="700" letter-spacing="0.16em" fill="#fff">ISO/IEC</text> <text x="50" y="58" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="22" font-weight="400" letter-spacing="-0.02em" fill="#fff">27018</text> <text x="50" y="74" text-anchor="middle" font-family="Inter, sans-serif" font-size="6" font-weight="600" letter-spacing="0.32em" fill="#fff" opacity="0.85">CERTIFIED</text> </svg> </div> <div class="stamp__foot">Cloud PII protection</div> </div> <div class="stamp"> <div class="stamp__title">ISO/IEC 22301</div> <div class="stamp__seal stamp__seal--svg"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="iso22g" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#0DBFE3"></stop><stop offset="100%" stop-color="#085f78"></stop></linearGradient></defs> <circle cx="50" cy="50" r="48" fill="url(#iso22g)"></circle> <circle cx="50" cy="50" r="42" fill="none" stroke="#fff" stroke-width="0.6" opacity="0.5"></circle> <text x="50" y="36" text-anchor="middle" font-family="Inter, sans-serif" font-size="10" font-weight="700" letter-spacing="0.18em" fill="#fff">ISO</text> <text x="50" y="58" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="22" font-weight="400" letter-spacing="-0.02em" fill="#fff">22301</text> <text x="50" y="74" text-anchor="middle" font-family="Inter, sans-serif" font-size="6" font-weight="600" letter-spacing="0.32em" fill="#fff" opacity="0.85">CERTIFIED</text> </svg> </div> <div class="stamp__foot">Business continuity</div> </div> <div class="stamp"> <div class="stamp__title">GDPR</div> <div class="stamp__seal stamp__seal--svg"> <svg viewBox="0 0 100 100" aria-hidden="true"> <defs><linearGradient id="gdprg" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#003399"></stop><stop offset="100%" stop-color="#001a4d"></stop></linearGradient></defs> <circle cx="50" cy="50" r="48" fill="url(#gdprg)"></circle> <g fill="#FFCC00"> <circle cx="50" cy="22" r="1.6"></circle><circle cx="63" cy="25" r="1.6"></circle><circle cx="73" cy="34" r="1.6"></circle><circle cx="77" cy="47" r="1.6"></circle><circle cx="73" cy="60" r="1.6"></circle><circle cx="63" cy="69" r="1.6"></circle><circle cx="50" cy="72" r="1.6"></circle><circle cx="37" cy="69" r="1.6"></circle><circle cx="27" cy="60" r="1.6"></circle><circle cx="23" cy="47" r="1.6"></circle><circle cx="27" cy="34" r="1.6"></circle><circle cx="37" cy="25" r="1.6"></circle> </g> <text x="50" y="52" text-anchor="middle" font-family="Source Serif 4, Georgia, serif" font-size="20" font-weight="400" letter-spacing="-0.02em" fill="#fff">GDPR</text> <text x="50" y="64" text-anchor="middle" font-family="Inter, sans-serif" font-size="6.5" font-weight="600" letter-spacing="0.28em" fill="#fff" op
424acity="0.9">COMPLIANT</text> </svg> </div> <div class="stamp__foot">DPO appointed</div> </div> </div> </div> </section> <section class="section section--integrations" id="integrations"> <div class="ig-grid" data-ig-grid aria-hidden="true"></div> 
424<script type="application/json" data-ig-logos>[{"n":"Zendesk","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2qCoCYKS49P5ETW9TAbaII/17bf3462868e4b4a4df22e638c30dada/Zendesk.png"},{"n":"Freshdesk","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2bY4cRvsu1iVF6WVUsl1w2/0635b34e3503f0768125262a10f86df3/Subtract.png"},{"n":"Braze","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4t1YWjyV0l4EKDvkZt6778/f582a96e72f5c8087ffdc71d1224acae/Braze.png"},{"n":"Oracle Responsys","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4Avijer8Wn4bgyyJ1cAN9X/3aeb31d5b67a5b0d50f4a42cf54311a0/Oracle.png"},{"n":"SALESManago","l":"https://images.ctfassets.net/6w2ezdyqwz4g/jPxiD3A1JGYzKqAJzdnCK/1ff73bb87db89294e4a3f427bfbc54ef/Salesmango.png"},{"n":"Mailchimp","l":"https://images.ctfassets.net/6w2ezdyqwz4g/7gAw6IBaWTEzc2cfOAPfL6/f56cbb3f525cdc3943ffb3567a17d525/Mailchimp.png"},{"n":"Xeno","l":"https://images.ctfassets.net/6w2ezdyqwz4g/Y4C3pUn2PnX5pJ09iyfiK/27283ed43ad7faba791c328bb88c7bb2/Xeno.png"},{"n":"Gamooga","l":"https://images.ctfassets.net/6w2ezdyqwz4g/1zgFdoY4KEoJrPwo6w7Qsp/93946093b92955388a0beaa8aa8c6190/Gamooga.png"},{"n":"SendGrid","l":"https://images.ctfassets.net/6w2ezdyqwz4g/439z4QBxPYoGmSz8wUCoby/3a8a7dd2d7b471a7561321b42e0f8a70/Vector__1_.png"},{"n":"Microsoft O365","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3m0hIFyJToGq3gNVYAKxbf/b2a98808ef11a6ad7e6e870afc9f2aa8/Microsoft.png"},{"n":"Juvlon","l":"https://images.ctfassets.net/6w2ezdyqwz4g/7H9oE9KDtHwpR4Rq2XNp2k/bb95aa56a092037043c9f0d81d9ad3ac/Juvlon.png"},{"n":"Numberly","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2lnydyZsyWjnPinwMHrCCc/be30eb8621014122951a69c20a3148cd/Numberly.png"},{"n":"Twilio","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4VucE3GDOQIdDMLe8bSGqO/02c17e72bfd91aabf6019103253c49b4/Twillio.png"},{"n":"ValueFirst","l":"https://images.ctfassets.net/6w2ezdyqwz4g/NjAB2LS9K8Tu8SU2sNmcj/60973c60f80b0cbf5c9fde6a8b930537/ValueFirst.png"},{"n":"Unifonic","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2zpFncxdjmkqLzTozU1GmZ/5242b5ed95ab814770549d4abfd2756b/Unifonic.png"},{"n":"TextNation","l":"https://images.ctfassets.net/6w2ezdyqwz4g/47iwGbmT3apLYMSJ5kdzs9/66f748d0e98a333f2a1a4612aa6a2467/TextNation.png"},{"n":"Mgage / Karix","l":"https://images.ctfassets.net/6w2ezdyqwz4g/1kiT4PLQnOowOaXxc4Ci7T/ebcd0a56409b7d9fa780a5cb302c70a5/Karix.png"},{"n":"OneSignal","l":"https://images.ctfassets.net/6w2ezdyqwz4g/1cTSQA40dLgmdyjgsdIAm1/edcfae4c4ab776d28672ff3057a0698c/One_Signal.png"},{"n":"SWRVE / Messagegears","l":"https://images.ctfassets.net/6w2ezdyqwz4g/719N4qhF7RgsMRPV3BlXEO/18f56cb7778676da0afd44930d55afaf/Message_Gears.png"},{"n":"Firebase (Google)","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4Cm4DmGdRfVYMqXJ81VSfe/93a4779ff64dd3aadcbbfca3da75f17f/Firebase.png"},{"n":"Apple Push","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6nVXNkTa9BR8AvkTOGzpON/143bcaf7616f3bdf6cb3bd7c18e3eb00/Apple.png"},{"n":"Baidu Push","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3emXZO11DR2YsbIbDZC7fu/a2c878e100946ea2b3465eaff4ee8836/Baidu_Push.png"},{"n":"Yunpian","l":"https://images.ctfassets.net/6w2ezdyqwz4g/myN1jmsFMPUKBCmRJZo55/49ebf2a891e7bb249c2a1e0376ff4580/Yuni_Pan.png"},{"n":"Infobip","l":"https://images.ctfassets.net/6w2ezdyqwz4g/bYuuAlL3v29dvvUidrRWU/f9874c9cf1d9c60b7b11cae8dd0e2daa/Infobip.png"},{"n":"Lexcom","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2y10rpF94HM23jGNK6jEeJ/800070af56d48352dcd1d6430b12a253/Lexon_Enterprises.png"},{"n":"MoEngage","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6R14PGJfLSrPZ9UmxrYxYv/e234b4e3c3d6668b18e5f4efd3a223d9/Moengage.png"},{"n":"BOTSHOT","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6geTfGQSPnbBt8pcuDOgH/2b0c4e0cf5f0f30306549b6f11fb7c0f/BOTSHOT.png"},{"n":"Sinch","l":"https://images.ctfassets.net/6w2ezdyqwz4g/434f7r8kCACucK9cLAZXNu/946cbb9928650bdc78ca5e9eccdece48/Sinch.png"},{"n":"Emarsys (SAP)","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5xk7s61J6T3bEYLyPYKvuT/cd2dec6cfc22eb5f770a7bdd617fe3cb/SAP.png"},{"n":"Genesys","l":"https://images.ctfassets.net/6w2ezdyqwz4g/75jwq3BfKL8NjEJUOfLB0P/f8db63df84b6e7085a366c52012b7d32/Genesys.png"},{"n":"Mixpanel","l":"https://images.ctfassets.net/6w2ezdyqwz4g/28wYfzC0pxrN3oy3Xhcs7k/b250f3596023bb072c8a93463b980f51/MIXPANEL.png"},{"n":"UXCam","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6MGQ4Q6TjKXwJunZWng5yz/5e5d21fa28cdd569c2ca6a68271a0cd6/UXcam.png"},{"n":"Contentful","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5pJ3T7gdUK5bpxNevHl6IR/9039660f4ab9bb88b8a5b55325e6f20a/Contentful.png"},{"n":"Adobe Experience Manager","l":"https://images.ctfassets.net/6w2ezdyqwz4g/33MYKoWzSip8nKUZCDFqsq/fbd078c7102cc8ff2807b7c1eed50670/Adobe-1.png"},{"n":"Sitecore","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3ps7VzLWyhMLj103HU6wZT/b320e7aed65c6241fad7838a82501117/SiteCore.png"},{"n":"Storyblok","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4e6MwSF8NUPqSF35YPP8SD/e726bac5b4c256e07c25363af2a98119/Story_blok.png"},{"n":"Progress Sitefinity","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3Zk945NK2Cb1IMNMU60Oq7/17d09e4b058871dfa41ecff1985e4a03/Progress.png"},{"n":"mPass","l":"https://images.ctfassets.net/6w2ezdyqwz4g/73hCOYfHBkoCu3iM34RMLs/87d242c6f1bb36f3e2fcae0bcb9028be/Mpass.png"},{"n":"LoyLogic","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6DcjIzeKWSa0iPwF6SODGO/79254c8d6d3bacedf0c7e3
42415189b4551/Loy_Logic.png"},{"n":"QwikCilver","l":"https://images.ctfassets.net/6w2ezdyqwz4g/7frOQvkCkC424tUreFHatt/525419f0e10f708a0448a6a29f5ceffc/QwikCilver.png"},{"n":"Urbox","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6lf1YKAAAQqsL1I8mucbWa/d816a31d74989cf64f5fb1d52d34d29f/URBOX.png"},{"n":"Salesforce Commerce","l":"https://images.ctfassets.net/6w2ezdyqwz4g/588P6y9zwLyAgRzKdt4dms/076c2b07fddc5f97bb4d0ba89dba2825/salesforce-svgrepo-com.png"},{"n":"VTex","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5N6Ky8jFwCH4JGoVeWHu0e/b4ebb3e2a0daa6ccbbf93860a877fddf/V-tex.png"},{"n":"Shopify","l":"https://images.ctfassets.net/6w2ezdyqwz4g/1GB15tXRkhx3u8zSJzfMeF/cf36d15a28323be99df969e05fae2174/Shopify.png"},{"n":"Sabre","l":"https://images.ctfassets.net/6w2ezdyqwz4g/6U7xghoEoNcsok9GPIHPlC/5b764bb068a7b60c39e7112b43394441/Sabre.png"},{"n":"Navitaire","l":"https://images.ctfassets.net/6w2ezdyqwz4g/51NaV1ocm3ASymjpiyivj2/64482c5c10ece746f8d725965cc1708c/Navitair.png"},{"n":"FLYR","l":"https://images.ctfassets.net/6w2ezdyqwz4g/59XVt85w8hTQCfrrytUa2z/e70a97eb219fe5696d333e7113ff5beb/Flyr.png"},{"n":"IDS PMS","l":"https://images.ctfassets.net/6w2ezdyqwz4g/1euGG6cWvcVKuCztoiL2Cl/9f5ad98f37b07b7b60d2eaa5958cc9b0/IDS_PMS.png"},{"n":"Protel","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2aagyczRCa216qKsyRP5WQ/3b2b7735827ddd8c321b945e0e76dbff/Protel.png"},{"n":"Cendyn CRS","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5Ng8ktGleRbwARsUNFylDm/3268997b5e6724975df63ea7a1343309/Cendyn.png"},{"n":"Concilio Labs","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3DaB4vXFoOlIGy3XXTMtok/c2541ee6e6c99986c2e08137af25eedd/Concillo_Labs.png"},{"n":"Micros","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2VJ4RsedIs1vq7sByIgk2E/e10da831f7e78b58b01a66697a8d0d67/Micros.png"},{"n":"Toshiba","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3vpEbA3kUJb87Q0SRNaxWl/e6f95e93836ed07f9e60882e8bb1b34c/Toshiba.png"},{"n":"WONDERSOFT","l":"https://images.ctfassets.net/6w2ezdyqwz4g/yRDTR6Jbm15yd28fScQXH/c0db7cad0f4695f6483eb91888319097/Wondersoft.png"},{"n":"SISPAY","l":"https://images.ctfassets.net/6w2ezdyqwz4g/40bjOd4DghgsfF3k9NAu7r/aeed88b5caf87a06ff8ece020ad35891/Sispa7y.png"},{"n":"INTEGRA","l":"https://images.ctfassets.net/6w2ezdyqwz4g/32ihTEQPaMwjsVTXsROyst/270b54261dd6cb4f3d08087c3632eebc/Integra.png"},{"n":"SMART POS","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5k5ZjphFe07e7qqR2nQzXG/e4d48cd6bcf81a4f6471b341339c59c5/Smart_POS_Software.png"},{"n":"Book4Time","l":"https://images.ctfassets.net/6w2ezdyqwz4g/2FKok9wHoReav9jv7mo8gF/506809bb08a2f79b673ee69bd6421d2e/Book4Time.png"},{"n":"Phi Commerce","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5i5Z7P8dc74xHGSZtguekm/846592bcdf6121508042672f849b96c9/Phi_Commerce.png"},{"n":"Fidel API","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3W12THTVvi0QnxGKmhoD8j/a8091482666009815140541f6b748eb3/Fidel_API.png"},{"n":"Orderpay","l":"https://images.ctfassets.net/6w2ezdyqwz4g/wFUiaIxPcitMrD79EywwT/75d9dbcca990d2afd1a191e8c483f471/ORDERPAY.png"},{"n":"Qlub","l":"https://images.ctfassets.net/6w2ezdyqwz4g/5AS2a1d6Rp6dDLd7aGKTUd/dff9e2793541cee2624a2ba50f4d8db9/Qlub.png"},{"n":"WhatsApp","l":"https://images.ctfassets.net/6w2ezdyqwz4g/48k1g3xNNYWSj4uTJJ7wP2/0fc981a36dd98f3f592ea67841377c70/Whatsapp.png"},{"n":"WeChat","l":"https://images.ctfassets.net/6w2ezdyqwz4g/9WNf6U90cnNC8OQTdxxYC/e75ace0e229bce9cd17905468615caed/We_chat.png"},{"n":"Google","l":"https://images.ctfassets.net/6w2ezdyqwz4g/7FiE6tfRljxxAakEI0kEDJ/c49051bbd55d27071f4d857ee86ef2cb/Google.png"},{"n":"Android","l":"https://images.ctfassets.net/6w2ezdyqwz4g/224NkQlP26SDiwBOX9yiOq/b22e211702a411cd09321b32dc235271/Android.png"},{"n":"DataBricks","l":"https://images.ctfassets.net/6w2ezdyqwz4g/vd4g4OGt6dUa0S6VMs1NR/2e5c49597bcaa9c92467ee176621be65/Databricks.png"},{"n":"Postgres","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3P9B2wSxSaIc1jIlJPCaRT/b6d764cd2fb932d2940c9a2bdd9d4d7c/Postgres.png"},{"n":"Redshift","l":"https://images.ctfassets.net/6w2ezdyqwz4g/3hndK2MWWTHpUCY35FzUot/1bb486ff7a60782a3c356da4ff0c571a/Amazon.png"},{"n":"GRID","l":"https://images.ctfassets.net/6w2ezdyqwz4g/57lw5FSu6zaXuLEl85EePD/6a5d4aeb3f27da34a308df6cc842fb3e/Grid.png"},{"n":"Vertica","l":"https://images.ctfassets.net/6w2ezdyqwz4g/4jZ6ALcAI9nrvU1xVRZbMx/0a8c62083bfe97c72009b20a066fab33/Vertica_Rivery.png"},{"n":"GrayMatter","l":"https://images.ctfassets.net/6w2ezdyqwz4g/23Qf4OUjWByXiynHMwOwqe/6d43f05b2a87e260290b3b8dfb18b979/Graymatter.png"}]</script>
424 <div class="ig-overlay"> <header class="section__head"> <span class="chip chip--accent">Integrations</span> <h2 style="text-wrap: balance; max-width: 22ch; margin-inline: auto;">Plays nice with the rest of your stack</h2> <p class="lede">100+ prebuilt integrations across CRM, Martech, PoS, PMS, PSS, ERP, IDPs, Commerce Media, eCommerce, Frontier AI, EDW, Social Media, Mobile tech, and more.</p> <div class="section__head-cta" style="display: flex; justify-content: center; margin-top: clamp(20px, 2.5vh, 32px);"> <a class="btn btn--primary" href="/integrations">See all integrations <span>&rarr;</span></a> </div> </header> </div> 
424<script type="module">(function(){var r=document.querySelector("[data-ig-grid]");if(!r)return;var y=document.querySelector("script[data-ig-logos]"),n=[];try{n=JSON.parse(y?y.textContent:"[]")}catch{}if(!n.length)return;for(var l=n.length-1;l>0;l--){var I=Math.floor(Math.random()*(l+1)),L=n[l];n[l]=n[I],n[I]=L}for(var O=r.getBoundingClientRect(),B=92,N=12,z=B+N,S=Math.max(6,Math.floor(O.width/z)),D=Math.ceil(n.length/S),C=document.createDocumentFragment(),u=0,M=0;M<D;M++){var f=document.createElement("div");f.className="ig-row";for(var E=0;E<S&&u<n.length;E++){var b=n[u],d=document.createElement("span");d.className="ig-tile",d.setAttribute("title",b.n||""),d.dataset.logoSrc=b.l,f.appendChild(d),u++}C.appendChild(f)}r.appendChild(C);var o=r.querySelectorAll(".ig-tile");function q(){var t=12,e=0;function i(){for(var a=Math.min(e+t,o.length);e<a;e++){var c=o[e];if(!(c.querySelector("img")||!c.dataset.logoSrc)){var v=document.createElement("img");v.src=c.dataset.logoSrc,v.alt="",v.loading="lazy",v.decoding="async",c.appendChild(v)}}e<o.length&&requestAnimationFrame(i)}requestAnimationFrame(i)}var A=!1;if("IntersectionObserver"in window){var R=new IntersectionObserver(function(t){t.forEach(function(e){e.isIntersecting&&!A&&(A=!0,q(),R.disconnect())})},{rootMargin:"300px 0px"});R.observe(r)}else q();var g=[];function h(){var t=r.getBoundingClientRect();g=[];for(var e=0;e<o.length;e++){var i=o[e],a=i.getBoundingClientRect();g.push({x:a.left-t.left+a.width/2,y:a.top-t.top+a.height/2})}}var m=-9999,p=-9999,w=null,s=!1;function G(){if(w=null,!!s)for(var t=280,e=0;e<o.length;e++){var i=g[e];if(i){var a=i.x-m,c=i.y-p,v=Math.sqrt(a*a+c*c),x=Math.max(0,1-v/t),X=x*x*(3-2*x),_=.32+X*.56;o[e].style.opacity=_.toFixed(3)}}}function T(){w===null&&(w=requestAnimationFrame(G))}if(r.addEventListener("pointermove",function(t){var e=r.getBoundingClientRect();m=t.clientX-e.left,p=t.clientY-e.top,T()}),r.addEventListener("pointerleave",function(){m=-9999,p=-9999,T()}),"IntersectionObserver"in window){var U=new IntersectionObserver(function(t){t.forEach(function(e){s=e.isIntersecting,s&&h()})},{rootMargin:"100px 0px"});U.observe(r)}else s=!0;var F;window.addEventListener("resize",function(){clearTimeout(F),F=setTimeout(h,200)}),setTimeout(h,50)})();</script>
424 </section> <section class="section section--pinnacle" id="pinnacle"> <div class="wrap"> <div class="pin-card"> <div class="pin-card__unicorn" aria-hidden="true"> <div class="orb-halo " aria-hidden="true" style="--oh-height:480px" data-astro-cid-6hxtnhf3> <div class="orb-halo__core" data-astro-cid-6hxtnhf3></div> <div class="orb-halo__ring" data-astro-cid-6hxtnhf3></div> <div class="orb-halo__orbit" data-astro-cid-6hxtnhf3> <span class="orb-halo__point orb-halo__point--a" data-astro-cid-6hxtnhf3></span> </div> <div class="orb-halo__orbit orb-halo__orbit--b" data-astro-cid-6hxtnhf3> <span class="orb-halo__point orb-halo__point--b" data-astro-cid-6hxtnhf3></span> </div> <div class="orb-halo__mask" data-astro-cid-6hxtnhf3></div> </div> </div> <header class="section__head"> <span class="chip chip--accent">Patents · Awards · Industry firsts</span> <h2 style="text-wrap: balance; max-width: 18ch; margin-inline: auto;">The pinnacle of loyalty innovation</h2> <p class="lede" style="max-width: 72ch; margin-inline: auto;">GRAVTY&reg; is the industry's only enterprise loyalty platform with USPTO-granted patents covering foundational capabilities that are becoming essential to modern loyalty ecosystems. Trusted by leading global brands, GRAVTY&reg; helps future-proof loyalty strategies in a rapidly evolving world.</p> </header> <!-- PATENTS · 4 cards in 2×2 grid, each is a hyperlink to its USPTO record --> <div class="pin-block"> <header class="pin-block__head"> <span class="chip chip--accent">Patents</span> <div class="pin-block__head-row"> <div class="pin-block__uspto" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/brand/uspto-seal.svg" alt="United States Patent and Trademark Office"> </div> <h3 class="pin-block__h">USPTO recognized firsts</h3> </div> </header>  <div class="patents-grid"> <article class="patent-card"> <div class="patent-card__icon" aria-hidden="true"> <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <rect x="3" y="3" width="7" height="7" rx="1.5"></rect> <rect x="14" y="3" width="7" height="7" rx="1.5"></rect> <rect x="3" y="14" width="7" height="7" rx="1.5"></rect> <path d="M14 17h7"></path><path d="M17 14v6"></path> </svg> </div> <div class="patent-card__eye">Patent · Visual Rules</div> <h4 class="patent-card__h">Industry's fastest path from strategy to campaign execution.</h4> <p class="patent-card__body">Simplify complex loyalty logic with our visual, drag-and-drop rules engine. Design, test, and deploy sophisticated rules with unparalleled ease and speed.</p> <div class="patent-card__actions"> <a class="patent-card__btn patent-card__btn--view" href="https://patents.google.com/patent/US10713016B1/en?assignee=loyalty+juggernaut&oq=loyalty+juggernaut" target="_blank" rel="noopener noreferrer">
425View patent
426<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M7 17L17 7"></path><path d="M8 7h9v9"></path> </svg> </a> <a class="patent-card__btn patent-card__btn--demo" href="https://www.youtube.com/watch?v=Ul-5MK-xSWg" target="_blank" rel="noopener noreferrer" aria-label="Watch the Visual Rules demo video on YouTube"> <svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M8 5v14l11-7z"></path></svg>
427Watch demo
428</a> </div> </article> <article class="patent-card"> <div class="patent-card__icon" aria-hidden="true"> <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 2l1.8 4.4L18 8l-4.2 1.6L12 14l-1.8-4.4L6 8l4.2-1.6L12 2z"></path> <path d="M19 14l1 2.4 2.4 1-2.4 1L19 21l-1-2.6-2.4-1 2.4-1 1-2.4z"></path> <path d="M5 14l1 2.4 2.4 1L6 18.4 5 21l-1-2.6-2.4-1L4 16.4 5 14z"></path> </svg> </div> <div class="patent-card__eye">Patent · Mass Individualization</div> <h4 class="patent-card__h">AI-powered individualization: 1:1 personalized experiences at scale.</h4> <p class="patent-card__body">Individualize every loyalty campaign across your entire member base dynamically. Automation that harnesses AI to effortlessly achieve what we call "mass individualization".</p> <div class="patent-card__actions"> <a class="patent-card__btn patent-card__btn--view" href="https://patents.google.com/patent/US11978082B1/en" target="_blank" rel="noopener noreferrer">
429View patent
430<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M7 17L17 7"></path><path d="M8 7h9v9"></path> </svg> </a> </div> </article> <article class="patent-card"> <div class="patent-card__icon" aria-hidden="true"> <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="9"></circle> <path d="M12 7v5l3 2"></path> <circle cx="12" cy="12" r="1.5" fill="currentColor"></circle> <path d="M3 12h2M19 12h2M12 3v2M12 19v2"></path> </svg> </div> <div class="patent-card__eye">Patent · Multidimensional First-Party Data</div> <h4 class="patent-card__h">Turn every customer behavior, influence, and transaction into actionable, multidimensional first-party intelligence.</h4> <p class="patent-card__body">Unlock precision targeting, innovative game mechanics and smarter engagement with high-impact, hard-to-detect insights. Our patented approach to generating <em>multidimensional</em> first-party data.</p> <div class="patent-card__actions"> <a class="patent-card__btn patent-card__btn--view" href="https://patents.google.com/patent/US11360748B2/en?assignee=loyalty+juggernaut&oq=loyalty+juggernaut" target="_blank" rel="noopener noreferrer">
431View patent
432<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M7 17L17 7"></path><path d="M8 7h9v9"></path> </svg> </a> </div> </article> <article class="patent-card"> <div class="patent-card__icon" aria-hidden="true"> <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 3l8 3v6c0 4.5-3.4 8.4-8 9.5C7.4 20.4 4 16.5 4 12V6l8-3z"></path> <path d="M9 12l2 2 4-4"></path> </svg> </div> <div class="patent-card__eye">Patent · Point Escrow</div> <h4 class="patent-card__h">AI-powered fraud prevention: ensure commercial integrity of your loyalty program.</h4> <p class="patent-card__body">Protect against financial loss, erosion of customer trust, and compromised program integrity with our patented, real-time, AI-powered fraud controls for the loyalty industry.</p> <div class="patent-card__actions"> <a class="patent-card__btn patent-card__btn--view" href="https://patents.google.com/patent/US12154103B1/en" target="_blank" rel="noopener noreferrer">
433View patent
434<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M7 17L17 7"></path><path d="M8 7h9v9"></path> </svg> </a> </div> </article> </div> </div> <!-- Featured testimonial #1 · WestJet migration result + performance --> <figure class="aws-card" data-brand="westjet"> <blockquote class="aws-card__text">
435We rolled everybody over in a day and a half, and then really no follow-up issues. We're very happy with the platform, the performance improvements we've seen, the successful migration, and the strength of the partnership overall.
436</blockquote> <figcaption class="aws-card__attr">  <div class="aws-card__attr-text"> <div class="aws-card__attr-name">Christine Woodcock</div> <div class="aws-card__attr-role">Loyalty Program Leader · WestJet Rewards</div> </div> <div class="aws-card__attr-brand" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/logos/westjet.webp" alt="WestJet"> </div> </figcaption> </figure> <!-- AWARDS · 3 GRAVTY product wins --> <div class="pin-block"> <header class="pin-block__head"> <span class="chip chip--accent">Awards</span> <h3 class="pin-block__h">Champions of loyalty excellence</h3> <p class="pin-block__lede">Our award-winning innovations, GRAVTY® Pulsar™, AI-Sense, and Visual Rules, consistently earn accolades from the industry's most revered authorities.</p> </header> <div class="awards-grid"> <a class="award-card" href="https://www.loyalty-and-awards.com/en/pages/2023-winners-176.html" target="_blank" rel="noopener noreferrer"> <div class="award-card__photo"> <img loading="lazy" decoding="async" src="/assets/awards-photos/pulsar.webp" alt="Loyalty Juggernaut team receiving the GRAVTY® Pulsar award at Loyalty & Awards, Rio de Janeiro."> </div> <div class="award-card__body-wrap"> <div class="award-card__trophy" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/awards-photos/golden-loyalty-awards.png" alt="Golden Loyalty Awards"> </div> <div class="award-card__eye">Award · Gen-AI Loyalty Agent · 2023</div> <h4 class="award-card__h"><span class="gravty-wordmark" role="img" aria-label="GRAVTY®"></span> Pulsar™</h4> <p class="award-card__body">Gen-AI powered loyalty agent that enhances human potential, driving creativity, efficiency, and innovation. Transforms how loyalty professionals deliver personalized experiences.</p> </div> </a> <a class="award-card" href="https://www.loyalty-and-awards.com/en/pages/2022-winners-164.html" target="_blank" rel="noopener noreferrer"> <div class="award-card__photo"> <img loading="lazy" decoding="async" src="/assets/awards-photos/ai-sense.webp" alt="Loyalty Juggernaut team receiving the GRAVTY® AI-Sense award at Loyalty & Awards, Madrid."> </div> <div class="award-card__body-wrap"> <div class="award-card__trophy" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/awards-photos/golden-loyalty-awards.png" alt="Golden Loyalty Awards"> </div> <div class="award-card__eye">Award · AI Monitoring · 2022</div> <h4 class="award-card__h"><span class="gravty-wordmark" role="img" aria-label="GRAVTY®"></span> AI-Sense</h4> <p class="award-card__body">AI-powered monitoring framework to detect, alert, and remedy anomalies. Ensures commercial integrity and operational reliability of your loyalty program.</p> </div> </a> <a class="award-card" data-photo="visual-rules" href="https://www.loyalty-and-awards.com/en/pages/2021-winners-142.html" target="_blank" rel="noopener noreferrer"> <div class="award-card__photo"> <img loading="lazy" decoding="async" src="/assets/awards-photos/visual-rules.webp" alt="Loyalty Juggernaut team receiving the GRAVTY® Visual Rules award at Loyalty & Awards, Dubai."> </div> <div class="award-card__body-wrap"> <div class="award-card__trophy" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/awards-photos/golden-loyalty-awards.png" alt="Golden Loyalty Awards"> </div> <div class="award-card__eye">Award · Visual Rules · 2021</div> <h4 class="award-card__h"><span class="gravty-wordmark" role="img" aria-label="GRAVTY®"></span> Visual Rules</h4> <p class="award-card__body">Easy-to-use interface to implement highly innovative and differentiated strategies that drive engagement, profitable customer behaviors, lifetime value, and profitability.</p> </div> </a> </div> </div> <!-- Featured testimonial #2 · GHA DISCOVERY · LJI-as-partner --> <figure class="aws-card" data-brand="gha"> <blockquote class="aws-card__text">
437LJI was not trying to put us into their box. They were adapting to our needs. There were functionalities that we didn't even think about.
438</blockquote> <figcaption class="aws-card__attr">  <div class="aws-card__attr-text"> <div class="aws-card__attr-name">Folker Heim</div> <div class="aws-card__attr-role">Chief Operating Officer · Global Hotel Alliance · GHA DISCOVERY</div> </div> <div class="aws-card__attr-brand" aria-hidden="true"> <img loading="lazy" decoding="async" src="/assets/logos/gha-discovery.webp" alt="GHA DISCOVERY"> </div> </figcaption> </figure> <!-- ANALYST RECOGNITION --> <div class="pin-block"> <header class="pin-block__head"> <span class="chip chip--accent">Analyst recognition</span> <h3 class="pin-block__h">
438Recognized by leading industry analysts</h3> <p class="pin-block__lede">Gartner and Forrester recognize Loyalty Juggernaut and GRAVTY® as a leading loyalty technology and full-service provider.</p> </header> <div class="analyst-grid"> <article class="analyst-card" data-brand="gartner"> <img loading="lazy" decoding="async" class="analyst-card__logo" src="/assets/awards/gartner-logo.png" alt="Gartner"> <h4 class="analyst-card__h">Market Guide for Loyalty Program Vendors, 2025</h4> <p class="analyst-card__body">Listed as a representative vendor.</p> </article> <article class="analyst-card" data-brand="forrester"> <img loading="lazy" decoding="async" class="analyst-card__logo" src="/assets/awards/forrester-logo.png" alt="Forrester"> <h4 class="analyst-card__h">Loyalty Technology Solutions Landscape, 2025</h4> <p class="analyst-card__body">Strong Performer in The Forrester Wave™ · Loyalty Platforms, Q4 2025.</p> </article> </div> </div> </div><!-- /.pin-card --> </div> </section> </main> <div class="outro-stage" data-astro-cid-bapavatq> <!-- Outro WebGL Unicorn scene removed per 2026-05-28 LJI round 2 ask.
439        Dinesh's M5 MacBook fan was spinning up on this scene. Replaced
440        with a simplified pure-CSS glow + soft horizon line. Keeps the
441        same vibe (deep teal aurora at the bottom) at <1% the GPU cost. --> <div class="outro-stage__scene outro-stage__scene--lite" aria-hidden="true" data-astro-cid-bapavatq> <span class="outro-stage__horizon" data-astro-cid-bapavatq></span> <span class="outro-stage__halo" data-astro-cid-bapavatq></span> <span class="outro-stage__pulse" data-astro-cid-bapavatq></span> </div> <section class="section section--about section--final" id="company" data-astro-cid-bapavatq> <div class="wrap" data-astro-cid-bapavatq> <header class="section__head" data-astro-cid-bapavatq> <h2 style="text-wrap: balance; max-width: 22ch; margin-inline: auto;" data-astro-cid-bapavatq>The real risk is <span class="accent" data-astro-cid-bapavatq>inaction</span></h2> <p class="section--final__sub" style="max-width: 56ch; margin: clamp(16px, 2vh, 24px) auto 0; font-family: var(--sans); font-size: clamp(14px, 1vw, 16px); line-height: 1.65; color: rgba(255,255,255,0.62); text-align: center; font-weight: 400;" data-astro-cid-bapavatq>
442Loyalty technology is moving fast. Agentic AI, ecosystem orchestration, and real-time intelligence are reshaping how the next generation of programs work. The sooner you start, the more you'll shape what's coming.
443</p> <div class="section--final__actions" data-astro-cid-bapavatq> <a class="btn btn--primary" href="/contact-us" data-astro-cid-bapavatq>Contact us <span data-astro-cid-bapavatq>→</span></a> </div> </header> <div class="globe globe--interactive" aria-hidden="true" data-orb data-astro-cid-bapavatq> <div class="globe__sphere" data-astro-cid-bapavatq></div> <div class="globe__atmosphere" data-astro-cid-bapavatq></div> <div class="globe__ring" data-astro-cid-bapavatq></div> <div class="globe__ring globe__ring--2" data-astro-cid-bapavatq></div> <div class="globe__stars" data-astro-cid-bapavatq></div> </div> </div> </section></div> <footer class="site-footer" data-astro-cid-jxwxk3jy> <div class="footer__inner" data-astro-cid-jxwxk3jy> <div class="footer__brand" data-astro-cid-jxwxk3jy> <a href="/" class="nav__logo" aria-label="Loyalty Juggernaut" data-astro-cid-jxwxk3jy> <img loading="lazy" decoding="async" src="/assets/brand/lji-logo-horizontal.svg" alt="Loyalty Juggernaut" data-astro-cid-jxwxk3jy> </a> <p class="small" style="max-width:32ch;" data-astro-cid-jxwxk3jy>Enterprise loyalty platform. Agentic AI. Real-time intelligence. Built on GRAVTY&reg;.</p> </div> <div class="footer__col" data-astro-cid-jxwxk3jy> <h4 data-astro-cid-jxwxk3jy>Platform</h4> <ul data-astro-cid-jxwxk3jy> <li data-astro-cid-jxwxk3jy><a href="/technology" data-astro-cid-jxwxk3jy>Technology</a></li> <li data-astro-cid-jxwxk3jy><a href="/integrations" data-astro-cid-jxwxk3jy>Integrations</a></li> <li data-astro-cid-jxwxk3jy><a href="/agentic-ai-compass" data-astro-cid-jxwxk3jy>Agentic AI Compass</a></li> </ul> </div>
443 <div class="footer__col" data-astro-cid-jxwxk3jy> <h4 data-astro-cid-jxwxk3jy>Solutions</h4> <ul data-astro-cid-jxwxk3jy> <li data-astro-cid-jxwxk3jy><a href="/solutions/retail" data-astro-cid-jxwxk3jy>Retail loyalty</a></li> <li data-astro-cid-jxwxk3jy><a href="/solutions/airline" data-astro-cid-jxwxk3jy>Airline loyalty</a></li> <li data-astro-cid-jxwxk3jy><a href="/guides/coalition-loyalty" data-astro-cid-jxwxk3jy>Ecosystem loyalty</a></li> <li data-astro-cid-jxwxk3jy><a href="/enterprise-growth-platform" data-astro-cid-jxwxk3jy>Enterprise Growth Platform</a></li> <li data-astro-cid-jxwxk3jy><a href="/compare" data-astro-cid-jxwxk3jy>Compare platforms</a></li> </ul> </div> <div class="footer__col" data-astro-cid-jxwxk3jy> <h4 data-astro-cid-jxwxk3jy>Learn</h4> <ul data-astro-cid-jxwxk3jy> <li data-astro-cid-jxwxk3jy><a href="/egp/customer-engagement" data-astro-cid-jxwxk3jy>Customer engagement</a></li> <li data-astro-cid-jxwxk3jy><a href="/egp/customer-lifetime-value" data-astro-cid-jxwxk3jy>Customer lifetime value</a></li> <li data-astro-cid-jxwxk3jy><a href="/egp/segmentation" data-astro-cid-jxwxk3jy>Customer segmentation</a></li> <li data-astro-cid-jxwxk3jy><a href="/guides/brand-loyalty" data-astro-cid-jxwxk3jy>Brand loyalty</a></li> <li data-astro-cid-jxwxk3jy><a href="/guides/customer-retention" data-astro-cid-jxwxk3jy>Customer retention</a></li> <li data-astro-cid-jxwxk3jy><a href="/guides" data-astro-cid-jxwxk3jy>All guides</a></li> </ul> </div> <div class="footer__col" data-astro-cid-jxwxk3jy> <h4 data-astro-cid-jxwxk3jy>Resources</h4> <ul data-astro-cid-jxwxk3jy> <li data-astro-cid-jxwxk3jy><a href="/resources" data-astro-cid-jxwxk3jy>All resources</a></li> <li data-astro-cid-jxwxk3jy><a href="/blog" data-astro-cid-jxwxk3jy>Blog</a></li> <li data-astro-cid-jxwxk3jy><a href="/glossary" data-astro-cid-jxwxk3jy>Loyalty glossary</a></li> <li data-astro-cid-jxwxk3jy><a href="/directory" data-astro-cid-jxwxk3jy>Programs directory</a></li> <li data-astro-cid-jxwxk3jy><a href="/events" data-astro-cid-jxwxk3jy>Events</a></li> <li data-astro-cid-jxwxk3jy><a href="/news" data-astro-cid-jxwxk3jy>News</a></li> </ul> </div> <div class="footer__col" data-astro-cid-jxwxk3jy> <h4 data-astro-cid-jxwxk3jy>Company</h4> <ul data-astro-cid-jxwxk3jy> <li data-astro-cid-jxwxk3jy><a href="/about-us" data-astro-cid-jxwxk3jy>About</a></li> <li data-astro-cid-jxwxk3jy><a href="/contact-us" data-astro-cid-jxwxk3jy>Contact</a></li> <li data-astro-cid-jxwxk3jy><a href="/locations" data-astro-cid-jxwxk3jy>Locations</a></li> <li data-astro-cid-jxwxk3jy><a href="/policies" data-astro-cid-jxwxk3jy>Trust &amp; policies</a></li> </ul> </div> </div> <div class="footer__base" data-astro-cid-jxwxk3jy> <span data-astro-cid-jxwxk3jy>&copy; 2026 Loyalty Juggernaut &middot; GRAVTY&reg; is a registered trademark.</span> <span data-astro-cid-jxwxk3jy><a href="/privacy-policy" data-astro-cid-jxwxk3jy>Privacy</a> &middot; <a href="/terms-of-service" data-astro-cid-jxwxk3jy>Terms</a> &middot; <a href="/cookie-policy" data-astro-cid-jxwxk3jy>Cookies</a> &middot; <a href="/policies" data-astro-cid-jxwxk3jy>Trust</a> &middot; <a href="/sitemap" data-astro-cid-jxwxk3jy>Sitemap</a></span> </div> </footer>  
443<script src="/cinematic-scripts.js" defer></script>
443 
443<script type="module" src="/cinematic-forrester-beam.mjs"></script>
443 
443<script type="module" src="/cinematic-platform-flare.mjs"></script>
443 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.