Show how Redis assembles the Passenger 360 — miles balance, expiration urgency, upgrade eligibility, tier momentum, and seat inventory — fast enough to deliver a personalized upgrade offer at check-in instead of a generic banner. The decision is not whether an upgrade is available. The decision is whether this passenger, with this miles balance, with these miles expiring, with this seat availability window, should get the offer right now.
Airlines already have the miles balance, the seat inventory, and the expiration data. The problem is that none of it assembles fast enough to change the offer before the check-in screen renders — so every passenger sees the same upgrade banner regardless of whether they have 500 miles or 50,000. What I'm going to show you is what happens when Marcus Webb's expiring miles, his open upgrade window, and his path to Platinum status all come together in under 12 milliseconds, and the right offer lands while he's still on the check-in screen.
At the top are the systems Apex Airways already has — the PNR, loyalty management, seat inventory, partner earn, revenue management, and event streams. None of them go away. RDI keeps passenger state and miles balance always fresh in Redis. Redis FeatureForm serves the loyalty features online. In the Unified Context Layer, Redis Context Retriever assembles the Passenger 360 — miles balance, tier status, expiration windows, seat availability — and exposes it as structured MCP tools for the decision engine. The output actions are four paths: miles upgrade, miles plus co-pay, bonus miles offer, or tier nudge. This is not a static upgrade banner. This is a ranked loyalty decision for each passenger.
Let me show you the specific passenger moment this decision serves.
Marcus Webb is a Gold-tier member with 47,200 miles. He has never redeemed them. He has 8,200 miles expiring in 23 days. He just checked in for AP-847, JFK to LAX, six hours before departure — and two business class seats are open. The upgrade window closes in two hours. Redis has under 12 milliseconds to assemble his Passenger 360 and surface the right offer before the confirmation screen renders. Most airlines would show Marcus the same banner they show every economy passenger. This demo shows what happens when they don't.
Let's look at how the data stays always fresh before the offer fires.
The ingest layer keeps everything always fresh. RDI synchronizes PNR state, miles balance, and seat inventory continuously — no batch jobs, no stale reads. Redis FeatureForm serves the upgrade propensity and expiration urgency features with train-serve parity. The seat inventory is real-time streaming — when a business seat is taken, Redis knows immediately. Context Retriever has already compiled the Passenger 360 schema and the MCP tools are ready before Marcus hits check-in.
This is where the three signals converge. Let me show you.
This is where the Passenger 360 comes together. On the left: Marcus's durable context. 47,200 miles — 22,200 above the upgrade threshold. He has never used his miles. Tier qualification: 14,800 EQM from Platinum, and a business class segment earns 1.5x EQM. On the right: the live flight context. 8,200 miles expire in 23 days — that's the urgency. Two business seats remaining. The upgrade window closes in two hours. Load factor is 94%, which means the revenue management signal favors converting this seat. Three signals converge: expiring miles, seats available, Platinum within reach. The right offer is obvious — if the system can see all three at once.
Now let's look at the features that feed the upgrade offer ranking.
These are the 52 features Redis FeatureForm serves in 1.7 milliseconds. Miles surplus at 0.89 — Marcus is well above threshold. Expiration urgency at 0.84 — 8,200 miles expiring in 23 days is a strong signal. Upgrade acceptance predictor at 0.71 — this is his first offer, so it's based on segment peers rather than personal history. Tier velocity at 0.68 — he's making progress toward Platinum but the pace is moderate. Seat yield at 0.77 — load factor supports the conversion. Co-pay sensitivity at 0.62 — the miles-only path is preferred given the surplus.
Here's the ranked decision that comes out of all of that context.
The NBA ranker evaluates four paths. Miles upgrade wins at 83% confidence. The logic is clean: Marcus has 47,200 miles — 22,200 above threshold after upgrade. He has 8,200 expiring in 23 days. Two business seats remain and the window closes in two hours. Using 25,000 miles eliminates most of the expiration risk, earns 1.5x EQM toward Platinum, and converts a dormant loyalty member into an active one. The miles-plus-co-pay option is valid but the surplus makes it unnecessary. The generic banner is suppressed — it ignores all three converging signals.
Let's look at what this means for the airline's loyalty economics.
The business case has two sides. Revenue: a business seat is filled at upgrade yield — better than leaving it empty. Loyalty: Marcus redeems miles for the first time, activating a previously dormant member and reducing expiration loss. The EQM acceleration means he's now closer to Platinum, which increases his future lifetime value. The number that's easy to overlook is the personalization lift — upgrade offers personalized to expiration urgency and tier context convert at a significantly higher rate than generic banners. Redis makes that personalization possible in the check-in window.
Here's the before and after — same passenger, completely different offer.
Left side: Marcus sees the same upgrade banner as every other economy passenger. It shows a cash price. His miles balance isn't shown. He ignores it, checks in, and his 8,200 miles continue toward expiry. Right side: the offer is built around Marcus. It shows his miles balance, the expiration window, the Platinum progress signal, and the seat availability urgency. He sees a reason to act — and he does. Same passenger, same data, completely different offer because Redis assembled the Passenger 360 in under 12 milliseconds.
Let me bring the architecture back up and close the loop.
The systems stay exactly where they are. PNR, loyalty management, seat inventory, partner earn, and revenue management all remain the systems of record. Redis becomes the operational context layer between those systems and the loyalty decisioning stack. The Passenger 360 assembles in under 12 milliseconds. The offer is contextual instead of generic. That is the difference between a loyalty program that engages customers and one that accumulates unused miles until they expire.