Fintech
Building a Points Valuation Engine - Normalizing 15+ Airline Currencies into Unified Search
Avios, SkyMiles, and MileagePlus do not carry the same value. Flynt's valuation engine converts more than 15 airline loyalty currencies into cash-equivalent values so users can compare what their points are worth. It is configuration-driven, runs on the client, and completes in under 50ms.
- Topic
- Fintech
- Year
- Read
- 6 min
The core problem
system cutThe solution
The solution is a TypeScript valuation engine that runs inside the React Native app. It makes no server round trip, works offline, and runs in under 50ms on lower-end devices.
ARCHITECTURE
- Airline configuration in JSON rather than code:
Each airline programme lives in one configuration object:
{ airline: 'British Airways', currency: 'Avios', baseCpp: 1.2, sweetSpots: [{ route: 'short-haul-europe', multiplier: 1.5 }], transferPartners: ['Chase UR (1:1)', 'Amex MR (1:1)'] }Adding an airline means adding its JSON configuration, with no logic change. The update ships through Expo OTA.
- The valuation formula:
cashValue is calculated from points, baseCpp, sweetSpotMultiplier, and transferBonus.
baseCppis the cents-per-point baseline, such as 1.2 cents for AviossweetSpotMultiplieris a route-specific factor, such as 1.5 for short-haul Europe on British AirwaystransferBonusreflects the active transfer offer, such as a 30% Chase-to-British-Airways promotion
- Search integration:
- Award search returns the raw points cost for each airline
- The valuation engine assigns a cash-equivalent value to each result
- Results are sorted by cash value rather than raw points
- A user can compare 25,000 Avios at $300 with 22,000 SkyMiles at $242
- User overrides:
- Advanced users can adjust
baseCppfor each programme - Their preferences are stored with Zustand and AsyncStorage
- The result can reflect a user's own approach to point valuations
PERFORMANCE
- The engine uses pure functions, has no dependencies, and can be tree-shaken
- The p99 benchmark is under 50ms on an iPhone SE from 2020 and a Pixel 6a
useMemokeys the calculation to the configuration hash, so it only runs again when that configuration changes
DEPLOYMENT
- Expo EAS Update delivers new airline sweet spots or transfer bonuses without an App Store review
- The configuration schema is versioned. The app validates it on load and falls back to the bundled version if it is invalid.