Behavioral intelligence for AI coding agents
Drop-in behavioral tracking that AI coding agents can read, query, and fix — in one conversation.
<script
src="https://useractivity.ai/tracker.js"
data-site="YOUR_SITE_ID"
defer
></script>The problem
Millions of apps ship from AI coding tools every month — fast, and blind.
Prompt “build a signup flow” and you get the flow — not tracking for drop-offs, rage clicks, or abandonment. Observability is never on the happy path.
PostHog, Mixpanel, Amplitude output charts for humans. Not a knock — a different job. Your agent needs structured data and prose it can reason about.
You can’t say “users drop off at step 3 — fix it” and have your agent act on real behavioral data. Behavior and code never meet.
The moat
record_change → get_change_impact. The step every other tool skips.
Collecting behavior is table stakes. Closing the loop is the product.
Fig. 1 — The closed loop. Every analytics tool stops at “here’s the data.” UserActivity adds the return arc: your agent records a change, then get_change_impact measures whether it actually worked. Watch the whole loop close, with sample data →
How it works
Paste a single line into your HTML. Works anywhere — React, Vue, Svelte, vanilla, Lovable, Vercel.
<script src="https://useractivity.ai/tracker.js" data-site="YOUR_SITE_ID" defer></script>Add the hosted MCP server to your project. Nothing to install — your agent connects directly.
// .mcp.json (Claude Code, Cursor, etc.)
{
"mcpServers": {
"useractivity": {
"type": "http",
"url": "https://useractivity.ai/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}Ask about real user behavior. Your agent queries the data, finds the problem, fixes it, and confirms the fix — all in one thread.
You: “Users aren’t converting on signup. What’s wrong?”
Agent: [calls get_frustration_signals for /signup]
Agent: “The signup page scores 34/100. 67% never scroll past
the first fold and 11% u-turn. Move the CTA above the
fold? I can ship it and check whether it worked.”The output
Same data over MCP, CLI, or a context file committed to your repo.
Not a dashboard. Structured payloads and natural-language summaries, designed to be read by a model and acted on in the same turn.
{
"command": "frustration",
"site_id": "abc-123",
"score": 72,
"narratives": [
{ "severity": "warning", "summary": "Dead clicks on /pricing",
"detail": "12% of sessions click non-interactive elements" },
{ "severity": "critical", "summary": "Rage clicks on checkout submit",
"detail": "8% of sessions show 3+ rapid clicks on .btn-submit" }
]
}// get_change_impact({ change: "moved CTA above the fold" })
{
"verdict": "improved",
"frustration": { "before": 34, "after": 71 },
"scroll_reach": { "before": "33%", "after": "78%" },
"summary": "The fix worked. Fold drop-off fell 45 pts;
rage-clicks on .btn-submit are gone."
}Honest by default
Source-available so you can verify exactly what is collected.
No PII, no cookies, no session replay, no fingerprinting. Anonymous behavioral patterns only, truncated at every boundary. DNT respected.
The tracker is MIT — audit exactly what runs in your users’ browsers. Read the source →
UA.ai is in Beta and tracks its own usage with itself. What works today →
One person, in public, by Roarke.
Pricing
Usage-based, not access-gated. Every feature is free through 500K events/month; paid plans kick in only when you scale. Founder pricing for early teams on the waitlist.
A populated dashboard and the full agent walkthrough — your agent finds a problem, fixes it, and confirms the fix worked — on sample data you can explore right now.