← Back to Blog
·Bret

January 2026: A Month of Building, Breaking, and Learning

developmentupdatebehind-the-scenes

January has been an intense month of development. If you have been using R1N over the past few weeks, you might have noticed things changing, sometimes daily. I wanted to share what has been happening behind the scenes.

The Great Billing Experiment

Early in the month, I made a significant change to how billing works. I switched from the original credit-based system to hourly billing, thinking it would be simpler for users to understand. The idea was straightforward: you pay for the time you spend talking, not for some abstract unit called "credits."

It lasted about 24 hours.

One of my early adopters reached out and explained why they preferred the token-based approach. After sleeping on it, I realized they were right. Hourly billing created anxiety about the clock ticking, which is the opposite of what a relaxing voice experience should feel like. So I rolled it back.

The good news? All that work was not wasted. The infrastructure I built for time tracking is now being used for analytics and usage insights. And the pricing configuration moved to the database, making future adjustments much easier.

Authentication Gets a Proper Home

For months, R1N used an invite code system. It worked, but it was clunky. This month I migrated everything to Clerk, a proper authentication service. The result is a smoother sign-up flow, better session management, and one less thing for me to maintain manually.

Along with this came Stripe integration for payments and a proper user management system. No more manually generating invite codes.

Making the Demo Better

The demo experience got a lot of attention this month. I added a visual interaction counter so you can see how many exchanges you have left. The voice circle got smaller and less intrusive. Audio feedback now provides subtle cues during the conversation.

I also spent considerable time fixing an annoying bug where the demo would end abruptly instead of letting the host finish their thought. The fix involved properly detecting when the text-to-speech completes, which turned out to be trickier than expected.

When Things Go Wrong

Late in the month, I added Sentry error monitoring to both the frontend and backend. This means when something breaks, I actually know about it now instead of waiting for someone to email me.

This immediately paid off. Within a day of deploying Sentry, I discovered and fixed a race condition that was causing "send before join" errors for some users. I also improved how the app handles situations where your microphone is not available, showing a friendly message instead of silently failing.

The Notification System

You might have noticed the notification banner at the top of the site. That is new! I built a system that lets me communicate important updates, scheduled maintenance, or urgent issues directly to users. The notifications support different severity levels and can be scheduled in advance.

What is Next

Nothing huge is on my calendar. I'm probably going to continue to monitor the site and focus on stability. I might experiment with some homepage updates, but I'll be careful to maintain the low-key aesthetic.

Long-term memory is still on my list. I temporarily disabled it while I rework how it functions, but it is eventually coming back. It's a tricky feature.

As always, feel free to reach out at [email protected] with feedback or ideas. I love working closely with users.

Cheers, Bret

Full Transparency: I wrote this in collaboration with AI.