Methodology
Our methodology
How we model card setups and report solver proof status
Card catalog reviewed as of Oct 11, 2026; later corrections are listed on the Corrections page.
OptimalCardSetup is a math-first credit card portfolio optimizer. Rather than relying on editorial opinion or generic “best of” lists, we use a constraint programming solver to search eligible card portfolios against your actual spending. The result states whether optimality was proven or the solver returned its strongest valid setup at the time limit.
A proven result is scoped to the selected catalog, objective, spending assumptions, redemption values, constraints, and data snapshot used for that run. It is not a promise about approval, eligibility, issuer terms, or a future offer.
1. How the optimizer works
At the core of OptimalCardSetup is Google’s OR-Tools CP-SAT constraint solver — the same family of solvers used in logistics, scheduling, and resource allocation at scale.
When you enter your monthly spending across categories (dining, groceries, travel, gas, etc.), the solver:
- Models every valid card combination — including which card should be used for each spending category
- Handles complex card rules — bonus category caps, tiered earning rates, spend thresholds, quarterly category selections, and transfer partner valuations
- Accounts for credits and fees — annual fees are subtracted, card credits (airline, dining, streaming, etc.) are added based on how usable they are for you
- Reports its proof status — when CP-SAT completes its proof, the result is labeled Proven Optimal. If the time limit arrives first, the strongest valid result found is labeled Best Found with its available proof gap
2. What we optimize for
The objective function maximizes net annual reward value:
Objective function
Net value = total rewards earned + usable credits − annual fees − modeled portal price markup − extra-channel cost (when the optimizer routes pooled spend through issuer portals) − foreign transaction fees on spend made abroad + perk values you assign (Premium, counted once per wallet)Rewards are valued using cents-per-point (CPP) rates based on realistic redemption values — not inflated "best case" transfer valuations. For example, Chase Ultimate Rewards points are valued at their transfer partner rate when the user has a card that enables transfers, and at the lower cash back rate otherwise.
How credits and fees are counted
Credits are not counted at advertised face value. Every credit in the catalog carries a conservative value: what a typical cardholder can use without changing how they spend. Broad credits count at that value. The Sapphire Reserve’s and Venture X’s $300 travel credits count at $300, Global Entry or TSA PreCheck ($120 every four years) counts at $30 a year, and the Hilton Honors Aspire’s $200 airline credit and its annual free night count at $200 each. Credits that depend on a particular merchant, program or kind of stay count at $0 by default, or at part of face value. The Aspire’s $400 Hilton Resort credit applies only at Hilton Resorts properties, so it counts at $0; the Amex Platinum’s $200 airline credit counts at $100.
A card’s effective fee is its annual fee minus the credits counted, and it never goes below $0: the Aspire’s $550 fee less $400 counted is $150, while the IHG One Rewards Premier’s $180 of counted credits against a $150 fee leaves $0, not a negative fee. Results show the sticker fee, the credits counted, the effective fee, and what the card would net without those credits. A change to how a specific credit is counted is dated on the Corrections page.
You can change this. Under “Credit habits” in Refine, every user can say how they use four common credits: Global Entry or TSA PreCheck, DoorDash DashPass, Uber Cash, and digital-entertainment credits. For the first two, “No” counts the credit at $0, “Definitely” counts it at its full yearly value, and “Somewhat” counts it halfway between the conservative and full values. For the two monthly credits, the dollars a month you enter count up to the credit’s own monthly limit. Premium users can also set their own value for any credit and for perks such as lounge access, which count once per wallet.
Some credits are uncertain: a credit you have not answered a habit question about, one you answered “Somewhat”, or one whose full value is at least $25 a year above what we count. When the winning cards include any, the result carries a stability badge. After the main result is shown, the solver runs one more check with those credits at their lowest and competing cards’ matching credits at their highest. “Holds if credits are low” means no other set of cards came out ahead in that check; “Depends on your credits” means a different set could. Details also shows how far the setup’s net value could range. That check is one scenario, not a proof across every possible answer, and no badge appears when nothing in the winning wallet is uncertain.
Booking-channel routing
Some spending can be bought more than one way — a flight booked with the airline or through an issuer travel portal, groceries in store or online. For those categories you enter one amount and decide whether to leave the channel to the optimizer. Travel groups (flights, hotels, vacation rentals, car rentals and cruises, tours and activities) default to optimizer-routed; groceries and live entertainment are opt-in, because the same purchase is a weaker substitute across those channels. Any amount you enter against an exact channel is pinned and never re-routed; only the remainder is pooled.
A portal booking is not priced the same as booking direct, so each portal channel carries a modeled price markup (roughly 1.5%–14.5% depending on the portal and travel type) plus a small modeled cost for splitting a booking across an extra channel. Both are subtracted inside the objective before the solver compares options, and both are shown again in the result’s booking plan and summary, so a portal bonus only wins when it beats its own higher price.
3. Independence of results
Affiliate compensation is not a solver input or ranking criterion. The current architecture keeps compensation separate from the modeled reward objective:
- The solver’s objective function contains no commission data. It only sees earn rates, fees, credits, and spending amounts.
- Affiliate link data is stored separately from card reward rules and is not loaded by the solver at any point.
- Free-tier and Premium users run the same optimization algorithm with the same card data; Premium raises the card-count limit and lets you supply your own credit and perk values, and those values enter the math only when you set them.
- Cards without affiliate partnerships appear in results alongside cards that do have partnerships — the solver treats them identically.
For full details on how we handle affiliate relationships, see our Affiliate Disclosure.
4. Card data sources
Card terms (earn rates, annual fees, credits, category caps, and special rules) are sourced from issuer websites and official card agreements. We review and update card data regularly to reflect current terms. If a card’s terms change, the updated data is reflected in the optimizer within our next update cycle.
We currently support 54 cards, including one debit card and four business cards, across major issuers including American Express, Chase, Citi, Capital One, Bank of America, Wells Fargo, US Bank, and others.
5. Limitations
Our optimizer is constraint-based and assumption-driven; there are factors it does not account for:
- Sign-up bonuses (one-time value, not recurring annual value)
- Credit score impact of opening new accounts
- Issuer approval likelihood for specific applicants
- Subjective preferences (brand loyalty, card design, lounge access quality)
- Rotating quarterly bonus categories that cannot be predicted in advance
- Whether a recommended card is currently open to new applicants — check the availability note on the card’s page
- Actual portal prices on the day you book. The portal markups above are modeled averages of a wide, high-variance set of published price comparisons (evidence window February 2024 – April 2026, re-verified at least annually), not a live quote — an individual itinerary can be cheaper or far more expensive than the modeled average
Results represent the strongest modeled ongoing annual value found for the spending profile you provide, with a clear proof status. Your actual value may vary based on spending fluctuations and redemption choices.
6. Contact
Questions about our methodology? Reach us at support@optimalcardsetup.com.
Not sure which card fits? The optimizer searches eligible card setups against your own spending — no account needed.
Run the optimizer — free