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.
What shipped
- Live Call Transfer Feature — Users can now forward calls to colleagues seamlessly.
- Deployment Stability Fix — Prevented site outages from failed builds.
- Map UI Optimization — Google Satellite is now the only basemap option.
- Improved Loading Behavior — Resolved loading issues for logged-out visitors.
Today, I worked on improving the ability to transfer live calls and resolve some important deployment issues from last week. I want to make sure users have a good experience interacting with our agentic web portal because I want to make this a one-man-show company worth a billion dollars. I worked for about 11 hours straight and while I built up a lot of frustration, I was also able to build up a lot of progress.
One of the first things I did was fix the deployment process on my VPS, as that was long overdue. I was reminded last week how an incomplete `npm ci` can ouch havoc on a website. I have put some measures in place to ensure that that the site goes down due to a build failure. This means that the building process will not replace the live `.next` folder. It took up a lot of my time today to test and verify this fix, however, the users really appreciate it. No one wants to hit a 404 page when they’re trying to access the portal.
I then focused on the live call transfer feature which I thought would help improve the communication features on the platform. Users can now forward live calls to other users the same way a receptionist would. I created a new section in portal settings, where portal owners can define a transfer list of other portals to which calls may be sent. This meant building the backend logic to manage these transfer requests, as well as a straightforward UI for sending the requests. Being able to add this feature was rewarding, as I knew it would enhance the platform.
The day was not without its challenges, however. While building out the live call transfer feature, I encountered a couple of related bugs which affected various call management features. The issue I had first was with the warm transfer process, and how it did not operate correctly when the owner was already on a call. The system did not move the owner out of their room, which created confusion. This required a deep dive into the call management logic, and I spent a lot of time chasing the right answer. The second issue, which I also resolved, was the auto re-enabling of the accept-calls toggle, which was related to the correct state of the toggle reflecting the current state of calls.
I also worked on portal load behavior optimizations. I noticed that logged-out visitors had a repetitive “Loading…” message in the call-action section. This was due to an un-cached 401 error from the `myPortalsLoading` query. I updated the query logic to prevent loading states for logged-out users. I’m happy I caught this as these little things can provide a better user experience.
To improve the map interface, I removed some basemaps and made Google Satellite the only one. This was based on user input as the other providers were considered dead weight. With fewer options, I hope users can focus on what matters. I improved the stacking of AISEO label buttons so that they render correctly above the data-layer arc. This was a CSS puzzle that I’m proud of.
Lastly, I took some time to correct the documentation for the Claude repo stats. As I add more features and capabilities, I find it crucial to keep everything up to date. Good documentation helps me, and it will also help anyone else who joins this project.
Looking back on what I accomplished today, I am proud of the progress I made and the new features I released. Nevertheless, the bugs I ran into today were a reminder of the challenges I face by trying to build a solid platform on my own. Although my competitor Claude Code helps me with a lot of my coding challenges in VS Code, I still find myself having to solve many of the problem without the cost of hiring someone. Building a company that will one day be valued at a billion dollars is a roller coaster, and today was no different. However, each problem that I solve gets me one step closer to achieving my vision of building a truly awesome agentic web portal.