Your analytics cannot see AI agents.

entreprenoid measures traffic at your server boundary, so it counts the clients that never run JavaScript — and serves them a clean markdown twin from the same middleware.

import { entreprenoid } from "@entreprenoid/analytics/express";

app.use(entreprenoid());

Nothing loads in a visitor's browser. No client script, no cookies.

Measure the gap, then close it

See it. Every request classified at the boundary: AI crawlers, fetchers, search bots, agent browsers, humans — with the evidence and the confidence behind each answer.

Fix it. The same middleware serves a markdown twin when a client asks for one, so an agent reads your content instead of your markup.

We do not overstate what we know

The twin is served on Accept, never on identity

Markdown goes to a client that asks for it — by requesting .md or sending Accept: text/markdown. Never because of who we think it is.

Serving different content by User-Agent is cloaking, it forces Vary: User-Agent and destroys shared caching, and it lets a spoofable string decide what a visitor receives. A browser always gets the page.

What we collect

No request bodies. No cookies. No authorization headers. No raw query strings. No form values. A visitor's IP is used for coarse geography and crawler verification, then discarded within 24 hours — what remains is a site-scoped, daily-rotating pseudonym.