DEV Community

Wae Luxe
Wae Luxe

Posted on

Why I Built an eSIM Comparison Tool Instead of Just Selling Plans

The Tempting Path: Just Be a Storefront

When I started building iWanteSIM, the obvious move was to slap together a product page, list some eSIM plans, and call it a day. That's what most resellers do. You sign up for a whitelist or API partnership with a carrier aggregator, get a catalog of plans, and you're basically a middleman with a checkout button.

And honestly? That model works. Plenty of eSIM resellers make decent revenue doing exactly that. But the more I looked at the landscape, the more I noticed something missing: trust.

The eSIM market in 2026 is confusing. There are hundreds of plans across dozens of carriers, each with different coverage zones, data caps, validity periods, and pricing models. A traveler heading to Japan could spend an hour comparing options across five different reseller sites — each one only showing the plans they profit from most.

I didn't want to build another site like that.

Person thinking with gears turning

The Core Question: What Does a Traveler Actually Need?

I talked to friends, read Reddit threads, and lurked in travel forums. The pattern was clear: travelers don't want to be sold to. They want to understand their options and make an informed choice. The pain points were remarkably consistent:

  • Hidden caveats: Plans advertised as "unlimited" with throttling after 2GB. Plans that claim "covers Europe" but exclude half the countries you're visiting.
  • Comparison fatigue: Opening six browser tabs to compare data allowances, validity windows, and per-GB pricing across providers.
  • Post-purchase regret: Buying a plan, landing at your destination, and discovering a cheaper or better option existed that the reseller never showed you. Every single pain point came down to one thing: information asymmetry. The seller knows the full catalog. The buyer sees only what the seller chooses to display. That's not a bug in the eSIM industry — it's the business model.

I decided to break it.

Building the Comparison Tool: What It Actually Does

Instead of a storefront that shows you a curated subset of plans, I built a comparison engine that shows you everything. Here's what that means in practice:

Full catalog transparency. Every plan available through the platform is listed — including the ones with thin margins for us. If a competitor's plan is cheaper for your specific route, it shows up in the results. You can browse the complete plan catalog at the iWanteSIM sitemap, which indexes every plan by region and country.

Apples-to-apples comparison. The tool normalizes pricing to per-GB cost, shows real coverage maps (not marketing copy), and flags throttling thresholds and fair-use policies in plain language. No asterisks. No "see terms and conditions" links buried in fine print.

Route-based recommendations. You enter your destinations and travel dates, and the engine ranks plans by actual fit — not by commission rate. A 3-day trip to Singapore gets different recommendations than a 30-day backpacking trip across Southeast Asia, even if some plans technically "cover" both.

Person working on laptop with code

The Technical Side: What I Built With

I won't pretend this was some grand architectural achievement. The stack is intentionally boring:

  • Frontend: Next.js with server-side rendering for SEO. The comparison table is a React component that handles sorting and filtering client-side after initial server render.
  • Data layer: A scheduled sync job pulls plan catalogs from carrier aggregator APIs every 6 hours and stores them in a normalized schema. This was the hardest part — every provider has a different data format, different coverage definitions, and different naming conventions for the same countries.
  • Search: Country and region matching uses a simple but effective geo-graph that maps ISO country codes to travel regions. "Western Europe" means the same thing whether a carrier calls it "EU Zone 1" or "Schengen Bundle."
  • Pricing normalization: Every plan gets a computed per_gb_cost and per_day_cost field. Plans with throttled "unlimited" data use the throttle threshold as the effective data cap for comparison purposes. The code isn't open source (yet), but the full plan index is crawlable and each plan has a structured data page with consistent fields. If someone wanted to build their own comparison layer on top of it, they could.

Why Transparency Is a Feature, Not a Sacrifice

Here's the part that surprised me: showing competitor plans didn't kill our revenue. It grew it.

In the first three months after launching the comparison tool, conversion rates went up, not down. Users spent more time on the site. Return visits doubled. Refund requests dropped to near zero.

The psychology is straightforward. When you show someone every option — including ones that don't favor you — two things happen:

  1. They trust you. If you're willing to show a cheaper alternative, you're probably not hiding something about the plan you're recommending.
  2. They buy faster. The comparison paralysis disappears when the tool does the heavy lifting. Users don't need to open six tabs. The decision is made on your site, and the checkout is right there. This is what I mean by "transparency as a feature." It's not a moral stance — it's a product strategy. In a market defined by information asymmetry, the platform that eliminates it becomes the default starting point for every traveler.

Success kid meme

What I'd Do Differently

A few honest lessons from the build:

Country-matching is harder than it looks. Carriers have wildly inconsistent coverage definitions. One provider's "Asia" package covers 12 countries. Another's covers 6 — but includes China, which the first one excludes. The geo-graph I built handles maybe 90% of cases well. The last 10% still requires manual review, and I get occasional emails from users in edge-case countries. It's not perfect.

Caching vs. freshness is a real tension. Syncing every 6 hours means pricing can be stale during carrier flash sales. Syncing every hour would hammer the aggregator APIs and blow through rate limits. I settled on 6-hour syncs with a manual refresh button, but I'm exploring webhook-based updates for real-time pricing on high-traffic routes.

Comparison tables are a UX nightmare on mobile. A 7-column comparison table doesn't fit on a phone screen. I spent more time on the mobile experience — collapsible columns, card-based layouts, swipe interactions — than on the actual data pipeline. If I were starting over, I'd design mobile-first from day one.

What's Next

The comparison tool is live and working, but it's version 1. The roadmap includes:

  • User reviews and real-world speed tests: Aggregating actual user-reported speeds per plan per country, not just the "up to" marketing claims.
  • Multi-trip planning: If you travel to Japan in March and Europe in June, the tool should recommend a single global plan if it's cheaper than two regional ones.
  • API access: Letting other travel platforms embed the comparison engine. If transparency is the product, it should be shareable.

The Takeaway

If you're building a product in a market that runs on information asymmetry, consider whether your default move should be to eliminate it rather than exploit it. The storefront model is easy. The comparison model is harder — you're building a data pipeline, a normalization layer, and a UX that handles complexity gracefully. But the payoff is a product people actually trust.

Travelers don't need another reseller. They need someone who'll show them the whole menu, not just the high-margin items. That's the bet I made with iWanteSIM, and so far, it's paying off.

FAQ

Why not just list the plans you make the most money on?
Because that's the exact problem travelers are trying to escape. Showing the full catalog — including cheaper alternatives — builds trust, and trust drives conversions. Short-term margin optimization kills long-term retention.

How does the comparison tool handle plans from different aggregators?
All plan data is normalized into a shared schema during the sync process. Country coverage is mapped through a geo-graph that translates carrier-specific zone names into standard ISO country codes. Pricing is normalized to per-GB and per-day cost for apples-to-apples comparison.

Is the comparison data real-time?
Not yet. Plan catalogs sync every 6 hours from carrier aggregator APIs. There's a manual refresh option, and I'm working on webhook-based updates for real-time pricing on popular routes.

Can I use the comparison tool without buying a plan?
Yes. The comparison and search features are completely free to use with no account required. You only hit the checkout flow if you choose to purchase a plan.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.