Build Journal

Geo Improvements & SEO Sitemap Optimization — August 23, 2026

I optimized geo features and prioritized sitemap shards for better SEO. Discover the challenges I faced and how I overcame them while building hashtag.org.

5 changes3 min readby Rob

What shipped

  • Geo Accuracy EnhancedImplemented dual-query for accurate location detection.
  • Heap Size IncreasedRaised build heap to 6144 MB for stability.
  • Sitemap OptimizationPrioritized sitemap shards for better indexing.
  • PM2 Configuration FixedResolved environment issues for process management.

Today, I focused on enhancing the geo features and optimizing the SEO sitemap for hashtag.org. I ended up shipping one new feature and fixing four bugs, all in about two hours. The primary aim was to improve how our geographic data is handled while also ensuring that our sitemap is structured in a way that maximizes our exposure to search engines.

The first major fix was related to the geo functionality. I realized that users were being inaccurately identified based on their locations. For example, I was in Bogotá but was greeted with a message that I was connecting from Rionegro. This was due to a misconfiguration with the geo provider, where the IP lookup was being cached for 30 days, leading to inaccurate results. To fix this, I implemented a dual-query approach where both geo providers are queried to ensure more accurate results. This took longer than expected, as I had to dive deep into how the caching mechanism worked, but it was worth it to enhance user experience.

Next, I tackled a significant deployment issue. The environment I was using had a much larger heap size than I had initially configured for. It became apparent when my webpack build started thrashing the garbage collector due to a memory shortage. I had set the heap limit at 3072 MB, which was fine for the old 3.7GB VPS, but with the new 33GB box, it was woefully inadequate. The build failed with an out-of-memory error after running for over an hour. I raised the build heap to 6144 MB, which provided the necessary breathing room for the build process. This fix was a bit of a headache, as I had to roll back the settings and then carefully monitor the build process to ensure everything was stable.

Another deployment-related fix involved ensuring that the PM2 process manager was set up correctly under systemd. After the last sitemap deployment, I noticed that only the geo-portal was being restarted, leaving other components hanging. I had to set the PM2_HOME environment variable correctly to ensure the processes could pick up the necessary chunks without any hiccups. It was a reminder of how critical environment configurations can be when deploying applications, especially when multiple services are interconnected.

The final fix was about the sitemap itself. Previously, our hashtag inventory sitemap shards were organized alphabetically, which meant Googlebot was wasting its crawl budget on less valuable pages before getting to the more important ones. To optimize this, I prioritized the shards based on page value. This involved a fair amount of data analysis to determine which pages had earned their index slots and should be crawled first. I’m eager to see how this change impacts our search visibility in the coming days.

As I reflect on the day, I’m reminded of the challenges of building hashtag.org solo, especially while leveraging Claude Code in VS Code. It’s an interesting dynamic to have AI as a collaborator, but it also means I have to be more diligent about oversight. I couldn’t imagine managing all these deployments and fixes without AI assistance, but I also know that my own understanding of these systems is crucial for long-term success. I’m building toward a one-man-show company with a billion-dollar valuation, and every small improvement counts.

In summary, today was a mix of geo improvements and SEO optimizations that took me down some unexpected paths but ultimately led to a stronger foundation for the platform. I’m looking forward to tomorrow’s challenges and what I can accomplish next.

Terms in this entryHashtagGEO Portal

← Back to the full build journal