GIGIlistening…

Build Journal

Improving Portal Leaderboard & Call Features — May 6, 2026

I improved the portal leaderboard and call features, enhancing user experience and fixing bugs while building my agentic web platform.

7 changes3 min readby Rob

What shipped

  • New Leaderboard EndpointIntroduced a dedicated /api/portals/leaderboard endpoint for better filtering.
  • Call Functionality FixFixed call persistence issues during transient auth failures.
  • Enhanced Video Call ControlsLocked down share-link guests to allow only portal owners to end calls.
  • Dynamic Navigation ToolsPhase 1 portal embed agent tool-calling harness implemented.
  • Improved User ExperienceConsistent styling updates for leaderboard and testimonial displays.

Today, I improved the portal leaderboard and calling features on my agentic web platform, making some major enhancements and fixing some bugs that had been annoying me. In a very focused four-hour session, I was able to push out five feature enhancements alongside one major bug fix. Most of these updates were around improving the experience of the video calls and the leaderboard functionality.

The most significant improvement was adding a dedicated endpoint for /api/portals/leaderboard. Before this, the leaderboard was pretty messy as it reused the /api/portals endpoint, which returned a list of scraped events, creating a more confusing leaderboard rather than a useful one. The new endpoint, however, sorts portals by total visits in descending order and eliminates events, ephemeral, and non-# rows at the database level. So now when users view the leaderboard, they will see a better representation of the active portals, such as #SPACE and #freakncreekn. This makes the experience a lot more relevant.

In addition to this, I made sure to remove events and ephemeral pins from the leaderboard so irrelevant scraped Luma rows didn’t take over the chart. I also remade the testimonial ticker styling to match the stats numbers on the homepage. This is a small detail, but I think it helps create a more cohesive design. The colors now change from slate-900/45 light to dark soft purple gradient, and I think it looks really good.

On the technical side, I addressed a bug related to call functionality. The fix was to ensure that we keep the cached user on transient /api/auth/me failures. This was important as it caused users to be dropped from active calls from map-zoom backpressure in the Jitsi embed. By removing user.id from the dependencies, I was able to greatly improve the call experience.

This improvement not only increases user retention on calls, but also helps prepare the phase 2 upgrades for the portal AI embed harness.

Regarding the portal AI embed, I have made progress in expanding the initial tool-calling harness. This phase 1 implementation has seven tools, including get_portal_facts and search_my_knowledge, which will help users engage more dynamically with the portal. The widget also displays directions and maps and opens URL’s as inline pill buttons. This should help improve navigation. I look forward to the potential of these tools.

I have restricted who can end video calls to only the portal owner. This is consistent with the hash-config parity we have set up with the embed. It’s an important update to custodianship during calls. Owners in particular need to have the authority to determine when a session will be ended. I also made a small but significant change to the slide-over opening correctly by adding &details=1 to the /portals/<id> redirect.

I made some good progress today which is always nice to see! The changes I made to the portals leaderboard and calls functionality will improve user experience and show that I’m serious about building a solid agentic web platform. Working alone and using AI tools like Claude Code in VS Code to support me means that I can move rapidly and make all of these changes without the frustration of having to bring a full team on board. Each commitment and each iterative improvement moves me a little closer to my goal of building a company that’s worth a billion dollars.

It’s important to remember that building in public means that you will show both the wins and the losses. Today was a good day but there will always be more bugs to fix and features to improve. I can’t wait to keep going and watch my platform evolve!

← Back to the full build journal