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 comfortably meet the requirements with a high confidence level (typically 75%+), the score increases by up to 15 points, reflecting that this card is a viable "best fit" for your profile.
- Marginal Qualification (0 to +7): If you meet the requirements but with moderate confidence, you receive a smaller boost proportional to your qualification 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".
Smart Requirements: Pakistani bank cards often have multiple paths to qualify (e.g., "Salary of Rs 100k OR Balance of Rs 500k"). Our algorithm handles this by taking your best qualification match across all available fields.
How the saving calculation works
Not all discounts work the same way. We classify every offer into one of four types
and apply a different formula for each. This is critical, because "Up to 45% off" is
not the same as a flat "20% off", and treating them identically 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 )
A "Up to 45%" deal is estimated at 27% effective savings. This prevents cards with
aggressive marketing claims from unfairly dominating cards with honest 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.
Why this matters
The cap comparison table below only shows the simplest case (flat % with a cap).
The real tool also handles the three other types above, adjusting each one to
produce a fair, comparable savings estimate.
| 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 quietly overtook both. Moving the slider is the single most useful
thing you can do to get an honest comparison.
Important: 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.
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 19 banks
and over 1,300 restaurants across Karachi, Lahore, and Islamabad.
Separately, we maintain a card requirements dataset covering eligibility criteria
and fees for 192 cards across all banks. Minimum salary requirements, account
balance thresholds, annual fees, and age limits, all sourced from official bank
product pages and Schedule of Charges documents. This powers the Eligibility
Mode on the tool.
- Discount caps are included when published. When unpublished, the cap field is left blank, not 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.
| What's excluded |
Why |
| Non-dining benefits (cashback, travel rewards, lounge access) |
Different comparison entirely. Use the bank's website for these. |
| Card approval likelihood |
Too individual. Income, credit history, and branch decisions all vary. |
| Bank app quality, customer service |
Not measurable from public offer data |
| Introductory / promotional rates |
Standing offer terms are used, not temporary campaigns |
| Food delivery discounts (Foodpanda, Careem NOW) |
Delivery partnerships change frequently and differ from dine-in programs |
| Monthly frequency limits |
Captured where published; not assumed when absent |