<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: cooleryu</title>
    <description>The latest articles on DEV Community by cooleryu (@cooleryu).</description>
    <link>https://dev.to/cooleryu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4244143%2F14172d16-24bb-4571-ac3c-5d64f92bdad4.jpg</url>
      <title>DEV Community: cooleryu</title>
      <link>https://dev.to/cooleryu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cooleryu"/>
    <language>en</language>
    <item>
      <title>I Built an Open-Source AI Visibility Tool, Tested It on Myself, and Scored 0/16 (OpenGEO)</title>
      <dc:creator>cooleryu</dc:creator>
      <pubDate>Sat, 14 Nov 2026 09:08:08 +0000</pubDate>
      <link>https://dev.to/cooleryu/i-built-an-open-source-ai-visibility-tool-tested-it-on-myself-and-scored-016-opengeo-48nl</link>
      <guid>https://dev.to/cooleryu/i-built-an-open-source-ai-visibility-tool-tested-it-on-myself-and-scored-016-opengeo-48nl</guid>
      <description>&lt;p&gt;I’m building OpenGEO&lt;br&gt;
 in public — an open-source, local-first workbench that checks whether ChatGPT and Google AI Overviews actually mention and cite your product. Last week I used it to audit OpenGEO itself across 8 real buyer prompts (16 live answers).&lt;/p&gt;

&lt;p&gt;Our score came back at a brutal 0 out of 16. When I asked what are the best open-source alternatives to Otterly AI and Profound for AI search visibility?, both engines returned tidy shortlists of five to six projects — Elmo, Limelit Open, GEO/AEO Tracker, OneGlanse, Gego, Searchstack AEO — complete with comparison tables and a top pick. Worse, when I asked directly What is OpenGEO?, both engines confused my repo with a completely unrelated Pupok462/open-geo project. The uncomfortable realization wasn't that everyone else built a better product — it's that AI search builds shortlists exclusively from pages already legible to it, and our repo wasn't even in the pool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwjew1ftds0xgf36eill8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwjew1ftds0xgf36eill8.png" alt="OpenGEO overview baseline showing 0/16 mentions across 8 core customer prompts on ChatGPT and Google AI" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our baseline in OpenGEO before rewriting docs — 0 out of 16 captured ChatGPT and Google AI answers mentioned &lt;code&gt;cooleryu/opengeo&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is the practical audit-and-rewrite loop that gets you into that pool, and you can run the first round in an evening: ask the exact questions buyers actually type, store every verbatim answer and cited source, inspect the top three winner pages side by side, and rewrite your own front page and onboarding docs to close the structural gaps. Once your changes ship, re-run the identical prompts and keep both rounds on one timeline.&lt;/p&gt;
&lt;h2&gt;
  
  
  What does an AI answer look like when it recommends your competitor?
&lt;/h2&gt;

&lt;p&gt;It reads like a procurement brief with sourcing baked in. Look closely at what showed up when we opened Question #2 (&lt;em&gt;open-source alternatives to Otterly AI and Profound&lt;/em&gt;) inside our captured evidence view:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjffoajlbi3bev3olnofo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjffoajlbi3bev3olnofo.png" alt="OpenGEO question detail showing the ChatGPT and Google answers side by side with extracted competitors" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Capturing the exact question alongside the full answer and every competing tool named instead of you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every candidate that made the cut carried four consistent building blocks: a plain category definition in line one, a clear license and deployment signal (&lt;code&gt;Self-hosted · GPL-3.0&lt;/code&gt; or &lt;code&gt;MIT · SQLite&lt;/code&gt;), a bulleted capability list using buyer language, and an implicit or explicit &lt;em&gt;best for&lt;/em&gt; sentence. Beneath the prose sat GitHub repositories and concise product homepages. You aren't competing with a competitor's roadmap in that moment — you're competing with how clearly their landing page answers the prompt.&lt;/p&gt;
&lt;h2&gt;
  
  
  How do I capture real answers without buying an enterprise tracker?
&lt;/h2&gt;

