GIGIlistening…

Build Journal

Tavus Agent Improvements & Embed Enhancements — June 9, 2026

I improved the Tavus agent's goodbye protocol and enhanced embeds for better user experience. Here's what I learned while building today.

15 changes4 min readby Rob

What shipped

  • Tavus Goodbye Protocol ImprovedImplemented a stricter rule for agent farewells to eliminate double-goodbyes.
  • Owner Preview Duration ExtendedIncreased owner preview time from 3 minutes to 30 minutes.
  • GIGI Concierge Static EmbeddingRemoved cursor-chase behavior for a more cohesive user experience.
  • Luma Event Bug FixedSanitized unpaired surrogates to prevent process crashes.
  • Embed Widget Styling HardenedTransitioned to inline styles to ensure consistent layout across host sites.

My goal today was to improve the interaction model of the Tavus agent as well as the embedding experience in the portal. After a long day of 16 hours of work, I was able to push 15 commits, which included both feature updates as well as critical fixes. The biggest change I made was a complete revision of the Tavus goodbye protocol to ensure that it provides a seamless and more professional closure of the user interactions. I also fixed some bugs in order to improve the performance, along with the embedding mechanisms.

One of the biggest issues I resolved is the double-goodbye bug in the Tavus agent. Users were confused when agents gave multiple goodbye messages, which made interactions look unprofessional. I achieved this by creating a more strict goodbye protocol so that the agent gives a goodbye in one turn and does not respond if the user replies. This also removes unnecessary repetition which provides a better experience for the user. I felt that this change was necessary and it took a long time for me to set and test this rule, but it provides a lot of structure to the flow of conversation.

Another notable update was fixing the bug that capped owner previews to an incorrect lower duration. Owners were previously limited to 3 minutes, which was not a true reflection of the access they should have. I changed the owner previews to now accurately grant them up to 30 minutes, which reflects their true capabilities.

I implemented a new 30-second countdown warning banner so users can see their time running out. This also meant going into the throttling logic and making sure it played nice with the new timer settings. This involved a lot of work, but it was also an important improvement.

As for embedding, I made GIGI concierge easier to interact with by removing the cursor-chase behavior, meaning she can go into a stationary mode when not in use. This change helps ensure GIGI operates in tandem with Locate-me pill, improving the overall layout. It’s interesting how design choices can enhance user experience. I spent a lot of time yesterday testing different designs and spacing, and I'm very satisfied with the result.

While making these changes, I faced several bugs, some of which were more annoying than others. One example of this was a crash caused by a bad Luma event title which happened to have a truncated emoji. It was quite the unexpected end of a hex escape sequence and caused the entire Node process to crash, resulting in a domino effect of 500 error messages across the entire platform. Fixing this required preemptive surrogate pair cleansing before the JSON serializer, teaching me a very valuable lesson about the importance of input validation and the potential for a small character to create a big problem.

I also dedicated some time to reinforcing the embed widget against common styling issues that may affect its functionality on various host sites.

To guarantee that the embed maintained its layout despite the hosting CSS, I moved from stylesheet rules to using `!important` inline styles. It took a lot of trial and error, and the widget working seamlessly in all different scenarios was quite the reward.

As I reflect on the journey, I have to say I appreciate the involvement of AI in all of this. Most of the development work is being done by me but I have to say tools like Claude Code in VS Code have helped a ton. I’m not just coding, I have an AI partner who is helping me tackle difficult problems and come up with ideas. The one man model is not a fantasy, I’m getting closer to my goal of building a company with a billion dollar valuation with every commit.

There were a lot of challenges and victories but every commit got me closer to improving the Tavus agent and the overall experience of the users of the platform. The end is not in sight, but I’m glad with the progress and the direction the work is headed. The solo path has a lot of lessons and if it is not obvious already, I’m really looking forward to the next steps.

← Back to the full build journal