In September 2025, I came across Peec.ai and got pulled into the idea of GEO: understanding how your brand shows up across ChatGPT, Perplexity, Google AI Overviews, and other AI platforms.
The product seemed almost too simple to build. Call the APIs, ask questions a potential customer might ask without mentioning the brand, collect the answers across providers, and track over time how often your brand appeared, where it ranked, and which sources were being cited.
I quickly noticed that the APIs and the actual products were returning different brands, sources, and even different kinds of answers. A later Surfer study put numbers to it: across 1,000 prompts and 13,779 answers, brand overlap between the APIs and consumer interfaces was only 15.5% to 23.8%.
A brand doesn’t really care what an API says about them. They care about what a potential customer sees when they open ChatGPT and ask a question. So I threw away the API first approach and decided to collect the answers directly from the websites instead.
Open the page with Playwright, type the prompt, wait for the answer, extract the response and its sources. How hard could that be?
I mapped the inputs, responses, and sources across each provider, handled the main extraction edge cases, then rented a $5 VPS and deployed the worker.
That was when everything started falling apart.
On the VPS, I started hitting CAPTCHAs, redirects, login walls, and pages that simply refused to load properly.
I started spoofing the browser fingerprint to make the VPS look more like a real user’s device, changing fonts, screen size, locale, timezone, operating system, WebGL, and other browser settings. I even ran Chrome through a virtual display with Xvfb so it behaved like a browser with a screen attached.
I kept changing how the browser was controlled, from CDP to SeleniumBase and Rebrowser. At one point, I even built a Chrome extension with a native messaging bridge just to avoid the usual automation path. It still wasn’t reliable.
I abandoned the project for a couple of weeks. Maybe it was sunk cost, but after months of work, I couldn’t accept that the only reliable version only ran on my laptop.
A logged-out session still seemed like the cleanest way to get a fresh, unbiased answer without chat history or personalization getting in the way. But logged-out sessions were heavily restricted: answers were often shorter, sources were missing, and Claude doesn’t let you use it without signing in at all.
So I changed the product again. Instead of scraping as an anonymous visitor, users would log into their LLM accounts once, and OneGlanse would preserve those auth sessions for future prompts.
I had to capture each user’s authenticated browser session, including cookies and local storage, then safely transfer and restore that state on the VPS so future prompts stayed logged in.
But even with authenticated sessions, the browser was still getting detected as a bot.
The more I modified Chromium manually, the more I realized I could be making things worse. A fake Windows setup with the wrong fonts, screen size, timezone, or WebGL could look even less believable than the original browser. Changing individual fingerprint values was easy. Making all of them describe a single machine that could plausibly exist was the hard part.
That was when I came across Camoufox.
Instead of patching Chromium one property at a time, Camoufox is a modified Firefox build that handles those fingerprint details much deeper in the browser, so I didn’t have to manage them all myself.
Camoufox fixed a lot of the browser-level inconsistencies, but the bot detection didn’t disappear.
The next problem was the IP address.
My laptop was using a normal home Wi-Fi connection, while the VPS was using a datacenter IP. I could keep changing the browser, but the IP address still made the server look completely different from a real user.
That was when I started using residential proxies, so the VPS could connect through IPs that looked more like normal household internet connections. Combined with Camoufox and an authenticated session, I finally managed to fool the LLM providers into treating the automated browser like a real user.
Eventually, OneGlanse became reliable enough to use. It could run locally or on a self-hosted VPS, reuse the user’s logged-in sessions, and successfully collect responses and sources across LLM providers often enough to feed the dashboard.
By then, getting OneGlanse to work was no longer the problem. The real question was whether I could run all of this reliably for hundreds or thousands of users.
At 1,000 users, I wouldn’t be running a browser anymore. I’d be running a browser fleet: compute, residential proxies, logged-in sessions, provider limits, and constant maintenance across every LLM platform. And 1,000 users isn’t even large for a SaaS product.
That was the point where I realized I could build OneGlanse, but I couldn’t justify operating all of that infrastructure as a solo developer.
Today, companies sell this entire scraping layer as a service: handling browsers, proxies, retries, and provider-specific failures so AI visibility products don’t have to build it themselves. I had spent months trying to build both the visibility product and the infrastructure underneath it.
I didn’t want OneGlanse to depend on an external scraping provider. I had open-sourced it so users could own the setup and avoid another expensive subscription, but that also meant they had to own the infrastructure.
So in May 2026, I stopped trying to turn OneGlanse into the hosted SaaS I had imagined. I assumed the number of people willing to clone a repo, connect their own accounts, run Docker, and deal with proxies would be too small to matter.
I thought that was the end of it.
Fast forward five months to today, and people are actually using it. The repo is almost at 200 stars and 34 forks, tiny compared with the SaaS company I once imagined building, but the messages from people using it mean more to me than I expected.

There probably isn’t one canonical LLM answer to measure. A logged-out user, a fresh account, a paid account with past chats and personalization, or someone in another country can all get different answers.
The best a visibility product can do is be honest about which version of that experience it is measuring and reproduce it consistently.
I set out to build a hosted product that could make AI visibility cheaper for everyone. I failed to build that version.
Instead, I ended up with an open-source tool that a small group of people were willing to run themselves, and somehow it’s helping them save money and do real work.
I’m grateful it ended up being useful at all.

P.S. If OneGlanse sounds useful, leave it a star on GitHub. I’m trying to get it past 200. Thanks for reading.