CardStack is an interactive ranking of Canadian premium credit cards. Plug in your spending, set your point-value confidence, and see which card — or two-card stack — actually wins on the math. Everything below explains what the site does, what it doesn't, and the assumptions baked into every number.
Three minutes from open to answer
On the home page, open the Assumptions panel and enter your annual spend per category (groceries, dining, travel, gas, recurring, all-other, foreign). Numbers persist locally in your browser.
Choose conservative, blended, or aggressive — or override per currency. This is the biggest lever in the model: small ¢/pt changes swing the ranking.
The table re-sorts live by net value (rewards + credits − annual fee − FX cost). Click any card name for the full per-category breakdown.
Be clear-eyed about the scope
Where to find each piece
How the community pipeline works
Paste any Canadian credit card's official product page URL into the Add Card panel. The pipeline runs through visible stages so you can see exactly where your submission is:
Failures retry automatically with exponential backoff (up to 3 retries) for transient errors. You can cancel an in-flight submission at any time.
Your submitted cards appear in your ranking immediately, markedCommunity · pending. Once an admin approves a submission, it becomes visible to everyone.
Three submissions per browser. Scraped pages are normalized by an LLM, which can misread fine print, promotional rates, or category mappings. Treat submitted-card values as a directional estimate — verify against the issuer page before acting.
One submission, start to finish
Here's exactly what happens when you submit a card. We'll walk through a real-looking run for the American Express Cobalt Card, including the JSON the AI normalizer returns and where it ends up in the UI.
On the home page, open the Add Card panel and drop in the issuer's official product page.
https://www.americanexpress.com/ca/credit-cards/cobalt-card/
Each stage streams its status in real time. Elapsed time per stage is shown so you can see where slow runs spend their time.
Transient failures (network blips, rate limits) auto-retry with exponential backoff up to 3 times. Validation errors and malformed AI JSON are non-retryable.
The AI emits a strict JSON object validated against our normalized card schema. If anything is missing or out of range, the submission is rejected before it ever reaches the database.
{
"card_name": "Cobalt Card",
"issuer": "American Express",
"annual_fee": 155.88,
"fx_fee": 2.5,
"point_currency": "Membership Rewards",
"credits_value_estimate": 0,
"insurance_score": 6,
"lounge_access_score": 0,
"earn_rates": {
"groceries": { "rate": 5, "cap": "$30,000/year" },
"dining": { "rate": 5, "cap": "$30,000/year" },
"travel": { "rate": 2, "cap": null },
"gas": { "rate": 2, "cap": null },
"recurring": { "rate": 3, "cap": null },
"all_other": { "rate": 1, "cap": null }
},
"notes": "5x cap is shared across eligible groceries and dining."
}The card appears immediately in your local ranking with a Community · pending badge and contributes to the live math at your current spend assumptions. Open the card detail page to inspect per-category earn, cap utilization, and overflow.
Page is paywalled, JS-rendered, or blocked the crawler. Try the issuer's plain product page (no /apply, no logged-in URLs).
Schema validation failed. Marked non-retryable to avoid burning credits. Usually means the page wasn't a card terms page.
A card with the same issuer + name already exists. We surface that record instead of creating a duplicate.
Common questions, limits, and troubleshooting
Exact text you'll see — and what to do next
Submissions can fail at any pipeline stage. Each row below shows the literal error string the UI surfaces, the stage it came from, whether it auto-retries, and the recommended action. Transient errors (network, gateway 5xx) retry automatically up to 3 times with exponential backoff; everything else fails fast.
Information only — not financial advice
For information purposes only. CardStack is a personal-project comparison tool. Nothing on this site is financial, tax, legal, accounting, or investment advice, and nothing here should be treated as a recommendation to apply for, hold, or close any credit card or financial product.
Information may be inaccurate or out of date. Earn rates, annual fees, FX fees, credits, insurance benefits, and lounge access change frequently. Curated card data is updated periodically; community-submitted cards are normalized by an automated pipeline that can make mistakes. Always verify the exact terms on the issuer's official website and current cardholder agreement before making any decision.
Point values are estimates. The ¢/pt presets reflect a blend of redemption strategies and assume you actually execute them. Real-world redemptions vary widely; sub-optimal redemptions can drop a currency's value by 50% or more. Past redemption rates do not guarantee future availability.
No relationship with issuers. CardStack is not affiliated with, endorsed by, or compensated by any bank or card issuer. There are no affiliate links and no referral revenue.
Your decisions are your own. Credit card products carry real financial risk: interest charges, foreign-exchange exposure, annual fees, opportunity cost of capital tied up in credits, and impact on your credit score. Consult a licensed financial advisor before making decisions based on the information shown here. By using this site you acknowledge that the authors accept no liability for any loss arising from reliance on its content.