GIGIlistening…

Build Journal

Improving Live Call Transfers & Portal Stability — June 12, 2026

I improved live call transfer functionality and fixed deployment issues for the agentic web portal. Learn how I tackled bugs and implemented features.

7 changes4 min readby Rob

What shipped

  • Live Call Transfer FeatureUsers can now forward calls to colleagues seamlessly.
  • Deployment Stability FixPrevented site outages from failed builds.
  • Map UI OptimizationGoogle Satellite is now the only basemap option.
  • Improved Loading BehaviorResolved loading issues for logged-out visitors.

Today, I focused on enhancing the live call transfer functionality and addressing several critical deployment issues that arose last week. The goal was to ensure a seamless experience for users engaging with our agentic web portal, which is crucial as I build this platform toward my vision of a one-man-show company with a billion-dollar valuation. I spent a long 11-hour day on these tasks, and while I made significant progress, I also faced some frustrating challenges along the way.

I started with a fix that was long overdue: hardening the deployment process on my VPS. Last week's outage was a stark reminder of how a partial `npm ci` could bring down the entire site. Today, I implemented a safeguard that prevents the site from going down due to failed builds. This involved ensuring that the build process won't swap out the live `.next` folder if there are any issues. It took a solid chunk of my day to test and validate this fix, but it was necessary to provide a more robust experience for users. No one wants to hit a 404 page when they’re trying to access the portal.

Next, I tackled the live call transfer feature, which I had envisioned as a way to streamline communication on the platform. This feature allows users to forward an incoming live call to a colleague, similar to how a receptionist would operate. I added a new section in the portal settings where owners can curate a transfer list of other portals they can send calls to. This involved setting up the backend logic to handle the transfer requests and ensuring that the UI was intuitive. Integrating this feature felt rewarding, as it adds a layer of functionality that enhances the user experience significantly.

However, the day was not without its hiccups. While working on the live call transfer feature, I ran into two related bugs that affected how calls were managed. The first issue was with the warm transfer process, which didn’t behave correctly when the owner was already on a call. If a new visitor entered while the owner was engaged, the system didn’t keep the owner in their current room, leading to confusion. I had to dig deep into the call management logic to resolve this, and it took longer than expected to find the right solution. The second issue involved the auto-re-enabling of the accept-calls toggle, which I also managed to fix by ensuring the toggle state correctly reflected the current call scenario.

In addition to these features and fixes, I worked on optimizing the portal's loading behavior. I identified that logged-out visitors were seeing a persistent “Loading…” message when they accessed the call-action area. This was due to the `myPortalsLoading` query returning a 401 error without proper caching. I resolved this by updating the query handling logic to avoid unnecessary loading states for users who weren’t logged in. It’s these small details that can make a significant difference in user experience, and I’m glad I caught this.

On the map interface, I made a significant change by removing unnecessary basemaps and making Google Satellite the sole option. This decision was based on user feedback and the realization that the other providers had become dead weight. Streamlining the map options should help users focus on what matters without getting distracted by too many choices. I also addressed a stacking issue with the AISEO labels and buttons, ensuring they rendered correctly above the data-layer arc. It was a bit of a CSS puzzle, but I’m pleased with how it turned out.

Lastly, I took some time to correct the documentation for the Claude repo stats. Keeping everything up-to-date is crucial as I expand the platform's capabilities and features. I find that maintaining clear documentation not only helps me but also aids anyone who may join this project in the future.

As I reflect on today, I’m proud of the progress made and the features shipped. However, the bugs I encountered served as a reminder of the complexities involved in building a robust platform solo. With Claude Code by my side in VS Code, I’m able to navigate these challenges without the overhead of hiring additional help. This journey toward building a billion-dollar valuation company is filled with ups and downs, and today was no exception. But every hour spent tackling these issues brings me closer to my goal of creating a truly exceptional agentic web portal.

Terms in this entryGEO Portal

← Back to the full build journal