Lumo Journal

Building Lumo Pro: Why We're Betting on Usage, Not Paywalls

We built a subscription system that limits how much you use, not what you can use. Go behind the scenes of our Convex-powered tier system, grab your extended trial, and learn why everything is currently free while we stress-test the limits.

By Lumo TeamFeb 15, 20264 min read

Building Lumo Pro: Why We're Betting on Usage, Not Paywalls

Let’s address the elephant in the room: Lumo needs to make money eventually. Servers don’t run on good intentions, and neither do developers (unfortunately, you cannot pay rent with GitHub stars). But here’s the thing—we’ve seen too many apps slap a paywall on basic functionality and call it "Pro." That’s not us.

We’re building something different. Today, I’m pulling back the curtain on Lumo’s new Free vs. Pro tier system, the engineering decisions that nearly broke my brain, and why—right now—every single feature is completely free.

The Philosophy: Limits, Not Lockouts

Most subscription models fall into two traps: they either hide features behind arbitrary paywalls (looking at you, "Export to CSV for $9.99/month") or they offer "unlimited everything" until the VC money runs out and the servers catch fire.

We chose a third path: usage-based freemium. Think of it like a utility bill, but for your financial data. Free users get generous monthly quotas (100 transactions, 5 receipt scans, 3 AI predictions). Pro users get unlimited access. Everyone gets access to the same features.

Why? Because feature-gating is lazy engineering. Usage-limiting is honest infrastructure. If you hit 100 transactions in a month, you’re power-using Lumo, and that compute costs real money. But you shouldn’t be blocked from trying our AI predictions just because you’re on the free tier.

The Architecture: Convex, Counters, and Cold Sweat

Building this in Convex was… an adventure. We needed real-time usage tracking across 14 distinct features (receipt scanning, predictions, data import, custom categories—you name it), with monthly reset cycles, promotional access overrides for beta testers, and a 7-day trial system that gracefully degrades.

Here’s where it gets spicy. Every time you scan a receipt or generate a prediction, we check your quota before executing the action. That means:

  1. Latency sensitivity: We’re adding a database round-trip to your user flow. We optimized this with aggressive indexing (by_firebase_id_and_cycle) and batched reads, but it’s still overhead we didn’t have before.
  2. Race conditions: What happens if you tap "Scan Receipt" twice in rapid succession? We implemented optimistic UI updates with server-side reconciliation, but distributed counters are inherently messy. If you see a "-1 remaining" glitch, that’s the distributed systems gods laughing at us.
  3. Migration anxiety: Existing users got grandfathered into the Free tier with trialEndsAt: 0 (no retroactive freebies—sorry, we’re not made of money). New users get a 7-day Pro trial. This required a careful migration script that ran at 3 AM while I stared at the Convex dashboard like it might explode.

The secret sauce? A featureLimits table that lets us adjust quotas dynamically without deploying code. If we realize 5 receipt scans is too stingy, we can bump it to 10 for everyone instantly. No app store review required.

The Current State: Stress Test Mode

Here’s the twist: everything is currently free. We’ve deployed the usage tracking, built the admin panels, and wired up the limit checks, but we haven’t flipped the enforcement switch yet.

Why? Because we’re stress-testing the system. We want to see what real usage patterns look like before we start cutting people off. Are our limits too generous? Too restrictive? Is the "3 predictions per month" limit annoying or invisible?

This is your window. Use it. Import that messy CSV from 2019. Scan every coffee receipt. Generate predictions until the AI knows your spending better than your therapist. We’re watching the metrics to find the sweet spot between "sustainable business" and "actually useful free tier."

The Flaws We’re Owning

I promised no sugar-coating, so here’s what keeps me up at night:

The "Limit Anxiety" Problem: Knowing you have 2 scans left creates psychological friction. We’re experimenting with "soft limits"—letting you go slightly over with a gentle nudge rather than a hard stop—but that’s technically complex and potentially expensive.

The Trial Cliff: After 7 days, Pro features vanish. We’ve seen users panic when their unlimited predictions suddenly hit a wall. We need better downgrade UX, and we’re iterating on grace periods and "trial extension" flows for engaged users.

Admin Complexity: The subscription admin panel is… powerful. Maybe too powerful. We can manually grant promotional access, reset usage, or bump individual users to Pro. With great power comes great potential to accidentally give everyone unlimited access forever (we’ve added confirmation dialogs, but still).

Join the Waitlist (Yes, Really)

Since everything’s free right now, you might wonder why you should join a waitlist. Fair question.

The waitlist is for early Pro adopters who want to influence pricing. We’re debating between $4.99/month (aggressive, growth-focused) and $9.99/month (sustainable, but maybe too steep). Waitlist members will get early access to Pro pricing tiers, lifetime discount codes, and the ability to vote on which features should stay unlimited vs. usage-capped.

Plus, when we do flip the switch, waitlist members get an extended 14-day trial instead of 7. Consider it a thank-you for trusting us before we knew what we were doing.

[Join the Lumo Pro Waitlist] (Button/link here)

What’s Next

We’re monitoring the usage tracking data now. When we’re confident the system won’t collapse under the weight of your financial data (or when our server bill gets scary), we’ll announce the official Pro launch.

Until then, treat Lumo like it’s unlimited. Find the edge cases. Break things. We’ve built the safety rails, but we’re keeping the training wheels on for one more lap.

See you in the logs,

Abdul Rafay
CEO, Syntax Lab technology
Currently wondering if "unlimited" was a terrible idea