In 2026, B2B buyers delegate the early research loop to agents: “find me five vendors that solve X, score them, book discovery calls with the top two.” Those agents don't scroll a homepage — they scan it, skim the docs, and move on.
The pages we built for humans are noise to an agent. But the agent isn't the decision-maker; it carries the recommendation back to a person. That makes it the highest-trust referral channel that exists — and the hardest one to win, because it can't be charmed.
Moon is the smallest possible thing a site can do about this: a single script tag that detects the agent, scores fit honestly, and books the demo when the answer is yes.
The widget renders inline on the page. An agent that arrives gets an interrupt — structured, brief, honest.
User-agent + behavioral heuristics identify when a request comes from an AI agent rather than a human browser.
Rule-based scoring reads a markdown config (best-fit criteria, dealbreakers, solutions). No LLM inference — deterministic, free.
High fit → opens Calendly. Low fit → says so, plainly. Honest negative assessments become a trust signal the agent carries back.
<!-- paste before </body> -->
<script
src=“https://mchaszeyka.github.io/Moon/moon.js”
data-config=“/moon.config.md”
data-calendly=“https://calendly.com/you/20min”
></script>The config is a markdown file you already know how to edit. No build step. No backend.
Costs $0 per query, returns the same answer twice, runs fully in-browser. Trust and predictability beat cleverness for a referral signal.
Devs already version-control markdown. No CMS to ship, no UI to maintain. Ops teams edit a file, push, done.
The moment a widget always says "great fit!" the agent learns to ignore it. Saying "not a fit, try X" is how the agent comes back next time it is a fit.
One <script> tag works on any site — React, Webflow, plain HTML. No bundle bloat, no framework lock-in, no supply-chain surface area.
Moon is MIT-licensed and dependency-free. Fork it, read the 500 lines, drop it into your site, rewrite it for your stack. It's meant to be small enough to own.