I asked ChatGPT for the best credit card, and it served me up an offer. So, I went and checked it against the bank’s own page.
It wasn’t the best offer.
It was the offer that pays the most to whoever ranked it.
Here’s how that happens.
The model builds its answer from comparison sites. Those sites earn money every time someone applies through their link. The card sitting at the top is the one paying them the most.
So when you ask a model which card is best, you get the card offer that pays the website the most.
You fix that by making it read the issuer’s own page and quote it back with the link. Then you run your own spending against what it found.
3 prompts. One at a time, same chat. No kickbacks.
Before you start
- Turn on web search in whatever you’re using.
- Pull up last month’s statement before you start. There’s always something you forget.
- If you keep telling yourself a charge is a one-off every month, price in a one-off every month.
Prompt 1. Turn your spending into a number
No cards yet. This step finds which 2 categories decide the answer, because for most people it’s 2, and the other 6 are rounding errors.
I want to compare credit cards later. Right now, do not name any card.
Here is roughly what I spend in a typical month:
- Groceries: $
- Restaurants and takeout: $
- Gas or transit: $
- Travel (flights and hotels), as a yearly total: $
- Online shopping: $
- Subscriptions and bills I put on a card: $
- Everything else: $
Other facts about me:
- I pay the full balance every month: yes / no
- Rough credit score range:
- Cards I already have:
- What I want out of this: cash back / travel / building credit
- Willing to pay an annual fee: yes / no / only if it pays for itself
Do 3 things.
1. Turn my spending into yearly numbers, largest first. The monthly ones get multiplied by 12. Travel is already a yearly total, leave it alone. Show the multiplication.
2. Tell me which 2 categories actually decide this for me, and how much a 1% difference in reward rate is worth per year on each one, in dollars.
3. Name the type of card that fits. Not a brand. For example flat-rate cash back, rotating categories, grocery-heavy, or travel points.
If I said I do not pay the full balance every month, say clearly that the interest rate matters more than the rewards, and rank the categories accordingly.
- No card names yet. Name one early and everything after it becomes a defense of that first guess.
- The 1% in dollars. 3% back on groceries sounds twice as good as 1.5%. On $400 a month, the difference is $72 a year. That’s less than the annual fee on the card advertising it.
- A kind of card, not a brand. Once you know you’re shopping for a flat-rate card, the field drops from 40 cards to about 5.
- The full-balance question. If you carry a balance, rewards are decoration. 24% interest on $3,000 costs about $720 a year, and no cash-back rate catches that.
Prompt 2. Make AI read the bank’s own terms
This step does the heavy lifting. The model goes to the issuer’s own site and comes back with quotes and links, not recollections. Swap in whichever issuers you’re actually considering.
Look up current terms for these cards. Use only the issuer's own website. Do not use NerdWallet, Bankrate, The Points Guy, Reddit, or any comparison or review site.
Banks: chase.com, americanexpress.com, capitalone.com, citi.com, discover.com, bankofamerica.com, wellsfargo.com, usbank.com, barclaycardus.com, navyfederal.org, usaa.com
Everyone else: apple.com, robinhood.com (app only), bilt.com, sofi.com, chime.com
If a card I name isn't from one of these, go to that company's own site instead.
Cards:
1.
2.
3.
4.
If I left that list empty, fill it yourself. Name the 4 cards of the type we settled on in my last message that these issuers push hardest, and say that you picked them. Then look up their terms the same way.
For each card, report these 4 fields:
- Annual fee
- Purchase APR range
- Current welcome offer, including the spend required and how many months I have to do it
- Reward rates by category
How to report them:
- Quote the issuer's own wording for each figure, and give the URL you took it from.
- If a field is not on the page, write "not stated on issuer page" and move on. Do not fill it in from memory and do not estimate it.
- If an offer shows an old number crossed out next to a new one, report the new one and tell me the page showed 2 numbers.
- If a rate comes back as a formula or a broken string instead of a plain percentage, paste it exactly as it appeared and say it did not come through cleanly.
- Some issuers keep rates on a separate "Rates and Fees" or "Terms and Conditions" page. Check there before writing "not stated."
- Some cards only show their terms inside the company's app. If that's the case, say it's app only.
- Put the date you retrieved this at the top.
- The bank’s own site. A bank won’t misstate its own APR, because that number is a legal disclosure. Comparison sites get paid a referral fee when you apply through them, which is legal and disclosed in small print at the bottom. The FTC’s 2023 order against Credit Karma shows how far that can go. About a third of the people told they were “pre-approved” applied and got denied, and each one ate a hard credit inquiry for it.
- The crossed-out number. The Sapphire Preferred page right now shows 75,000 struck through with 100,000 beside it, because the offer went up. You want both numbers, so you know one of them just changed.
- The broken rate. Chase builds its interest rate out of a calculation, so it can arrive as a half-finished formula instead of a percentage. Left alone, a model tidies that up and hands you a clean number nobody actually wrote.
- The separate rates page. Amex keeps the perks and the annual fee on the card page, and puts the interest rate in a separate document. Ask about the Gold Card and the rate looks missing when it’s really just on another page.
- The date. Offers expire. In 6 weeks you’ll want to know if this is still worth anything.
Prompt 3. Do the math in the open
Models are least reliable when they compute, because a wrong total looks exactly like a right one. So the last step makes the math work in the open.
Use only the numbers I gave you about my spending and the terms you retrieved. Do not add any card or any figure from memory.
For each card, work through it one step at a time and show every number.
1. Estimated rewards per year, category by category, using my spending.
2. If a card earns points instead of cash, turn the points into dollars. Use the issuer's own stated redemption value if you retrieved one. If you did not, count 1 point as 1 cent and say so next to the number. Do not use a "transfer partner" value or anything from a points blog.
3. Subtract the annual fee.
4. Add the welcome offer once, and say plainly that it is a first-year number. Then show year 2 without it.
5. Say whether my normal spending clears the welcome offer's spend requirement in the time allowed. If it does not, say so and do not count the bonus.
Then give me a table with one row per card. Columns: first-year value, year-2 value, annual fee, anything you could not verify.
End with the 2 cards that come out ahead and one sentence each on who they are wrong for.
Any field marked "not stated on issuer page" stays visible in the table. Do not quietly drop a card because it has a hole in it, and do not fill the hole.
- Show every number. Numbers you can see are numbers you can check. A wrong total looks exactly like a right one.
- Year 2, without the bonus. The signup bonus is why expensive cards win every comparison table. A $250 bonus makes a $95 fee vanish in year 1, then you hold the card for 6 more years without it. Year 2 is the number you’re choosing.
- Can you even hit the spend? A bonus that needs $5,000 in 3 months is worth nothing if you spend $1,200 a month.
- Who each card is wrong for. A recommendation with no downside attached is a sales pitch.
Why 3 prompts beats one
Put all of this in one prompt and the model does what anyone does with a long list of instructions. It picks the fun parts.
It names cards before it’s read your spending, then quietly builds the case for them. It retrieves some terms and fills the rest from memory, and both kinds end up in the same table looking equally solid. Splitting the work means each step has one job, and you get to see the output before it becomes the input to the next one.
Order is the same as buying anything else expensive. You don’t want to pick the hotel before you pick the neighborhood. The AI prompt to find the best hotel works the same way, decisions in order, not all at once.
The other reason is that prompt 2 is the one worth repeating. Your spending doesn’t change much. Offers change constantly, so you re-run the middle prompt in 6 months and keep the rest.
What this credit card prompt still can’t do
Welcome offers are the weak spot, and it’s worth knowing where the wall is.
Some issuers don’t publish a current offer on the product page at all. American Express is the clearest case. The Gold Card page gives you the annual fee, no APR, no welcome offer, and no link to a page that has them. Amex also runs targeted offers, so the bonus you’re eligible for may not exist anywhere on the public site.
The prompt handles this by writing “not stated on issuer page” instead of inventing something, which is the right behavior and still leaves you with a hole. Fill it yourself. Start the application, don’t submit it, and read what the offer screen says. That’s the only place a targeted number shows up.
One more thing this chain won’t do. It won’t tell you whether you’ll get approved. Nothing outside the bank will.