&lt;p&gt;Start with a fixed list of real buyer phrasing, ask across the engines your users trust, and keep the full raw text — never summaries. Four fields per record decide whether later comparisons actually mean anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The exact prompt word for word.&lt;/strong&gt; &lt;em&gt;Best GEO tools&lt;/em&gt; and &lt;em&gt;how can indie SaaS teams run local GEO checks without enterprise subscriptions&lt;/em&gt; trigger completely different retrieval sets. Lock the prompt once and reuse it unchanged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engine, entry point, and date.&lt;/strong&gt; ChatGPT logged-in web answers, Google AI Overviews, and developer API endpoints read different source snapshots on the same day. Never diff an API response against a consumer browser capture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verbatim answer text.&lt;/strong&gt; If your product name or disambiguating context isn't inside the captured text, you were skipped — full stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every named competitor and external link.&lt;/strong&gt; These URLs are your real content competition for the next sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing this in spreadsheets works for three prompts and falls apart once you track eight prompts across two platforms before and after edits. That bookkeeping annoyance is why we keep everything local inside &lt;a href="https://github.com/cooleryu/opengeo" rel="noopener noreferrer"&gt;OpenGEO&lt;/a&gt;: it runs your question set inside your own logged-in browser session at a calm human pace (pausing and handing control right back to you if Google pops a verification challenge), or takes full manual copy/pastes from an incognito tab, and keeps mentions and official-site citations audited separately on one screen.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["Ask the exact question a buyer types"] --&amp;gt; B["Save the full answer and every cited URL"]
    B --&amp;gt; C["Open the winner pages and map their structure"]
    C --&amp;gt; D["Rewrite your front page and guides to answer that gap"]
    D --&amp;gt; E["Publish, then re-ask the identical question"]
    E --&amp;gt; F["Compare before and after on one timeline"]&lt;/code&gt;&lt;/pre&gt;



&lt;h2&gt;
  
  
  Which pages actually got cited, and what do they share?
&lt;/h2&gt;

