Build Journal

Analytics Fix for Sogou, Yandex, and Exa Crawlers — August 17, 2026

I fixed analytics to correctly count Sogou, Yandex, and Exa crawlers as bots. This adjustment improves data accuracy and user insights.

1 change3 min readby Rob

What shipped

  • Fixed analytics bugCorrectly counted Sogou, Yandex, and Exa as crawlers.
  • Improved data accuracyEnhanced visitor tracking by filtering out bot traffic.
  • Optimized visit beaconAdjusted regex patterns for better identification.

Today, I focused on refining the analytics for my platform to ensure accurate visitor counts by addressing the misclassification of certain crawlers. Specifically, I implemented a fix to properly count Sogou, Yandex, and Exa as crawlers in the visit beacon. This adjustment was necessary because these bots were previously being counted as human visitors, which skewed my analytics data significantly. During a recent triage of the scrape-fleet incident from August 15 to 16, I observed around 170 sessions per day attributed to these bots, leading to a distorted view of genuine user engagement.

The task took about an hour of focused work. I started by diving into the analytics codebase, where I realized the visit beacon didn't account for certain user-agents effectively. Initially, I thought this might be a straightforward fix, but it proved a bit more complex than I anticipated. I had to analyze the user-agent strings associated with Sogou, Yandex, and Exa and determine the best way to integrate them into the existing logic without disrupting the overall functionality.

After some trial and error, I settled on modifying the regex pattern used to identify crawlers. The challenge was ensuring that the new patterns wouldn't interfere with the existing ones, particularly the YandexBot, which has various identifiers. I spent a considerable amount of time testing different scenarios to see how the changes would impact the analytics data. It was crucial to ensure that the bot traffic was properly filtered out, allowing me to obtain a clearer picture of real user engagement on the platform.

Once I implemented the fix, I ran a series of tests to verify that the analytics were now correctly distinguishing between human visitors and crawlers. I used a simulated environment to mimic traffic from these bots and confirmed that they were being logged correctly as crawlers. It was satisfying to see the analytics dashboard reflect more accurate data after the fix.

Reflecting on this process, I was reminded of the importance of having precise analytics in my journey as a solo builder. As I aim for a billion-dollar valuation with my one-man-show company, every piece of data counts. Accurate analytics inform my decisions on user experience improvements and feature developments. If I’m not tracking user engagement accurately, I risk investing my time in the wrong areas.

This fix is a small but significant step toward enhancing the platform's overall performance and reliability. It also underscores the value of being able to diagnose and resolve issues independently without relying on external teams or resources. In a world where many are quick to outsource, I find pride in tackling these challenges directly with the help of AI tools, like Claude Code in VS Code, which streamline my workflow.

Moving forward, I plan to continuously monitor the analytics to ensure that this fix holds up under various traffic conditions. I know that as I scale, new challenges will arise, and being prepared to address them promptly will be critical. Today’s fix not only improved the accuracy of my analytics but also reinforced my resolve to build a solid foundation for the future of my platform. As I grow, I will keep learning and adapting, leveraging AI to enhance my capabilities while maintaining the integrity of my vision for the agentic web.

← Back to the full build journal