Building SubChoice: Why AI Pricing Needed a Single Source of Truth
Every week I was opening five tabs to compare AI subscription plans. So I built a tool that does it in one view. Here's how SubChoice went from frustration to a live product in three weeks.
I was sitting at my desk, seven browser tabs open, trying to answer a simple question: Is Claude Pro still worth it now that ChatGPT Plus added GPT-4o?
I had Anthropic's pricing page in one tab. OpenAI's in another. Cursor's in a third. I was copying numbers into a note, cross-referencing rate limits, trying to remember which plan gave access to which models. Fifteen minutes later, I still did not have a clear answer.
This happens every month. A vendor ships a new model, changes a price, adds a tier. The landscape shifts and your mental model becomes stale overnight.
I built SubChoice because I got tired of doing this manually.
The Problem No One Was Solving Well
There are websites that list AI tools. There are blogs that write "ChatGPT vs Claude" articles. But none of them solve the actual problem: comparing the subscription plans side by side with verified, up-to-date data.
Most comparison content is written once and forgotten. By the time you find it, the pricing has changed, a new model has launched, or a usage limit has been silently updated. The article says "ChatGPT Plus gives you GPT-4 access" when in reality it now gives you GPT-4o, o3, and a dozen other models.
I wanted something different. Not a blog post that decays. A living, verified comparison tool.
Defining the Core Loop
Before building anything, I defined what SubChoice needed to be:
- Single source of truth: One place to see every AI subscription plan, with verified pricing and features.
- Compare, don't just list: Users should be able to put plans side by side and see exactly where they differ.
- Always current: When a vendor changes their pricing, the data should reflect it within hours, not months.
That third point is the one most comparison sites ignore. Freshness is not a feature. It is the entire product.
The Stack: Static, Fast, Zero Runtime
I chose Astro for the framework. The reasoning was simple: SubChoice is a data product. Every page is deterministic. There is no user-generated content, no login, no dynamic state. A static site generator was the obvious choice.
- Astro 5 for static HTML output with content collections
- Cloudflare Pages for global edge deployment
- JSON files as the single source of truth for plan data
- ChangeDetection (self-hosted) for monitoring vendor pricing pages
- Loops for email subscriber management
The entire site builds to static HTML. No server. No database. No runtime. A page loads in under a second because there is nothing to compute. Just pre-rendered HTML hitting the edge.
Every plan's data lives in a structured JSON file: pricing, model access, context windows, rate limits, capabilities. When I need to update a price, I change one number in one file and rebuild. The data flows from JSON to every page that references it. Single source of truth, enforced by architecture.
The Compare Page: Where Users Actually Convert
The homepage explains what SubChoice is. The Explore page lets you browse vendors. But the Compare page is where the magic happens.
Users select up to three plans and see them side by side: pricing, models, context windows, rate limits, capabilities. Every difference is visible at a glance. No scrolling through marketing pages. No mental math.
In the first week of analytics, the Compare page showed 94% engagement rate with users spending over 8 minutes on average. For a static tool with no account system, that number told me the core loop was right.
People do not come to SubChoice to read. They come to decide.
Keeping Data Fresh: The Automated Monitor
The hardest part of running a comparison tool is not building it. It is keeping it accurate. AI vendors change their pricing without announcements. They add models to plans silently. They adjust rate limits in documentation that no one reads.
I set up ChangeDetection, a self-hosted monitoring tool, to watch the pricing pages of every vendor SubChoice covers. It checks every 6 to 12 hours. When something changes, I get a notification with a visual diff of what moved.
This is the moat. Anyone can build a comparison table. Almost no one will maintain it. SubChoice is designed from the ground up to catch changes before users even notice them.
Programmatic SEO: Building 258 Pages
A comparison tool is only useful if people can find it. My distribution strategy is programmatic SEO: generating high-quality, data-driven pages at scale.
Instead of writing 258 individual blog posts, I built content templates that pull from the same JSON data. A "ChatGPT Plus vs Claude Pro" page is not hand-written. It is generated from the same verified data that powers the Compare tool, enriched with editorial context.
The content pipeline has a quality gate: every page is scored on 9 criteria. If a page scores below 6, it gets noindexed automatically. I would rather have 40 excellent pages than 200 mediocre ones.
Right now, SubChoice has 40 live pages: 26 programmatic comparison pages and 14 editorial articles. The roadmap targets 258 pages over 24 weeks, covering vendor comparisons, persona guides, feature explainers, and a glossary.
What I Learned Building in Public
SubChoice went from idea to production in about three weeks. Some lessons from the process:
Data architecture is product architecture. The JSON schema I designed on day one determined what the Compare page could show, what pSEO pages could generate, and what the monitoring system needed to track. Getting the data model right early saved weeks of rework.
Engagement beats traffic. In the first 8 days, SubChoice had 64 users and 544 pageviews. Not impressive numbers. But the 94% engagement on Compare and the 8-minute average session told me the product works. Traffic is a distribution problem. Engagement is a product problem. Solve the product first.
Freshness is a competitive advantage. Most comparison content is a snapshot. SubChoice is a system. That distinction matters more every time a vendor updates their plans.
What's Next
SubChoice is live and growing. The immediate roadmap includes:
- Pricing history: Track how plans have changed over time
- "Which Plan?" quiz: A guided flow for users who do not know what they need
- More vendors: Expanding beyond the initial five to cover the full AI tooling landscape
- Automated updates: Moving from notification-based to semi-automated data refresh
The goal is simple: make SubChoice the first place people go when they need to make an AI subscription decision.
Try it yourself: subchoice.com