Case study · Travel tech
ShopMyESIM: an eSIM price comparison platform for travellers.
ShopMyESIM helps travellers find the cheapest eSIM data plan for a trip. It compares live plans from 7 eSIM brands, 5,000+ plans across 190+ countries, converts each to price per GB and cost per day, and links to the brand’s own checkout through a tracked affiliate link. I led the build over about 8 weeks, including traveller accounts, email capture with trip reminders, an eSIM phone checker and a 14-module admin console.
My role
Lead developer: product design, the full-stack build, the data pipelines, infrastructure and the client handover.
- Client
- ShopMyESIM
- Sector
- Travel tech
- When
- Sep to Nov 2026, about 8 weeks so far
- Live
- shopmyesim.com
The problem
A traveller choosing an eSIM has to compare plans across many brands. ShopMyESIM had to put every plan on the same terms, price per GB and cost per day, using only real pricing data.
That data had to stay live across seven brands without a bad sync emptying the catalogue, and the team running the site needed its own console to manage it.
What I did
- Built a trip planner (where, how long, how much data) that suggests a data allowance and opens results already filtered to that trip.
- Built destination search that matches alternative country names, dual-range slider filters, sorting, side-by-side comparison, region pages for multi-country plans and provider profiles.
- Tracked clickouts with affiliate sub-IDs and UTM tags, and added a sticky trip bar that keeps the trip summary and lowest price on screen while scrolling.
- Brought in live plans from 7 brands: Airalo, Holafly, Nomad, Jetpac, Yesim, Roamless, and one more through its partner API. That is 5,000+ plans across 190+ countries, with full price history and automatic archiving of discontinued plans.
- Added sync safety checks: a sync that would archive more than half a brand’s plans is cancelled, a sync with zero usable plans fails instead of reporting success, and fetching stops when a site starts blocking requests.
- Built “Email me these plans” and “Email me this comparison”, a trip reminder sent 3 days before departure with fresh prices, and an eSIM phone checker that recognises the visitor’s device (iOS version, Android client hints, Samsung model codes). None of it needs an account, and all of it has consent tracking, one-click unsubscribe, rate limits and spam protection.
- Wrote the traveller authentication myself, with scrypt password hashing and hashed session tokens. Travellers save plans and see how the price has moved since, save searches and delete their own account.
- Built an operations console of 14 admin modules with role-based access (Super Admin, Editor, Analyst): KPI dashboard, catalogue editing, CSV import, promotions, ranking controls, clickout log, traveller CRM, leads, API sync controls, team management, system health and an audit log.
- Traced page hangs and intermittent 500 errors to Supabase’s connection pooler. I measured 15 of 18 requests hanging in transaction mode against 0 of 18 in session mode, and switched the app to session mode.
- Moved the serverless functions into the same region as the database, so each page makes one cross-region hop instead of one per query.
- Found Supabase’s default REST API exposing admin password hashes and session tokens, and wrote a lockdown script that revokes 208 grants.
- Fixed Airalo prices arriving in yen, because the sync ran from a Tokyo server, by forcing USD pricing.
- Set up 100+ automated browser checks across 5 test suites, scripted WCAG AA contrast checks, 44px touch targets and loading skeletons.
- Wrote the scope, a 25 to 30 day timeline and a testing plan for the client as a branded PDF, and took the design through three iterations to the ShopMyESIM brand: logo, palette, icons and link previews.
- Wrote a handover pack: an owner guide, an operator walkthrough of every admin screen, developer notes, an email setup guide and an API requirements document for partner brands.
Timeline
Sep to Nov 2026, about 8 weeks so far. The work continues.
14 to 15 Sep 2026
MVP: the public site, accounts, admin console and deploy tooling.
5 to 12 Oct 2026
Design: design system, destination photography, UI polish and a redesign.
13 Oct 2026
Hardening: fixed the pooler errors and hangs, and moved the functions next to the database.
26 to 28 Oct 2026
Real data and launch: the partner API, website syncs for 3 brands, the ShopMyESIM brand, go-live and handover.
3 to 10 Nov 2026
Growth features: email capture, trip reminders, the phone checker, the sticky trip bar and Mumbai infrastructure.
11 Nov 2026
Catalogue expansion: added Jetpac, Yesim and Roamless.
Results
- eSIM brands compared
- 7
- Plans
- 5,000+
- Countries
- 190+
- Admin modules
- 14
- Automated browser checks
- 100+
Need something like this?
Tell me what you’re building. I reply within one working day, and the person who replies is the person who writes the code.


