1
1 Comment

Week in Review: Pricing Psychology, Browser Extensions, and the "Credits vs Scans" Naming Debate

Hey IH! I run Underpriced AI, an AI-powered tool that helps resellers identify and value items. Think "Shazam for thrift store finds." This week was packed with changes, so I wanted to share what I learned.

The Numbers (Transparency FTW)
MRR: Still early stage, but growing
Users: Mix of trial users and paid subscribers across Pro ($9/mo), Pro Plus ($19/mo), and Business ($49/mo) tiers
Tech Stack: Next.js, Prisma, PostgreSQL, Claude AI (Opus 4 for analysis)
What I Shipped This Week

  1. Fixed My Pricing Mistake (Credits Were Too Cheap)
    I offered "credit packs" as a pay-as-you-go option alongside subscriptions. The problem? I accidentally made credits a better deal than subscribing.

Before:

10 credits for $2 ($0.20/scan)
25 credits for $5 ($0.20/scan)
50 credits for $10 ($0.20/scan)
Meanwhile, my Pro plan was $9/mo for 30 scans ($0.30/scan). Why would anyone subscribe?

After:

5 scans for $3 ($0.60/scan)
15 scans for $6 ($0.40/scan)
30 scans for $10 ($0.33/scan)
Now subscriptions are clearly the better value for regular users, while pay-as-you-go works for occasional users who don't mind paying a premium for flexibility.

Lesson: Always do the math on your pricing tiers. I was so focused on making credits "feel affordable" that I undermined my own subscription revenue.

  1. The "Credits" vs "Scans" Naming Debate
    Had an interesting realization: my subscriptions said "30 scans/month" but pay-as-you-go said "Buy Credits." Inconsistent terminology = confused users.

Changed everything to "Scans":

"5 Credits" → "5 Scans"
"Buy Credits" → "Buy Scans"
"Credits available" → "Extra Scans available"
Small change, but it makes the value proposition crystal clear: you're buying scans, period.

  1. Re-scan Limits (Controlling AI Costs)
    Each scan costs me ~$0.15-0.25 in AI API costs (Claude Opus isn't cheap). Users were re-scanning items unlimited times, which was eating into margins.

Solution: 2 free re-scans per item, then it costs 1 scan credit.

Added this to the pricing page as a feature: "2 free re-scans per item" - turns a limitation into a selling point.

  1. Built a Chrome Extension
    This was a fun weekend project. Users can now right-click any image on the web and scan it directly.

Tech details:

Manifest V3 (required for Chrome now)
Context menu integration
Injects overlay to show results on-page
Uses existing auth cookies
The tricky part was avoiding "broad host permissions" which triggers extended Chrome Web Store review. Solution: use activeTab + scripting permissions to inject only when user explicitly triggers a scan.

Currently in Chrome Web Store review.

  1. Simplified Navigation
    Removed Features/Pricing from the top nav, moved them to footer. Logo now goes straight to dashboard for logged-in users.

Why? Logged-in users don't need marketing pages cluttering their nav. They need to scan items.

  1. Analytics Dashboard for Myself
    Built a comprehensive admin dashboard to track:

MRR by plan tier
Trial user engagement (who's close to their limit?)
Re-scan costs (who's burning through re-scans?)
Credit purchase history
This is just for me, but it's been invaluable for understanding user behavior.

What's Next
Mobile app improvements (iOS app is live, Android coming)
Affiliate/referral program
Questions for IH
How do you handle "power users" who cost more to serve? My re-scan limit is one approach, curious about others.

Browser extension or mobile app first? I did mobile first, but the extension might have been easier for acquisition.

Would love to hear your thoughts. Happy to answer any questions about the tech stack, pricing decisions, or AI costs.

Building in public at @underpricedai

on January 21, 2026
  1. 1

    The credits vs scans naming change is a good example of making the user-facing unit match the thing users actually value. For Tokens Forge we think about the same split on AI token products: the customer should see a simple balance or action unit, but internally the ledger still has to preserve model route, upstream model, retries, fallback, latency, and the balance bucket that paid for the run. That is especially important for re-scans or re-runs, because the same visible action can cost very different amounts depending on context size and model path.