&lt;p&gt;Before changing a single paragraph on your own site, probe the external pages that already won the prompt. Across the winners we inspected (&lt;code&gt;getgego.org&lt;/code&gt;, &lt;code&gt;elmohq/elmo&lt;/code&gt;, &lt;code&gt;limelit-co/open&lt;/code&gt;), five patterns showed up over and over again:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A category definition in sentence one.&lt;/strong&gt; Not marketing copy. Plain grammar: subject, category, deployment model, primary job (&lt;code&gt;Self-hosted GPL-3.0 CLI + dashboard&lt;/code&gt; or &lt;code&gt;Open-source, local-first AI search visibility workbench&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;H2 headings phrased around buyer concerns.&lt;/strong&gt; Look at the live headings we pulled from &lt;code&gt;getgego.org&lt;/code&gt;: &lt;em&gt;Know how AI sees your brand&lt;/em&gt;, &lt;em&gt;One tracker for every major LLM&lt;/em&gt;, &lt;em&gt;From SEO research to competitive GEO&lt;/em&gt;. Models extract section headings verbatim when assembling "how it works" summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit disambiguation if a similar name exists.&lt;/strong&gt; If another repository or extension shares your name, state who you are and who you are &lt;em&gt;not&lt;/em&gt; directly on your canonical README so retrieval models stop merging the two entities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest best-for and not-for boundaries.&lt;/strong&gt; Saying &lt;em&gt;hosted SaaS tools are better if you want zero setup and weekly hands-off reporting&lt;/em&gt; builds credibility and gives comparison prompts clean material to quote.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real product screenshots with descriptive alt text.&lt;/strong&gt; Explaining an abstract workflow with three tables loses both developers and extractors; showing what the evidence view and draft diff look like anchors every claim.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What you borrow from winners is their outline clarity and directness — never their wording, claims, or benchmarks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do open-source and local GEO tools differ from paid SaaS monitors?
&lt;/h2&gt;

&lt;p&gt;They answer different halves of the problem. Hosted monitors tell a marketing team whether share-of-voice moved last Tuesday. Self-hosted and local tools keep the raw evidence in your hands so engineers and docs owners know which exact file to ship next week.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;How answers are collected&lt;/th&gt;
&lt;th&gt;Where data lives&lt;/th&gt;
&lt;th&gt;What you walk away with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Otterly.AI / Profound / Peec AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams with budget who want scheduled multi-engine tracking and weekly reporting dashboards&lt;/td&gt;
&lt;td&gt;Cloud-scheduled runs on vendor infrastructure&lt;/td&gt;
&lt;td&gt;Vendor cloud (monthly SaaS subscription)&lt;/td&gt;
&lt;td&gt;Trend charts, share-of-voice metrics, CSV/PDF exports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Elmo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams wanting an open-source monitoring platform closest to a SaaS tracker&lt;/td&gt;
&lt;td&gt;Self-hosted workers calling your own model/API keys&lt;/td&gt;
&lt;td&gt;Your server &amp;amp; database&lt;/td&gt;
&lt;td&gt;Brand mention rates, citation logs, competitor tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Limelit Open&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Developers looking for a compact self-hosted setup&lt;/td&gt;
&lt;td&gt;Self-hosted single binary + SQLite&lt;/td&gt;
&lt;td&gt;Your host machine&lt;/td&gt;
&lt;td&gt;Mention &amp;amp; citation tracking plus MCP integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gego&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams running scheduled prompt analytics across providers&lt;/td&gt;
&lt;td&gt;Self-hosted CLI + dashboard&lt;/td&gt;
&lt;td&gt;Your server&lt;/td&gt;
&lt;td&gt;Keyword/domain analytics across supported LLMs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GEO/AEO Tracker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Engineers customizing automated scoring and sentiment pipelines&lt;/td&gt;
&lt;td&gt;Self-hosted CLI &amp;amp; dashboard&lt;/td&gt;
&lt;td&gt;Your machine or server&lt;/td&gt;
&lt;td&gt;Visibility scoring, position tracking, battlecards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GetCito / Selfwin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Small teams wanting self-hosted prompt tracking plus light recommendations&lt;/td&gt;
&lt;td&gt;Self-hosted app&lt;/td&gt;
&lt;td&gt;Your server&lt;/td&gt;
&lt;td&gt;Prompt tracking, citation loss checks, fix hints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenGEO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Maintainers and indie SaaS teams who want browser-captured evidence paired directly with ready-to-publish rewrites&lt;/td&gt;
&lt;td&gt;Real logged-in browser session for ChatGPT &amp;amp; Google AI Overviews (or manual paste) + optional DeepSeek/Qwen/Doubao APIs&lt;/td&gt;
&lt;td&gt;100% local SQLite on your machine&lt;/td&gt;
&lt;td&gt;Verbatim answers, cited-winner structure breakdown, 1–3 complementary drafts with before/after diff, per-draft adoption, same-question retest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two practical realities belong right next to that table: self-hosted still incurs API or model billing when you query online or generate drafts, and if all you want is hands-off weekly keyword reporting across ten engines, a paid SaaS monitor genuinely saves time. Choose the tool built for the bottleneck you actually have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning cited-page gaps into drafts you actually ship
&lt;/h2&gt;

&lt;p&gt;Finding a gap isn't the finish line; staring at an empty Markdown file next Tuesday is where most teams stall. Inside OpenGEO's optimization studio, once we pick the missing questions (&lt;code&gt;0/16&lt;/code&gt; baseline across category and brand prompts), the workbench probes the cited winner pages first and lays out a small set of complementary deliverables rather than three copies of the same pitch: a clearer repository README, a concrete Getting Started guide, and a public field teardown like this post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5e06f60d8qc6s5923vgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5e06f60d8qc6s5923vgo.png" alt="OpenGEO optimization studio displaying cited winner references, markdown article preview, and per-draft adoption controls" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Optimization Studio — review each draft against its target prompts, inspect what changed line by line, and adopt or export one piece at a time.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every project profile, captured answer, and API key stays on your own disk, so browsing saved evidence costs nothing and nothing ever pushes online without you choosing to adopt or copy it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should I rewrite first, and how do I verify it worked?
&lt;/h2&gt;

&lt;p&gt;Focus on your highest-leverage canonical page before scattering edits everywhere else:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rewrite sentence one&lt;/strong&gt; of your README or homepage to state category + deployment + core loop in plain nouns and verbs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turn major H2 headings into concrete buyer questions&lt;/strong&gt;, especially comparison and setup questions (&lt;em&gt;How it differs&lt;/em&gt;, &lt;em&gt;Supported platforms&lt;/em&gt;, &lt;em&gt;How it works&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add one explicit disambiguation line&lt;/strong&gt; near the footer (or quick intro if actively confused) naming the canonical repo URL and what unrelated projects it isn't affiliated with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship one workflow guide or comparison teardown&lt;/strong&gt; backed by real captures and real UI screens instead of generic marketing claims.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After shipping, give search crawlers and model indexes several days to two weeks — re-testing ten minutes later just hits stale caches. Then re-run the &lt;strong&gt;exact same prompt&lt;/strong&gt; on the &lt;strong&gt;exact same browser or API entry point&lt;/strong&gt; and compare before vs. after side by side: first look for your domain appearing inside cited links (that unlocks the candidate pool), then verify whether your product's description stopped getting mixed up with lookalikes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try a ten-minute audit tonight
&lt;/h2&gt;

&lt;p&gt;Pick one question a real customer would ask before buying your product, run it in a clean ChatGPT or Google session, and save the full text and every link underneath. Count how many of those cited URLs point back to you. That single honest baseline is worth more than any guesswork dashboard.&lt;/p&gt;

&lt;p&gt;If you want to manage that whole loop — local browser capture, winner breakdowns, draft diffs, and side-by-side retesting — on your own machine, OpenGEO is open source at &lt;strong&gt;&lt;a href="https://github.com/cooleryu/opengeo" rel="noopener noreferrer"&gt;https://github.com/cooleryu/opengeo&lt;/a&gt;&lt;/strong&gt;. Drop the repo URL into the AI coding assistant you already use (Claude Code, Cursor, Codex, or Antigravity) and ask it to get the local workbench running so you can inspect your own first eight questions tonight.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>geo</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
