About this project
Elmo is an open-source, self-hosted platform for AI visibility tracking and optimization, covering what its authors call Answer Engine Optimization (AEO), Generative Engine Optimization (GEO) and LLM Optimization (LLMO). It is positioned as a free alternative to closed SaaS tools in the same space, and its stated differentiator is that every metric can be inspected in the repository rather than taken on faith.
What it tracks
- Visibility scoring: for each tracked prompt, Elmo measures how often each configured AI answer engine mentions the brand, and trends that score over time per prompt and per model.
- Brand mention tracking: answers are checked for the brand name, aliases and domains, so mentions are counted consistently across engines.
- Citation analysis: every cited URL is stored with domain and position, then categorized into own domains, competitor domains, social media, Google properties and institutional sources.
- Competitor benchmarking and share of voice: a leaderboard of competitor mention rates alongside the user's own, plus overall share of voice over time.
- Query fan-out analysis: records the web searches engines run while grounding answers, shows how the engine rewrites the user's wording, and which searches the content wins or misses.
- Prompt management: an onboarding wizard analyzes a website and suggests keywords, competitors, buyer personas and tracking prompts; prompts can also be added manually, tagged and toggled.
- Opportunities: turns visibility and citation data into a prioritized, refreshed list of content and outreach suggestions.
- Reports: shareable visibility reports viewable by stakeholders without an Elmo account.
- REST API: manage brands, prompts and competitors, and pull analytics snapshots and reports programmatically.
Methodology
Prompts are defined per brand, either generated from the website or written by hand. A background worker runs each prompt on a schedule (several times a day by default) against every configured engine. Scraping providers capture consumer surfaces such as ChatGPT, Google AI Mode, Google AI Overviews, Gemini, Perplexity and Microsoft Copilot, while direct model APIs (OpenAI, Anthropic, Mistral, OpenRouter) add coverage for Claude, Grok and other models with web search enabled. Each run produces answer text, cited URLs, the engine's grounding searches and the model version; the text is scanned for the brand's and competitors' names, aliases and domains. Everything, including raw engine output, is stored in PostgreSQL so metrics can be re-derived later. Visibility is the share of runs mentioning the brand; share of voice compares mention rates against competitors; citation counts roll up by URL, domain and category, filterable by prompt, tag, engine and time range.
Deployment and stack
Self-hosting uses Docker Compose, initialized through the @elmohq/cli npm package (elmo init, then elmo compose up -d), after which the app is available on localhost:1515. A managed cloud option and a white-label deployment with custom branding, custom domain and SSO are also offered. The stack is TypeScript, TanStack Start, PostgreSQL and pg-boss, with a web app serving the dashboard and REST API, a worker executing prompt runs, and PostgreSQL holding both data and the job queue. The project is MIT-licensed and documents a contribution workflow with a CLA process.
The README also maintains a comparison table against closed tools such as Profound, Peec AI, Otterly AI, Scrunch, Ahrefs Brand Radar, Semrush AI Toolkit and HubSpot AEO Grader, and openly notes features those tools have that Elmo does not yet offer, such as prompt volume estimates, sentiment analysis, AI crawler analytics and on-page GEO audits.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.