AI & Machine Learning

Stop Paying $500/Month to Ask Dumb Questions About Your Brand

A

Adil Sher

Author

Oct 26, 2026
5 min read
1 views
Stop Paying $500/Month to Ask Dumb Questions About Your Brand

Last month, a client asked me something that made me realize how broken our assumptions about AI visibility are. They'd been paying a SaaS tool $49/month to tell them whether ChatGPT mentions their product, and the dashboard was giving them contradictory signals every week. One day they're position 1, the next day position 5. They asked me to debug it. I couldn't, because the tool wasn't buggy. The AI models themselves just aren't deterministic.

That conversation stuck with me. So when I stumbled across a developer's approach to solving this problem with a weekend of work and zero dependencies, I had to write about it. Because here's what bothered me: we've let marketing vendors convince us that AI visibility is some complex, proprietary thing worth hundreds of dollars a month. It's not. It's three measurements. That's it.

What We're Actually Trying to Measure

The original article nails something I've been thinking about for months. When someone asks "does an AI model mention my brand," they're asking exactly three questions, whether they know it or not:

First: does the model mention you at all in a category query? That's a yes/no. Second: where does that mention appear? Position matters, position 1 in a headline carries weight that position 7 in a nested list doesn't. Third: who else gets mentioned, and how often? Context is everything.

Everything else sold to you as an "AI visibility metric" is noise or inference on top of these three facts. Citation graphs, trend dashboards, heatmaps showing "engagement velocity"-I've seen all of it. It's usually someone's attempt to justify the price tag.

The 300-Line Solution That Made Me Rethink Premium Tools

The developer built this in Python using only the free Gemini API tier and urllib. No ML libraries. No infrastructure. No dashboard. The script asks category questions, parses the responses for your brand name and competitors, detects whether you show up in headings versus nested lists, and generates a weekly HTML report.

I kept reading and thinking: "This is what my client needed. Not the $49/month dashboard. This."

Here's the core of it, the function that actually matters:

def find_brand(text, brand, competitors):
 text_l = text.lower()
 mentions = {brand: text_l.count(brand.lower())}
 for c in competitors:
 mentions[c] = text_l.count(c.lower())
 
 # Only count top-level mentions, not nested ones
 position = None
 for i, line in enumerate(headings_and_top_level_lists(text)):
 if brand.lower() in line.lower():
 position = i + 1
 break
 
 return {"mentions": mentions, "position": position}

The genius part? The headings_and_top_level_lists filtering. The developer caught a real problem: if you count every bullet point, you end up with false positives. A competitor mentioned as "the leader" in a heading will show up before you even if you're mentioned in a sub-bullet. That's a bug in the methodology, not the code.

My Take on the Bootstrap-vs-Premium Question

I respect what the developer did here, and I'm also being realistic about where this tool sits in the market. For a solo founder or a bootstrapped startup? This is perfect. It costs zero dollars, runs once a week on GitHub Actions, and gives you enough signal to decide "should I rewrite this landing page or ship a product feature?"

But I'm not going to pretend this replaces Otterly or Peec for a serious marketing team that needs daily tracking across multiple models. That's just honest. The tradeoff is real.

What changed my thinking, though: most companies don't need daily tracking across four AI models. They need to know if they're invisible, and a weekly signal on Gemini is often enough to answer that. They're overpaying because vendors convinced them that more data equals better decisions.

The other honest admission in the original post landed hard for me too, the non-determinism problem. LLMs return different wording each time. So position 1 this week might be position 3 next week, even if nothing on your site changed. The solution isn't a fancier dashboard. It's looking at a 4-week rolling median instead of obsessing over single-week changes.

What I'd Do Different

If I built this for a production service, I'd add fallback error handling for API failures and some basic rate limiting. I'd also probably add Claude and ChatGPT support, relying only on Gemini limits the insight. But that's scope creep. The developer stayed focused on the minimum viable thing.

Your Move

If you're spending money on AI visibility tools and you're not a team of 20+ marketing people, fork that repo. Spend an hour customizing it. Run it for a month. See if the signal matters to your actual business decisions. Chances are, you'll find that $49/month was solving a problem you didn't have.

What gaps am I missing? Is there something about tracking brand mentions across AI models that actually requires premium tooling, or have we just gotten used to overpaying for dashboards?


Source: This post was inspired by "How to check if ChatGPT, Gemini, Claude and Perplexity mention your brand (free Python script)" by Dev.to. Read the original article

Written by Adil Sher

Full stack developer building high-traffic platforms, AI services, and custom web applications. Explore my portfolio, learn about my background, or get in touch.

Related Articles

Why I Stopped Assuming AI Assistants See What You See
AI & Machine Learning Oct 24

Why I Stopped Assuming AI Assistants See What You See

Last month, I was working with a client who wanted to understand why their news content wasn't being cited in ChatGPT responses. They'd seen OpenAI's licensing deals with major publishers and assumed their own content would be swept into the training data automatically. When I du...

Stop Building Monolithic AI Agents, Trees Work Better
AI & Machine Learning Oct 23

Stop Building Monolithic AI Agents, Trees Work Better

I spent three weeks last month debugging a system where one Claude instance was supposed to handle research, planning, and code review simultaneously. The prompt ballooned to 4000 tokens. The latency grew. The model kept hallucinating because it was trying to context-switch betwe...