Torben Haack

Torben Haack

[t128n]

Data Over Vibes: A Case Study in Picking the Right AI Tool


Most software decisions get made on vibes. Feature lists, pricing pages, hype. But when tools affect your workflow, usage, and spend, you need to ask: does this fit how I actually work?

That question came up for me when my ChatGPT Plus subscription was set to expire. I was considering T3.chat instead. At $8/month, it's a killer deal. Clean UX, great model lineup, privacy-first posture. But one thing gave me pause:

1,500 messages per month.

It sounded like enough… but was it? Rather than guess, I ran the numbers.

Export Your Data, Don't Trust Your Gut

ChatGPT lets you export your full usage history as a conversations.json file. I wrote a small Python script to:

  • Parse all messages between 2025-03-20 and 2025-04-17
  • Count how many were authored
  • Compute a daily average
  • Forecast usage through 2025-04-26 with a 20% buffer

Here’s what came back:

--- FORECASTED USAGE (2025-03-20 → 2025-04-26) ---
Total actual messages: 1632
Active days so far: 29
Avg messages/day: 56.28
Avg/day (+20% buffer): 67.53
Remaining days to forecast: 9
Projected total usage by 2025-04-26: 2239 messages

What the Data Said

If I switched to T3.chat today, I’d exceed the message cap by ~49%.

That doesn’t mean T3.chat is bad. It’s excellent for users with leaner, more intentional workflows. But for me, it would force a change:

  • Fewer iterative prompts
  • More scoped, complete instructions
  • Offload auxiliary tasks to GitHub Copilot or other tools

The real takeaway? This wasn’t a pricing question. It was a workflow question.

How the Script Works (and Why It’s Simple)

You don’t need a data pipeline to get useful insights. Here's a simplified breakdown of how the Python script works:

  1. Load your conversations.json export:
with open("conversations.json", "r") as f:
    data = json.load(f)
  1. Loop through the data and count user-authored messages:
for conv in data:
    for msg in conv.get("mapping", {}).values():
        if msg.get("message", {}).get("author", {}).get("role") == "user":
            ts = msg["message"].get("create_time")
            if ts and start_date <= datetime.fromtimestamp(ts) <= today:
                dt = datetime.fromtimestamp(ts)
                daily_counts[dt.strftime("%Y-%m-%d")] += 1
  1. Calculate stats and forecast:
avg_per_day = total_msgs / active_days
avg_per_day_buffered = avg_per_day * 1.2
projected_msgs = total_msgs + (avg_per_day_buffered * remaining_days)

Done. Fast, accurate, and actionable.

Why This Matters

Software trade-offs aren't theoretical. They’re real, lived constraints. And if you want to stay efficient, whether you’re a developer, writer, or analyst—your tool choices need to match your patterns.

Good decisions come from data, not assumptions.

This one Python script saved me from adopting a tool that didn’t align with how I work today. Maybe I’ll evolve toward it later. But now, I know exactly what that change would cost.

TL;DR

If you’re evaluating alternatives to ChatGPT:

  • Export your data
  • Analyze your real usage
  • Let that shape your choice

No guesswork. No regret. Just data-backed clarity.