Every ranking is calculated live from your inputs. There are no editorial picks, sponsored placements, or city-wide averages. The same card can rank first for one person and fifth for another.
The Fit Score: how it's calculated
Each card receives a Fit Score from 0 to 100 built in three stages. The inputs are
S (avg saving per matched outing), C (coverage, meaning the fraction
of your selected restaurants this card covers), and D (day-fit, meaning the fraction
of your selected dining days this card's offers apply on).
Stage 1: Savings-strength index (E)
Raw saving per outing is blended with coverage using a square-root curve, so a card with
strong deals and partial coverage still earns meaningful credit, while full-coverage cards
are rewarded most:
E = S × (0.35 + 0.65 × √C)
At full coverage (C = 1) this equals S. At half coverage (C = 0.5) it equals ~0.81 × S
rather than 0.5 × S, preserving more signal from high-saving cards.
Stage 2: Peer-relative normalization (Ns)
E is normalized against the 95th-percentile E across all visible cards in your current
search. Using P95 instead of the single best card prevents one outlier from compressing
everyone else toward zero:
Ns = min(1, E ÷ P95(E))
Cards at or above the 95th percentile get Ns = 1. Cards below are scored
proportionally. This keeps scores spread out even when one card dominates the field.
Stage 3: Weighted composite (R → Fit Score)
Three components are combined and scaled to the 20 to 100 range:
65%
Normalized savings strength (Ns)How this card's savings-adjusted-for-coverage compares to the best cards in your search. The dominant driver of ranking.
25%
Restaurant coverage (C)What fraction of your selected restaurants this card covers. A card covering 5 of your 5 restaurants beats one covering 1 of 5, even if that single deal is strong.
10%
Day alignment (D)How well the card's offer days match your selected dining days. An offer valid only Tuesday to Thursday scores poorly if you always dine on weekends.
R = 0.65 × Ns + 0.25 × C + 0.10 × D Fit Score = 20 + 80 × R
The qualification adjustment (+/- 15 pts)
The score above is the "base" fit. If you provide your monthly salary or account balance,
the tool applies a ±15 point adjustment based on how well you meet the
card's qualification requirements:
Strong qualification (+15): If you meet the requirements with high confidence (typically 75%+), the score rises by up to 15 points.
Marginal qualification (0 to +7): If you meet the requirements with moderate confidence, you get a smaller boost in proportion to your match.
Below requirements (-7 to -15): If you fall below the requirements, the score drops proportionally. The card is hidden if you turn on "Eligibility Mode".
Alternative requirements: Pakistani bank cards often have multiple paths to qualify (e.g., "Salary of Rs 100k OR Balance of Rs 500k"). The algorithm handles this by taking your best qualification match across all available fields.
How the saving calculation works
Discounts don't all work the same way. We classify every offer into one of four types and apply a different formula to each. "Up to 45% off" is not the same as a flat "20% off", and treating them the same would mis-rank cards.
Discount type 1: Flat percentage
A guaranteed percentage off the entire bill, optionally capped. E.g. "20% off entire menu
(max discount Rs. 500)". The saving is:
Saving = min( bill × % , cap )
Discount type 2: "Up to" percentage
A maximum advertised percentage that isn't guaranteed, for example "Up to 45% off". Most
items will receive a lower discount. We apply a 60% conservatism factor
to avoid overstating savings:
Saving = min( bill × (advertised % × 0.6) , cap )
An "Up to 45%" deal is estimated at 27% effective savings, so cards with aggressive marketing claims don't outrank cards with flat rates.
Discount type 3: Fixed-price combo
A specific meal deal with a fixed saving, for example "Zinger Burger + Drink Rs. 400
(save Rs. 380)". These are item-specific, so we use the fixed PKR amount directly
rather than treating it as a percentage of your bill:
Saving = min( fixed PKR , bill )
The saving is capped at your bill size. You can't save Rs. 380 on a Rs. 200 order.
Discount type 4: Buy One Get One (BOGO)
E.g. "Buy 1 Get 1 Free on Coffee". BOGO only applies to specific items, not your
entire bill. We apply a 30% conservatism factor to reflect this:
Saving = min( bill × (BOGO equivalent % × 0.3) , cap )
A "Buy 1 Get 1 Free" (50% mathematical equivalent) is estimated at 15% effective
savings, assuming the BOGO items represent roughly 30% of a typical order.
What the table below shows
The table below shows only the simplest case (flat % with a cap). The tool also handles the other three types above, each adjusted so the savings estimates can be compared.
Your bill
20% disc, Rs 500 cap
15% disc, Rs 1,500 cap
25% disc, Rs 1,000 cap
Rs 2,000
Rs 400 (20%)
Rs 300 (15%)
Rs 500 (25%)
Rs 3,500
Rs 500 (14.3%) ←cap
Rs 525 (15%)
Rs 875 (25%)
Rs 5,000
Rs 500 (10%)
Rs 750 (15%)
Rs 1,000 (20%) ←cap
Rs 8,000
Rs 500 (6.3%)
Rs 1,200 (15%)
Rs 1,000 (12.5%)
Rs 12,000
Rs 500 (4.2%)
Rs 1,500 (12.5%) ←cap
Rs 1,000 (8.3%)
The highlighted rows show why the bill-size slider changes rankings. At Rs 8,000 the 15% card pulls ahead of both. Moving the slider is the most useful thing you can do to get a fair comparison.
Note:Saving / outing is averaged over restaurants a card actually matches (not all restaurants in the city/filter set). Coverage is then handled separately in the Fit Score so narrow cards don't dominate ranking.
What each filter does to the ranking
Filter
What it changes
When to use it
Bill size slider
Which cards hit or avoid their cap. Biggest impact on ranking order.
Always. Enter what you actually spend per outing, not an aspirational number.
City
Restricts restaurants to Karachi, Lahore, or Islamabad
Set this first. Leaving it on "all" is fine if you travel across cities.
Restaurant selection
Only counts savings at your chosen venues; most precise ranking
Add 3 to 5 places you actually go. The ranking becomes specific to you.
Dining days
Penalises cards whose offers don't apply on those days
Set if you mostly dine on weekends. Many offers exclude Fri/Sat.
Card type
Filters to debit, credit, or digital wallets only
Use if you specifically want debit (no interest) or credit (rewards).
Bank filter
Shows only cards from selected banks
Use to compare tiers within your own bank, or check a specific bank.
Eligibility check
Hides cards where your salary/balance doesn't meet the minimum
Enter your salary and balance first, then enable this to filter out unreachable cards.
Where the data comes from
Offers are compiled from public bank offer pages, official merchant listings,
and card benefit summaries published by issuers. The dataset covers 21 banks
and over 1,250 restaurants across Karachi, Lahore, and Islamabad.
Separately, we maintain a card requirements dataset with eligibility criteria and fees for 192 cards across all banks: minimum salary, account balance thresholds, annual fees, and age limits, taken from official bank product pages and Schedule of Charges documents. It powers Eligibility Mode in the tool.
Discount caps are included when published. When a cap is unpublished, the field is left blank rather than assumed unlimited.
Day restrictions are captured at the offer level so day filtering works correctly.
Conflicting sources: when two public sources disagree, the more specific one takes precedence. Where sources still conflict without a clear hierarchy, the more conservative number is used.
Data freshness: The dataset is updated when bank offer pages change. Pakistani banks update their offer pages irregularly, sometimes monthly, sometimes quarterly. Always confirm current terms directly with the bank before making a card decision.
What the ranking deliberately excludes
The Fit Score answers one question: which card saves the most at the restaurants
you use, on the days you use them, at your bill size. It is not a general card review.