Build Journal
API Enhancements and ElevenLabs Fixes for CADE — April 21, 2026
I tackled API enhancements and ElevenLabs fixes for CADE, addressing critical bugs and improving features for the agentic web. Here's what I learned.
What shipped
- API Documentation Added — Comprehensive API docs and health probe for better oversight.
- Privy Authentication Enhanced — Integrated inline sign-in with admin-managed secrets.
- ElevenLabs Playback Fixed — Resolved audio playback issues with PCM resampler initialization.
- CADE Session Improvements — Streamlined grounding and connection process for better performance.
- Admin UI Updates — Simplified dashboard and reinstated 'Try CADE' button.
Today was a marathon 22-hour coding session, focusing on critical updates to the hashtag.space API and the CADE voice assistant powered by ElevenLabs. I shipped 18 commits, with 16 of them being features or improvements, and two aimed squarely at fixing bugs that had been plaguing the system. The primary goal was to enhance the user experience while ensuring the system remained stable and efficient.
I started by addressing a significant bug in the API that caused 500 errors site-wide. The issue stemmed from Next.js forbidding the mixing of dynamic segment names, specifically [id] and [userId], under the same route. This misconfiguration had been a thorn in my side, so I realigned the dynamic segment names for the hashtag-space route. After debugging, I was relieved to see the site stabilize, which made the long hours worth it. The fix was straightforward but highlighted the importance of keeping a close eye on framework constraints, especially when dealing with dynamic routing.
Next, I turned my attention to the admin panel, where I added comprehensive API documentation and a health probe feature. This was crucial for maintaining oversight on the health of the services. I created an endpoint for live health checks and included a public documentation reference for the admin users. The new users table now includes wallet hints and modal resolutions, which should make for a more intuitive experience. I was pleased with how this turned out, as it not only improves usability but also aids in onboarding new team members.
A significant part of the day was spent enhancing the authentication process with Privy. I integrated inline sign-in capabilities using admin-managed secrets, which involved a migration to store Privy app credentials securely. This was a complex task as it required careful handling of environment variables and ensuring that the system could handle secrets without needing a redeploy. The added flexibility in managing these secrets should streamline the admin experience considerably.
The ElevenLabs integration was another focus area today. I encountered a frustrating bug where the PCM resampler was not initialized before agent playback, leading to distorted audio playback. This was a tricky problem to diagnose, but I managed to pinpoint the issue within the ElevenLabs client. By ensuring that the audio processing pipeline awaited the resampler's initialization, I was able to resolve the issue and restore normal playback rates. This fix was essential for maintaining the quality of the voice interactions CADE is designed to deliver.
As I continued to refine CADE, I implemented several features that enhanced session grounding, ensuring that replies favor hashtag.org over legacy webstack references. This was important for maintaining contextual relevance in conversations. I also collapsed the connection process to favor a simplified one-shot transport flip for user sessions, which should reduce latency and improve user experience. These enhancements are small but impactful; they contribute to the overall goal of creating a seamless interaction with our AI systems.
In addition to these changes, I updated the admin UI, dropping the redundant 'Refresh dashboard' call-to-action in favor of a cleaner interface. The dashboard already reloads on open, so this was more visual noise than utility. I also reinstated the 'Try CADE' button, making it easier for users to engage with the voice assistant. These adjustments reflect my ongoing commitment to polish the user experience and keep the interface intuitive.
Reflecting on the day, I realize that building this all as a solo developer with AI as my team has its challenges, but it also provides immense flexibility. Using Claude Code in VS Code, I was able to iterate rapidly without the overhead of managing multiple team members or tools. The focus remains on my vision for a one-man-show company that could reach a billion-dollar valuation, and every commit takes me a step closer. The journey is long and filled with late nights, but as I look at what I accomplished today, I feel a sense of pride in the progress I’m making toward that vision.
Overall, today was a testament to the power of persistence and the importance of addressing both features and bugs in tandem. Each commit represents not just a technical advancement but a step toward a more robust and user-friendly product. I'm excited to see how these enhancements will improve the experience for users and help me move closer to the ambitious goals I've set for hashtag.org.