How We Search 70+ Airlines in Under 3 Seconds
Pointify Team
March 26, 2026
When you search for a flight on Pointify, a lot happens in the 2-3 seconds before results start appearing. Here's a technical overview of our search architecture.
The Deal Engine
Our backend is a Python FastAPI service we call the "deal engine." When a search request arrives, it fans out to multiple data sources in parallel:
- Duffel NDC — Direct airline connections for real-time pricing from 300+ airlines
- Google Flights scraper — Browser automation with Playwright for fare data Google aggregates
- Award databases — Seats.aero and custom scrapers for points availability across loyalty programs
- Transfer partner calculations — Real-time computation of optimal transfer paths from credit card programs
Server-Sent Events (SSE)
Rather than waiting for all sources to respond, we stream results to the browser as they arrive using Server-Sent Events. The first results from Duffel typically appear in under 1 second. Google Flights data follows around 2-3 seconds later. Award availability trickles in over the next few seconds.
This gives users an instant sense of progress — you see results building up in real time rather than staring at a spinner.
Points Optimization Layer
For every cash fare we find, our points optimizer runs a parallel calculation: "Could this route be cheaper with points?" It checks 20+ loyalty programs, considers current transfer bonuses, and computes the cents-per-point value so you can make an informed decision.
Infrastructure
The deal engine runs on Python with async I/O for concurrent API calls. The frontend is Next.js deployed on Vercel with edge functions for the API proxy layer. PostgreSQL handles search history and user data, Redis powers caching and rate limiting.
The entire search pipeline — from your click to the first result on screen — averages 800ms.