
Last week I was staring at my Google Analytics dashboard and my server CPU monitor at the same time. GA4 was telling me I had a modest day of traffic. My server was screaming, hitting 90 percent CPU usage and threatening to shut down my database.
I assumed I was getting hit by a massive traffic spike that GA was just slow to report. I SSHd into my server to check the Nginx access logs. What I found completely changed how I view the modern web.
The traffic was not human. It was a wall of automated scrapers, headless browsers, and aggressive AI agents. They were hitting every single endpoint on my application, exhaustively comparing data and scraping content.
I started digging into recent cybersecurity reports and the data is staggering. For the first time in a decade, automated bots surpassed human traffic. They now account for over 50 percent of all web activity. More alarming is the rise of agentic AI. Bots acting on behalf of users to execute multi step workflows saw massive growth recently.
This created a terrifying realization. The internet has fundamentally shifted from a human dominated ecosystem to a machine dominated infrastructure. Standard web architecture, marketing analytics, and cybersecurity defenses were all built under the assumption that the vast majority of requests hitting a server are initiated by a real person using a browser. That paradigm is officially dead.
The AI Multiplier Effect on Infrastructure
The big issue is not just that bots exist. It is that the nature of these bots has violently shifted from passive reading to active, resource heavy interaction.
When a human shops for a product, they might view three or four pages, find what they want, and leave. When an AI agent performs a research or shopping task, it does not satisfice. It compares data exhaustively. An AI agent will visit a thousand times more pages than a human performing the exact same task.
This creates an astronomical drain on server CPU, database queries, and bandwidth costs. I was paying for server resources to serve machines that will never buy my product.
Complete Analytics Blindness
I realized my analytics were completely polluted. When bad bots mimic human behavior, traditional analytics tools become useless. Conversion rates, daily active users, and campaign ROIs become largely fictional if half the traffic in a dataset consists of automated scraping scripts.
Google Analytics relies on client side JavaScript. This means it loses 20 to 30 percent of real human traffic to adblockers and privacy extensions. Worse, it remains completely blind to non JavaScript AI agents.
I was making product and content decisions based on bot inflated pageviews. My top pages in GA were just whatever endpoints AI crawlers happened to be scraping that day.
The Problem With Raw Logs
I knew the answer was in my server access logs. Server logs cannot be blocked by browsers. They represent the absolute ground truth reality of what is hitting a web application.
But parsing raw logs is a nightmare. A raw access log generates thousands of lines of uncontextualized text. Looking at an IP address and a request string tells you a request occurred, but it forces you to manually investigate who or what made it.
I was sitting there writing complex regex and looking up IP ranges manually. I was completely isolated. I only discovered a rogue scraper wave after it had already hammered my server and spiked my CPU. Reading local log files means you are always reacting.
If an aggressive scraper hits Website A, there is no way for Website B to know about it until it is too late. Predictive, network wide defense is impossible with local text files.
The Idea: Server Side True Traffic Intelligence
I got so frustrated with the gap between my fake analytics and my raw server logs that I started building a solution for myself. Now I am wondering if other founders and developers want this as a SaaS product.
The concept is a Server Side True Traffic Intelligence Platform. It ingests raw server access logs to provide the absolute ground truth reality of what is hitting a web application.
It separates real human visitors from AI indexers and malicious bots.
The core feature is a Tri Layer Analytics Dashboard. It splits raw server requests into three definitive categories.
First, Verified Human Traffic. Clean, accurate Daily Active Users and engagement metrics, completely bypassing client side blockers.
Second, AI and Search Crawlers. Visibility into how often models index the site, providing crucial Generative Engine Optimization insights.
Third, Rogue Bots and Scrapers. Identification of headless scripts, brute force attacks, and rogue rate limit offenders draining server CPU.
Instead of staring at the matrix of raw log text, the platform acts as an automated security and analytics analyst. It classifies request signatures in real time and converts raw log streams into human readable narratives. It tells you exactly what an IP cluster is doing and why it is dangerous.
By analyzing anonymized behavioral patterns across all connected server nodes, the platform creates a global threat network. If an aggressive scraper hits one website, the system flags the behavioral signature and automatically deploys pre approved blocking rules to other websites before they are ever targeted.
I also want to include one click WAF Rule Generation. When a malicious scraper is identified, the platform automatically generates blocking rules for IP ranges, specific ASNs, or User Agents. Users can instantly export these to Cloudflare, Nginx, or standard htaccess files to block the attackers.
Instead of relying on bot inflated metrics, the platform strips out headless scrapers, crawler noise, and datacenter IPs. It calculates a clean True Audience Quality Score. Whether a founder is preparing for an investor pitch, preparing a site for acquisition, or auditing traffic quality for high tier ad networks, the platform would deliver an auditable, verified report of real human reach.
Ingestion would be flexible. You could stream logs directly from Nginx or Apache via syslog with zero local storage footprint. Or you could deploy a lightweight background process that passively reads the access logs written to the disk. For people locked out of their origin server, they could integrate at the Cloudflare or AWS level to intercept traffic at the DNS layer.
The ultimate goal is to give users the un blockable, 100 percent server side ground truth of access logs, rendered inside a fast, modern analytics dashboard. Raw logs give you text files. This platform would give you analytics truth and automated bot defense.
I am trying to validate if this is a real pain point for others or if I was just uniquely unlucky with my server load.
How are you currently dealing with the explosion of AI scrapers and agentic bots hitting your servers? Are your analytics numbers completely skewed by automated traffic? Would a platform that separates your human traffic from the machines and automatically generates blocking rules be something you would pay for?
I would love to hear how other founders and developers are handling this shift in the web ecosystem right now. Let me know in the comments.
Outcome-linked scoring is the part I find most useful. I would be careful with upgrading a session based on a single low-effort action, though. A search or account creation may still be curiosity, while a completed workflow is stronger evidence. How are you thinking about the minimum outcome that moves a session from active to confirmed?
This is a real problem. Cloudflare's free tier bot fight mode handles most of it without building anything — worth ruling out before going the SaaS route.
The analytics pollution angle is the more interesting pain point to me than the security angle. Bot blocking is a solved problem at the infrastructure layer. But knowing your "top pages" are just whatever endpoints crawlers hit that day — and making product decisions on that — that's the part that actually costs founders real money.
Curious how you're thinking about the ICP here. A founder with a VPS and Nginx logs is pretty technical. The person who most needs "your analytics are lying to you" is probably less technical and running entirely on GA4 with no server access at all. Those are very different products.
I've been running into a version of this on the launch side — when you submit to directories and run outreach, the traffic that comes back is heavily mixed with crawlers re-indexing the new listings. Makes it genuinely hard to read whether a channel worked. Would your platform be able to attribute a clean human visit back to a specific referral source, or does it stop at human vs. bot classification?
Server logs and client analytics answer different questions, so I would avoid calling either one the complete truth. Logs show every request, including machines; client events show instrumented browser behavior and miss some humans. The useful system reconciles both, assigns a bot-confidence score, and reports product usage separately from infrastructure load. Publish classification error rates so founders know which decisions the data can support.
This is a real pain point. Bot traffic is changing fast, and founders need better visibility into what is actually using their infrastructure.
The interesting part is not only blocking bots, but understanding them. Knowing which agents crawl your site could become useful for GEO too.
Thank you so much for this feedback. Would you mind me onboarding you for initial test run? You'd be able to use it free for a year in return for helping me finetune the software from your feedbacks.
yes absolutely i can defiently give yo u my feedback having build over 500 tools i am sure i can give you some good feedback
The GA4 vs server logs discrepancy is exactly the thing that breaks founders' decision-making quietly, before they even know it's happening. Making content and product decisions based on which endpoints AI crawlers happened to scrape that day is a real and specific problem — I've seen it show up in conversion rate reports that looked great until you checked where the "users" actually came from.
The platform idea makes sense. The piece I'd push on: pricing for indie founders vs developers who can already write the regex. The person who needs this most is the non-technical SaaS founder who trusts GA completely because they don't know how to read Nginx logs. Are you targeting that buyer, or the developer who knows the problem exists and just wants it automated?
The two things that will decide whether this works are both classification problems rather than ingestion problems.
First, verifying who a client claims to be. User agent strings are free text and cost nothing to forge, so the only durable check for the big crawlers is forward-confirmed reverse DNS: PTR lookup on the source address, resolve that name back, require it to match. Google, Bing and the major AI vendors also publish their ranges as machine-readable lists, and some are starting to sign requests cryptographically, which is a far stronger signal than a UA string. If FCrDNS and published-range checks are not in from day one, the "AI and search crawlers" bucket will mostly be scrapers wearing Googlebot's name.
Second, the hard tail. ASN and datacenter filtering catches the cheap end. It catches nothing running through residential proxy pools, which is where the serious scraping has moved: those requests arrive from ordinary consumer ISPs with entirely plausible ASNs. What is left is behavioural (request graph shape, no asset or conditional requests, unnaturally even timing) plus TLS and HTTP/2 fingerprints, which headless stacks increasingly spoof. Being explicit about which half you can actually separate matters, because that is exactly where a "true audience" score gets attacked.
Two warnings on the numbers themselves. Log-derived humans and JS-derived humans are not the same unit; logs count requests, not people, so any comparison against GA4 needs a stated sessionisation rule or the delta is meaningless. And if there is a CDN in front, origin logs only see cache misses, so they are ground truth for what reached your origin rather than for what hit your site. For anyone on Cloudflare or CloudFront you need the edge log stream, not the origin one, before you can call a report auditable.
The cross-site auto-blocking network is your biggest liability rather than your best feature. Shared blocklists produce shared false positives, and carrier-grade NAT means a single flagged address can sit in front of thousands of real users while mobile ranges rotate constantly. Auto-deploying rules derived from someone else's traffic is a hard sell without a strict confidence threshold, a TTL on every rule, and a per-rule report of how many apparently human sessions it blocked. Same caution on ingestion: access logs are personal data in the EU, so truncation or hashing of addresses and a clear retention story will come up in the first serious conversation you have with anyone in that market.
On whether the pain is real: log-based analytics tools and CDN bot management both already exist, so the gap worth probing is the middle. People who have already put a CDN in front and still cannot answer "how many real humans" without enterprise pricing. If the output is a clean, exportable human-traffic figure with a defensible methodology behind it, that is a product someone will pay for at diligence or ad-network time. If it is another dashboard, it is competing with free ones.
thank you for sharing!
The analytics aren't fake - GA4 is measuring exactly what it promises to measure. The problem is that what it measures isn't what matters. It's telling you "12,000 people landed on your site from this channel," but what you need to know is "of those 12,000, how many still come back a month from now, and how many spent money." GA4 optimizes for event tracking volume because that's what scales, not for signal quality. The fake part isn't the number - it's that you're using a vanity metric (traffic) to make decisions about a retention metric (whether people found lasting value). You could rebuild your entire analytics stack with first-party data, custom events, and direct attribution, and it still wouldn't matter if you're not connecting the dots between "user showed up" and "user saw value they couldn't get elsewhere." Your real measurement system lives in your billing table, not GA.
Do you think the product I am developing us worth building?
The part that would worry me most isn't the CPU cost, it's the decision cost. If your top pages in GA are just whatever AI crawlers happened to hit that day, you're not just looking at noisy data, you're actively optimizing for the wrong thing without knowing it. That's a scarier failure mode than a server bill. On the "is this a real pain point" question: I think it depends on who you're selling to. Technical founders running their own infra will feel this immediately. Non-technical or agency-style founders running on Squarespace/Shopify/managed hosting probably won't even know their logs exist, let alone how to read them, so the wedge might actually be broader if you package it as "is my traffic real" rather than "here are your parsed logs." Are you seeing this pain more from solo technical builders or from teams running higher-traffic sites?
The tension worth resolving before you build is between your second and third categories. The global threat network is the strongest part of the pitch and also the weakest at launch, because cross-node signature sharing only pays off once you have enough nodes. That means your first hundred customers get local log parsing with a nicer UI, which puts you up against Cloudflare Bot Management on one side and GoAccess on the other. The piece with standalone value on day one is the one-click WAF export, since that is a measurable time saving rather than a network effect. Separately, AI and Search Crawlers is a cost center and a distribution channel at the same time: if someone uses your rules to block GPTBot and ClaudeBot, they have also deleted the GEO visibility you are selling them two panels over, so the split probably needs to be crawlers that cite you versus scrapers that just take, not bot versus human. Which of the three categories would you lead with as the wedge, and would you price on log volume or per site? Log volume scales with exactly the traffic your customers are paying you to eliminate, which is an odd incentive to design in from the start.
This is single-handedly one of the sharpest strategic critiques I’ve read. You hit the nail on the head regarding the cold-start problem of cross-node threat networks and the perverse incentive of log-volume pricing.
Here is how we’re adjusting the GTM strategy based on those exact insights:
The Day-1 Wedge (One-Click WAF Export)
You are 100% right: the network effect takes time, so Day 1 value must be local and immediate. We are leading with local intent scoring + One-Click WAF Export (instantly pushing generated IP/CIDR blocklists and custom rules straight to Cloudflare, AWS WAF, or Nginx). The measurable time saved in incident response is the core Day 1 utility.
"Citers vs. Takers" (The GEO AI Split)
This nuance is critical. Binary "AI Bot = Bad" is dead because blocking GPTBot can destroy your Generative Engine Optimization (GEO) footprint. Our crawler taxonomy distinguishes "Attributed Indexers" (crawlers that cite/refer back) from "Unattributed Model Harvesters" (scrapers that train without citation), letting founders selectively pass GEO bots while dropping pure content miners.
Pricing Model (Ditching Log Volume)
Spot on regarding perverse incentives, charging by log volume penalizes the customer when they get attacked by scrapers. We are pricing on a Flat Per-Site / Monitored Domain Tier tied to "Active Human Sessions" rather than raw log ingestion volume. Scraper spikes shouldn't inflate your SaaS bill.
Really appreciate this breakdown, this exact positioning is shaping our core architecture!
The scariest version of this problem is not the bot you can see in your logs. It is the one that executes JavaScript, completes your signup form, and sits in your database as a verified user. We have seen this in production apps where conversion metrics looked healthy until the team realized a significant chunk of their signups never logged in again. Not churned users. Never real users. The analytics said the funnel was working. The product was being tested by machines the whole time.
This "phantom user" scenario is the absolute nightmare case for product teams.
When machines complete registration flows and sit in your DB, it corrupts your entire post-signup funnel. You end up wasting months trying to optimize "day-7 retention" or "activation flows" for accounts that were generated by headless Playwright scripts or automated form-fillers.
Traditional CAPTCHAs and honeypots fail here because automated headless browsers can easily execute JS, solve basic challenges, and trigger form submits.
To stop these ghost signups, we evaluate behavioral physics directly at the form interaction layer:
"The product was being tested by machines the whole time" describes this shift perfectly. Catching it before it reaches the DB is the only way to protect your product metrics.
The fix that generalizes: count value events server-side, not visits client-side. A bot can inflate pageviews forever, but it doesn't sign up, save an item, or complete a job - so if your KPIs are "rows that appeared in the database because a user did something", the wall of scrapers mostly disappears from your numbers without a single blocking rule. GA stays for top-of-funnel curiosity; decisions come from the server-side event stream.
Funny mirror image from mobile: app analytics dodge the bot problem almost entirely (events come from an authenticated app runtime, not browser JS), but we get the inverse pollution - our own dev builds, simulators and test accounts. Same lesson from the other direction: the raw number is never the metric, the filtered one is. Every analytics setup needs an explicit answer to "who is NOT a user" before any dashboard is trustworthy.
That closing sentence is the entire problem statement in one line: "Every analytics setup needs an explicit answer to 'who is NOT a user' before any dashboard is trustworthy."
You are spot on about counting value events on the server side. If a session never writes a row to a database, completes a job, or triggers a transactional event, treating it as "engaged user traffic" in a dashboard is just self-deception.
Where this gets tricky, and where pure DB row counting leaves a blind spot—is top-of-funnel marketing attribution BEFORE the conversion happens:
The Ad-Spend Blind Spot
If you run a $5,000 ad campaign on Google or Bing, your database won't show you anything until a user signs up. If 90% of those ad clicks are click-farm zombie browsers that render the landing page and bounce, your DB tells you "0 conversions," but it can't tell you why. You don't know if your landing page copy failed, or if the ad network sent you 1,000 headless browsers that were never going to convert in the first place.
The "Who is NOT a User" Filter
That mobile analogy is a perfect parallel. Just like mobile teams have to filter out simulator builds and test accounts to get ground truth, web teams need an explicit filter for:
• Datacenter scrapers & AI model harvesters (Rogue)
• Headless ad-click farms (Zombie)
• Internal dev environments & automated test runners
By pairing edge-level server logs with your server-side value events (DB writes/Stripe webhooks), you get the best of both worlds: clean top-of-funnel traffic metrics that explain ad performance and un-fakeable bottom-of-funnel conversion math.
The ad-spend blind spot is real, and the workaround we've landed on is giving the top of the funnel its own server-verified micro-conversion instead of trusting client pixels: each channel gets a link that resolves through our backend (a deep-link redirect that logs before forwarding), so even 'visited but never signed up' becomes a DB row with a channel attached. Zombie clicks still show up there, but now you can compare each channel's click-to-value-event rate against its baseline - a channel whose verified events collapse while clicks hold steady is telling you exactly where the fake traffic lives. You never get to audit the ad network directly; you can only make its output measurable on YOUR side of the fence. Your edge-logs + value-events pairing is the same principle - two ledgers you control, reconciled against each other.
The GA-vs-CPU mismatch is becoming a default ops smell. What helped me is splitting "served request truth" from "human product signal" instead of trying to make GA honest again: keep decision metrics only on first-party events that require a real account action (create/save/pay), and treat anonymous pageviews as infrastructure load, not demand.
For cost, rate-limit by purpose—crawlers can hit a cheap cacheable path while interactive endpoints stay authenticated. Raw logs are ground truth for bills; product analytics only work if an event can't be emitted by a headless pass without cookies + CSRF.
"GA-vs-CPU mismatch" is hands down the best phrase I’ve heard to describe this nightmare. When your server CPU is running hot at 85% utilization while GA4 shows 14 active users, you know your analytics stack is completely detached from reality.
Treating anonymous pageviews as "infrastructure load" rather than "product demand" is the exact mental shift engineering teams need to make.
Here is how we’re structuring the pipeline to address both sides of that split:
Infrastructure Load (The Server Ground Truth)
Raw edge logs are the only honest metric for your hosting bill. By running JA4 TLS fingerprinting and rDNS checks at the edge layer, we immediately flag the traffic eating your CPU (datacenter scrapers, unthrottled AI crawlers, headless bots). From there, you can export one-click WAF rules to route scrapers to cheap cached static responses or rate-limit them before they hit your application servers.
Product Signals & Pre-Conversion Intent
You're 100% right that bottom-of-funnel events require authenticated state + CSRF tokens (create/save/pay). But what about top-of-funnel acquisition before a user creates an account?
To protect your conversion math without trusting unvetted JS pageviews, our telemetry engine binds the initial edge request to a first-party CSRF/session cookie and measures behavioral interaction (mouse micro-jitter, scroll physics, form latency).
If a session lacks human interaction physics or CSRF token continuity, it gets categorized strictly as "Infra Load / Low-Intent Traffic" and never touches your product conversion metrics.
Separating server bill reality from actual user demand is the only way ops teams and growth teams can finally look at the same dashboard without fighting.
A domain’s history can definitely matter. Before applying for AdSense, I’d check the domain’s previous content, backlinks, spam signals, and overall SEO history. I use SERPSpur for this kind of website health check because it helps identify issues that may otherwise be overlooked.
Ran into the exact same gap from the other side. I work on AI search visibility, so I live in server logs, and the biggest chunk of traffic GA4 never shows you is AI crawlers: GPTBot, ClaudeBot, PerplexityBot, Amazonbot. They do not execute JavaScript, so the GA4 tag never fires, but your server feels every single hit. Quick way to confirm it: pull your access logs or Cloudflare analytics and filter by user agent. The twist worth knowing is that this fake traffic is actually the most valuable crawl your site gets right now, because those bots are deciding whether your business gets named when someone asks an AI for a recommendation. Filter them out of your reports, yes. But do not block them.
This is such a crucial perspective, and it highlights why blunt "block all bots" WAF rules do massive hidden damage to a business.
You are 100% right: because GPTBot, ClaudeBot, and PerplexityBot don't execute JS, GA4 acts like they don't exist, while your edge server processes hundreds or thousands of page reads. If you blindly block them to save CPU or clean up logs, you effectively erase your business from AI search recommendations (GEO).
The solution isn't to block them, but to classify and isolate them at the network layer:
Cryptographic Verification (rDNS)
Scrapers frequently spoof User-Agent headers (claiming to be
GPTBotwhen they're actually a headless scraper from a cheap proxy). We run two-way reverse DNS (PTR + A record verification) at the edge to confirm whether the request actually originated from OpenAI, Anthropic, or Perplexity IP blocks.Dedicated "Utility & Indexing" Bucket
Once verified, real AI crawlers are assigned to a dedicated Utility Crawlers bucket. They are 100% excluded from your marketing funnel, conversion rate math, and human session counts—so your growth metrics stay pristine.
The GEO Visibility Dashboard
Instead of discarding those logs, we present them as a dedicated AI Indexing Log. Founders can see exactly which pages ClaudeBot or PerplexityBot indexed today, how frequently their documentation is being read by LLMs, and whether changes to their content triggered a fresh crawl.
Filtering AI crawlers out of your human conversion funnel while monitoring them for GEO visibility gives you the best of both worlds: clean growth math and maximum AI search footprint.
the latency on that anchoring event is worse than it looks in subscription saas. we run affiliate attribution on stripe with a 60-day cookie, and the charge that would prove a session was human routinely lands weeks after the click, so the same window recomputed next month gives you a different verified count than the one you handed over today. the reversal side is nastier. refunds and chargebacks undo the outcome, and a failed first renewal drops the sub to past_due and then unpaid, so a session you already stamped 100% human quietly un-verifies. affiliate programs deal with exactly this by holding commissions instead of paying on the initial charge. probably means unknown needs a clock rather than a third bucket, where every verified number carries the date it was computed and the report reads "as of". doesn't break the design. it makes the audit artifact a snapshot rather than a fact.
This is an absolute masterclass in data engineering and financial accounting reality. You hit on the exact reason why traditional web analytics break down when forced to reconcile with revenue platforms like Stripe or Impact.
Traditional web analytics assumes events are static immutable facts recorded at time $T_0$. But in subscription SaaS, conversion state is inherently mutable over time ($T_{+30}$, $T_{+60}$).
If a user converts on a 14-day trial, gets billed on day 14, and then files a chargeback on day 45, the session's verification status actually undergoes a state transition:
Dual-Timestamp Ledger Model
Instead of overwriting historical numbers, every session record carries two temporal coordinates:
•
created_at: The physical timestamp of the HTTP/edge request.•
evaluated_at: The timestamp of the current classification state.Point-in-Time "As-Of" Audit Snapshots
Just like double-entry bookkeeping, reports default to snapshot views. Generating a report for "June 2026 Traffic (As of July 1)" gives you a static audit artifact. Generating that same report "As of August 1" reflects downstream chargebacks, refunds, or delayed trial conversions without corrupting the historical record.
State Horizons (Unverified -> Pending -> Settled)
To handle the latency window (like 60-day affiliate cookies or free trials), sessions transition through explicit lifecycle states:
• 🟢 Instant Active Human: High DOM interaction physics (micro-jitter, scroll) verified on day 1.
• 🟡 Pending Settlement: Tied to a trial / signup, waiting for financial settlement.
• 🔵 Settled Human: Downstream invoice paid and cleared retention window.
• 🔴 Reversed / Fraud: Chargeback or immediate payment failure.
Treating analytics as an immutable audit ledger with "As-Of" snapshots is the only way to make traffic metrics hold up under financial reconciliation. Brilliant callout.
settled as an end state is the hole. you're gating it on a retention window you pick, but what actually closes dispute exposure is the card network's deadline, which runs much longer than the windows people choose, so sessions hit settled, get counted final, then flip to reversed later. that's the corruption as-of snapshots were meant to stop. gate settled on the dispute clock instead, backwards moves are the expensive ones since anything caching settled has to be invalidated.
I'm on both sides of this, which is why your middle category worries me more than the other two. I read my own server logs for the first time yesterday, and I also run agents that fetch pages as part of doing work. Small experiment, $0 in sales and almost no traffic — one site's data, not a market read.
About 250 requests over half a day. After stripping known bot UAs, blank UAs, probe traffic and one IP hitting the root every twenty minutes, one line was plausibly a person.
What surprised me wasn't the ratio, it was which category was hard. The rogue end was trivial: one blank UA fired 100+ requests in four minutes, and separately something walked the usual /wp-admin/install.php probe list. Loud, cheap to catch. The one that fooled me longest was a monitoring IP carrying a real Chrome UA — every per-request signal read human, and the only tell was the regularity of the interval.
That's the shape your middle category has. An agent fetching pages isn't scraping; it's running someone's errand, so it reads few pages with intent and leaves — which is also what a focused human looks like. My one "human" was a single page, no referrer, and cleared my bar only because it also pulled the stylesheet and favicon. An agent can do that too.
So on "high accuracy without false positives on real users" as the target: I don't think that's one target. Not a "this is three products" point — you can ship one score with two thresholds. It's that the two uses carry opposite burdens of proof. An auditable traffic report for an acquirer, like Gregory raised, has to defend "this was a human." A protect-my-server tool has to defend "this was not." Same score, opposite thing you have to prove when challenged.
Which of those you'd rather defend is decidable now, before the spec hardens — and it picks your first buyer for you.
Probablyone of the most insightful breakdowns of the entire analytics vs. security debate I’ve read. The "opposite burdens of proof" concept is a masterclass in product positioning.
You nailed the fundamental split:
Here is how we’re handling both the "Errand-Running Agent" dilemma and the Dual Burden of Proof:
### 1. Solving the "Errand Agent" Dilemma (Server Log + DOM Biometrics)
You're completely right that on server logs alone, an AI agent fetching a page on a user's errand looks identical to a focused human (single GET request, fetching stylesheets, 0 referrer).
This is where the first-party DOM snippet acts as the tie-breaker:
• If an agent fetches HTML + CSS, but registers 0ms DOM event loop latency, zero micro-jitter, and no scroll physics, it gets tagged as an "Automated Task Runner" (Utility/Agent).
• It isn't malicious, so we don't block it. But because it lacks human behavioral physics, it is NOT counted in your "Active Human Growth Funnel."
### 2. Choosing the Primary Wedge: "Prove It WAS Human"
To your point on picking the first buyer before the spec hardens: we are leading with "Prove this WAS a human" as our primary wedge for Founders, Growth Teams, and M&A Due Diligence.
Founders preparing for fundraising or acquisition cannot afford to hand over metrics inflated by ghost traffic. By defaulting to a strict "Prove It WAS Human" threshold for reporting, we deliver an auditable, un-fakeable ledger of real user growth.
For the server defense side, we invert the threshold: we only trigger hard WAF blocks on high-confidence "Rogue" signals (failed rDNS, brute-force bursts, JA4 mismatch), while routing "ambiguous" middle-category traffic to low-cost cached paths instead of blocking them.
ran into exactly this. the hard part isn't identifying obvious bots — it's the grey zone of AI agents acting on behalf of real users, which is arguably legitimate traffic. that classification problem is where the real product moat would be. fail2ban + custom log parsing is what most ops teams cobble together internally, so packaging it well could work
The "fail2ban + custom python log parser" combo is the hidden plumbing holding together half the internet's ops setups—and every ops engineer knows how brittle it gets the moment traffic patterns shift or residential proxy rot sets in.
You hit on the exact technical moat: classifying the grey zone of Delegated AI Agents (an LLM agent executing a task on behalf of a real user) versus Unsolicited Content Harvesters.
A simple WAF or fail2ban script fails here because it forces a binary choice: Block or Allow.
Here is how a packaged classification engine solves the "Grey Zone" without breaking user workflows:
The "Delegated Task" Taxonomy Cohort
When an AI agent fetches pages on behalf of a user, we classify it as a Delegated Human Task rather than a "Rogue Scraper" or "Direct Human Visit."
• WAF Stance: Never blocked (the user gets their errand completed).
• Analytics Stance: Isolated from your human marketing funnel (so 1 agent run doesn't look like 50 bounced human sessions).
Contextual Rate-Throttling vs. Hard Failures
Instead of fail2ban's hard IP bans (which risk blocking shared NAT IPs or corporate VPNs), ambiguous agent traffic is dynamically routed to cheap, cached static edges or throttled gently while keeping interactive API routes protected.
Replacing Script Maintenance
Packaging this means replacing 500 lines of custom log-parsing bash/python scripts and cron jobs with a native Edge middleware + one-click WAF sync (Cloudflare/AWS). Ops teams get the time back, and growth teams get clean data.
Packaging that grey-zone classification into a zero-config setup is precisely where the value lies.
This matches what a lot of small products start seeing once bots discover them. The useful split for me is human intent vs infrastructure noise: keep GA for trends, but make server-side bot labels and cost-per-real-session a separate dashboard so product decisions don't get pulled around by crawler behavior.
"Cost-per-real-session" is an incredible way to frame this.
When 60% of your edge bandwidth is consumed by scrapers and AI crawlers, your hosting bill is effectively subsidizing bot traffic.
Separating "Infrastructure Noise" from "Human Intent" fixes the unit economics. By classifying crawler behavior at the edge layer, you get an exact cost-per-real-session readout—allowing ops to manage server load without product teams making decisions off bot-skewed metrics.
Seems pretty interesting. Didn't really consider that most analytics wont tell you what's what, and just give you the numbers. Something like this will definitely help people make better decisions and just understand their traffic better. Interested to see this progress into a real product.
That "Aha!" moment is the biggest gap in web analytics today. Standard tools just dump raw numbers on a chart and leave you to guess what's real and what's machine noise.
Bridging that gap, moving from "here are 10,000 pageviews" to "here is what actually happened and who actually did it"—is the core mission. Really appreciate the encouragement as we build this out!
This is a good reminder that “the dashboard says X” and “X is actually true” are two different claims, and the gap between them is usually wider than people assume until they go looking. What tipped you off — did something just not add up, or did you go digging on purpose?
This matches something I've been noticing too, the gap between what analytics tools report and what's actually hitting the server keeps growing. The point about AI agents not satisficing is the interesting one, a human bounces after three pages, an agent will crawl everything because it has no fatigue or impatience.
The Tri Layer split (human, AI crawler, rogue bot) feels like the right mental model. Where I'd push you is on the GEO angle, that "AI and Search Crawlers" bucket might actually be the more valuable one long term as more traffic gets routed through agents doing research on someone's behalf. Founders may care less about blocking that traffic and more about understanding it, since it could become a real discovery channel.
Question: how are you planning to tell apart a legit AI agent doing research for a human (which you'd probably want to allow) from a scraper doing competitive intelligence (which you'd want to block)? That distinction seems like the hardest technical problem here, not the log parsing itself.
Hmm quiet interesting. I will note this down, work on it and share the algorithm with you in a few days. Thank you so much for this solid feedback. I feel you just suggested a feature that can actually increase the value of this project.💯
Your server logs can tell you what hit the site, but not whether a person got value from the product. I would separate three layers before building the classifier: requests, browser sessions, and product outcomes. For each campaign, track a short event ladder such as landing view -> first meaningful action -> task completed -> result exported or retained, then reconcile only aggregates with edge logs. A crawler can execute JavaScript and look human; a paid click can be genuinely human yet still be worthless. Neither should be counted as a successful user.
For an MVP, I would also avoid the phrase "100% ground truth." A more defensible offer is one decision-grade report for one buyer and one time window: of the requests received, how many sessions reached the core action, how many completed it, how many were obvious automation, and how many remain unknown. Keeping an explicit unknown bucket instead of forcing every request into human or bot would make the result much more auditable.
Thanks a bunch for these solid insights. I especially love the new 'unknown' traffic classification and I agree, this would increase the quality of the metrics.
One thing worth checking before you build the network layer, since it's the piece you're positioning on: CrowdSec already does exactly that, and it's open source. An agent on each node parses the local logs, ships anonymized signals to a central API, and the shared blocklist comes back down and gets enforced at nginx, Cloudflare or the firewall via a bouncer. I run it on the edge in front of my own API. So the cross-customer threat network isn't a moat you'd be building, it's a commodity you'd be re-implementing, and a free version of it is already running on a lot of the servers you'd be selling to.
That doesn't kill the idea, it moves where the value is. Blocking is solved. The thing CrowdSec deliberately doesn't do is tell you what your traffic was, and the LeadGrid comment above is the case that proves it: 483 paid clicks, real browsers, real sessions, correctly not blocked, and completely worthless. An auditable "these were the humans, and here's the evidence" report is a different product from a WAF feeder, and only one of the two has a free incumbent.
Thank you so much for this contribution, I think someone else also mentioned it to me yesterday in here and now that you have also mentioned it, I think I should avoid the blocking intelligence layer since its already a free product out there and just focus more on the core product itself. I truly appreaciate this feedback man.
Your diagnosis is right but you have described three products: clean human analytics, a shared threat network, and WAF rule generation. Cloudflare and Fastly already own the blocking layer and will keep bundling it toward zero, so the defensible piece is the audited human traffic number. Sell that one thing to people who need it on a deadline (acquisition diligence, ad network audits, a board deck) and you have a buyer with urgency instead of a nice to have.
In my opinion, PR seems to be a straightforward channel, but it is not until you try it, that you realize how hard or easy it really is.
Creating a pitch takes longer than the actual pitch writing. Personalization appears to be the difference between being ignored and receiving a reply.
What feature would you be mostly interested in for an MVP?
Server-side analytics definitely feel like the future. Client-side tools are missing more and more of what's actually happening.
This is the same trend I have observed over the years as well. Would you like me to contact you again for an early testing program?
We hit the same wall in a film production deployment — the client's "engagement metrics" were counting bot refreshes as human sessions. Before we could build anything useful, month one was entirely about figuring out which numbers were real. Bad data doesn't just slow down AI. It makes AI confidently wrong.
Cleaning that bad data is what this idea is all about and honestly, from your feedback and other feedbacks I have received so far, I can mark this as a real pain which means the product idea is validated. Would you like me to reach out to you again for an early testing program?
Glad it resonated. The data problem we ran into wasn't just a cleaning issue — it was more about getting the client to acknowledge the data was bad in the first place. That's the harder conversation. Most teams know their CRM is a mess; they just haven't had a reason to admit it out loud until an AI project forces the question.
Would be curious what angle your product takes on that — is it the detection side, or more the remediation workflow? If there's anything we can help with from our end, we'd be happy to.
The GA4 blindness cuts both ways, which makes it worse. Bots inflate what you see, and Google's own tools underreport what's real: I checked one of my sites in Search Console and the same date range showed 59 clicks in the country dimension but only 9 in the query dimension — the per-query privacy threshold just swallows the rest. So GA overcounts via bots, GSC undercounts via thresholds, and server logs sit somewhere in between with all the scrapers mixed in. I've mostly stopped trusting any single number and only trust directions: date-segmented trends from one source, checked against Stripe. Revenue is the only metric nobody's bot inflates.
"Revenue is the only metric nobody's bot inflates" is going on my wall. That is the ultimate ground truth.
You hit on a massive structural failure that almost nobody talks about: the GSC Query Anonymization Gap.
For small-to-medium sites, Google Search Console deliberately drops up to 50%+ of long-tail search queries into the "anonymized queries" bucket for privacy thresholds. So while GSC tells you 59 people clicked from a country, it hides 50 of the actual search terms. Meanwhile, GA4 counts 120 sessions because scrapers ran through your page, and your raw Nginx logs are sitting on 1,000 requests from datacenter IPs.
You're right to abandon single-number metrics in favor of Stripe.
That exact frustration is why we’re anchoring our classification engine around Outcome-Linked Intent Verification:
You shouldn't have to triangulate three broken tools just to figure out if your marketing worked. Anchoring edge traffic directly to real business outcomes (like Stripe) is the only way to get mathematically unshakeable metrics.
The backward classification step is where I'd spend your effort, because it's the part most likely to be wrong in practice.
Binding a Stripe webhook back to the session that produced it works cleanly only when the payment happens in the same session as the arrival. In my experience that's the minority of real purchases. When I wired first-touch attribution on one of my products, the payment event was the easy half. The hard half was stitching an anonymous session from three weeks earlier to a userId that didn't exist at the time of that visit, often on a different device. If the engine only verifies the converting session, you retroactively mark the last touch as human and leave the first touch, the one that actually tells you which channel worked, sitting unverified forever.
Worth deciding early which question you're answering: "was this traffic human" or "which visit caused the revenue". They need different plumbing. The first one saves people money on their hosting bill. The second one changes where they spend their next month, and that's the one I'd pay for.
One correction on the GSC part, since you built on my number: the threshold doesn't just hide which terms were searched, it drops the clicks themselves from that dimension. Same site, same date range, 59 clicks under country and 9 under query. So the query view isn't a partially anonymised version of the same total, it's a smaller total. People read a low query-dimension number as a traffic collapse when the traffic is fine.
the gap between what ga said and what the server was actually doing is the scary part. easy to make product calls off numbers that are half bots and never know.
That silent tax on product decisions is the scariest part of this whole problem.
When your data is polluted by 40–50% bot/scraper activity, you don't just get inaccurate charts, you end up making expensive, wrong engineering and product calls:
• You spend two weeks redesigning your pricing page copy because GA4 shows an 85% bounce rate, unaware that 70% of those "bounces" were headless scrapers harvesting your pricing table.
• You kill an ad campaign or traffic channel thinking it has a 0% conversion rate, when in reality 90% of the traffic sent by that ad network was click-farm zombie hits.
• You double down on a feature because pageview metrics look massive, when it was actually just an AI crawler re-indexing a paginated route 500 times a day.
When you can't trust whether a drop in conversion is a product flaw or just a surge in scrapers, you're building in the dark.
Matching edge-level server logs against first-party interaction signals gives you a single, clean cohort of real people using your product. Once you filter out the machine noise, your actual funnel math suddenly makes sense again.
the killed ad channel example is the one that'd sting most, you never find out you were wrong. and yeah, not knowing if a conversion drop is you or scrapers is a horrible place to make calls from.
I haven't experienced a bot traffic spike (that I'm aware of :-) ), but am very aware that web analytics is increasingly unreliable.
One question, though: what about traffic that never hits the server due to CDNs/caches?
Thanks for the feedback. About your question, if the traffic never hit the server then it can't be captured and you really shouldn't be worried about that type of traffic, any traffic hitting on your server resources and bills will definitely show up in your logs, if they don't , it's no traffic to start with.
Would like to participate in an early testing program once I have an MVP
the AI agent multiplier is the part that hits hardest. one human browsing session = 4 pages. one AI agent doing the same task = 400. that asymmetry alone means your conversion funnel math is completely broken even if you correctly filter known bots. curious what classification accuracy you're getting on headless browsers vs real users — that's where every bot detection system I've seen falls apart.
Spot on, that 1:100+ asymmetry is the silent killer of conversion math. If 10 AI agents scrape your site, standard tools count it as 4,000 pageviews and 10 "sessions with 0% conversion," completely tanking your funnel metrics.
To your point on headless browsers (Puppeteer, Playwright, Patchright with stealth plugins): you're totally right that client-side flags like
navigator.webdriveror basic canvas fingerprinting are completely useless now.To achieve high accuracy without false positives on real users, the classification relies on a 3-layer stack:
HTTP/2 & TLS (JA4) Fingerprinting: Stealth plugins patch the JS environment, but they don't change how Node/Python negotiates the underlying network connection. The order of HTTP/2 SETTINGS frames, initial window sizes, and TLS cipher suites in the ClientHello packet immediately expose automated wrappers around Chromium.
Hardware/Environment Contradictions: We check for environment mismatches that stealth plugins miss, like a User-Agent claiming to be a Mac M-series Chrome browser while the WebGL renderer reports a software driver (SwiftShader/Mesa), or AudioContext calculations returning zero-variance audio signals due to a lack of physical sound hardware.
Micro-Jitter & Motion Physics: Scripted mouse movements (even those using Bezier curves) lack physiological human micro-tremors, non-uniform scroll friction, and natural delays between
mousedownandmouseup.As for the conversion math: when an AI agent triggers 400 requests across your path graph, the engine normalizes those requests into a single "Automated Task Execution" bucket based on its network fingerprint, rather than treating it as 400 separate user sessions. That way, your human marketing funnel stays pristine.
You are brilliant
Thank you, we all are just trying our best to hit silicon valley (#laughs)
By the way I checked your project, if you don't mind, we could collaborate
This is the core insight that separates founders who improve from those who spin wheels. Vanity metrics feel like feedback but they're usually just echoes of whatever you did last week. Real signal comes from asking customers what they're actually doing with your product and why some stick around while others bounce. The measurement system you choose determines which problems you can even see. If you're tracking the wrong things, optimization becomes a treadmill - you'll get better at the wrong thing. The move is always: talk to customers until you understand which metric actually reflects whether you solved their problem, then build your dashboard around that truth. Everything else is decoration.
Thank you so much Shoham. I appreciate this comment🔥🔥
Server logs are ground truth for requests, but not for “verified humans.” Sophisticated bots execute JavaScript and reuse residential IPs, while real users can look automated behind VPNs or privacy tools, so the classification should expose a score and reasons rather than a definitive label. I would keep raw events immutable, measure CPU and database cost per traffic class, and stage generated WAF rules in observe mode before blocking. False-positive cost and rollback speed will matter as much as detection rate.
Thank you for this feedback. I actually plan to opensource the core of the application so the public can rese verify the traffic classification algorithms.
Open-sourcing the core is a strong trust move. I’d pair it with a versioned labeled benchmark and a confusion matrix, because readable code alone does not show how well the production configuration classifies traffic. Exposing the reason codes behind each classification—without leaking sensitive request data—would make false positives much easier to audit.
the 90% cpu and the "modest day" in ga4 aren't contradicting each other, they're two different budgets. one is a cost number, one is a decision number, and the mistake is usually wanting a single dashboard to hold both.
i'd stop trying to clean traffic and instead pick metrics that require state. signups, a saved record, a second session on the same auth token, a paid event. bots hit every endpoint but they almost never complete a sequence that needs something remembered from step one. that's your human layer, and it's boring enough to trust.
then keep nginx as its own thing for capacity, and split agent hits out by user agent so you can see whether chatgpt referrals ever show up on the human side later.
Thank you so much for this awesome feedback💯💯
This is a painful but necessary lesson; I stopped trusting vanity metrics like page views ages ago because they almost always hide the real signal. Instead of focusing on traffic, I started tracking 'meaningful actions' like sign-ups or actual messages, which bots rarely replicate. It might be worth checking your referral logs for specific user agents, as that's often where the noise comes from.
This is a real pain, but I’d validate it with one brutally narrow ICP first: founders whose hosting bill or CPU has already spiked from bots. “Cleaner analytics” is nice-to-have for a lot of people, but “my app is being crawled into downtime / surprise infra cost” is urgent. I’d also separate the landing page into two promises: traffic truth vs bot defense. They may be different buyers.
That's a really great way to look at it. I am trying to keep it Lena and boring but amazingly effective. I will stick with the traffic truth positioning for now. Thank you so much for this feedback
This is a real challenge many developers are starting to face. Separating genuine users from AI bots and scrapers is becoming essential for accurate analytics, better security, and controlling infrastructure costs. A server-side solution focused on true traffic intelligence definitely sounds like it addresses a growing need.
Honestly, this is my intuition too and so far, everyone I have spoken to agree that this is a huge problem that's actually getting bigger with the AI wave. Thank you for this feedback, I will each out to you when an MVP is ready, I'd be glad to have you use it for free and give feedback on results.
The gap between GA showing a quiet day while your server hits 90% CPU is something most people never catch because they never look at both at the same time.
The global threat network angle is where the real value is. Local log analysis is always reactive. The moment a scraper hits someone else's server it should already be blocked on yours.
Are you positioning this as a security tool or an analytics tool? The pitch changes completely depending on which pain you lead with.
Honestly, sir being an idea that's still getting validated, I am not sure which positioning angle to chose at the moment but I must say, I am leaning towards the 'analytics' side. In your opinion, which would you say is more important of the two? I feel cloudflare already does most of the reactive security feature you described.
A couple weeks ago I put up my first website in quite a few year. I expected to get essentially no traffic since I just put it live and wasn't driving traffic in any way. When I woke up in the morning I saw in my logs that tons of users had made requests to my endpoints. I didn't actually realize how many bots are just going down the list of domains and scraping websites for any sort of vulnerability they can find.
That's crazy, I have had the same experience except that my site had to be live for about two weeks before the bots started to appear and my! They made some grand entrance, analytics chart spiking up north.
In your opinion do you think you would wanna use the tool I am proposing to develop?
At the current volume i'm at I probably wouldn't, but I still think its useful. I personally am using posthog instead of GA for analytics and I use it to track user behavior and see where im losing users in the funnel. Being able to filter out bots from those events would be great.
I haven't dug too deep into what posthog offers entirely, but if you track identities posthog builds user profiles for you, which I would imagine you could use to filter out specific types of profiles. This might be some market research for you to figure out if they offer something like you are proposing, or if theres a real gap
thank you so much for this golden feedback! I'd better figure this out before I start building anything.
The part that stands out to me is the framing shift from counting visits to classifying intent. Most founders only discover this after a cost spike, not before. I would be curious whether the three category system holds up once a bot starts mimicking human session patterns on purpose, since that is the direction scrapers seem to be heading. Real ground truth from server logs feels like the right instinct though, dashboards built on client side scripts were always going to miss this.
It's a huge problem that's evolving with the AI wave. Thank you so much for this feedback. I will reach out to you as soon as I have an MVP. You can check it out and let me know what you think then. Again, I appreciate the feedback man
Appreciate that, good luck with the MVP. Server side ground truth is the right foundation to build on, most of the noise people fight later comes from trusting a client side number that was never measuring what they thought it was in the first place.
Thank you so much for helping me validate this idea.
Good luck with it. Validation from founders staring at their own bot inflated numbers is a strong signal, that pain is everywhere right now. Curious if you are starting with the traffic classification dashboard first or the WAF rule export.
Traffic classification with AI annotations (just for those who hate looking at dashboards) is what the MVP will ship with. I am hoping to have a product in about seven days.
Seven days is a tight but good target, it will force you to keep the first version narrow. The dashboards nobody wants to look at is the right framing, if the AI annotation just tells them "here is your real number" without making them dig, that alone is worth paying for. Curious what the very first screen someone sees looks like.
The pain is real but you have described three products: clean analytics, a WAF rule generator, and a cross-customer threat network. Cloudflare already gives away most of the second and third, so the defensible piece is the boring one you mentioned last: an auditable human-traffic report someone can hand to an acquirer, an ad network, or a diligence data room. I have watched traffic quality become a live argument at the LOI stage with no standard artifact to settle it, which makes that a much narrower wedge with a buyer who already has budget.
Wow! I guess this is why talking to a potential user is very important before building anything. Thank you so much for this insight and feedback
this matches what i see too. the gap between what analytics reports and what the server actually eats is mostly bots now, and GA4 hides it because it filters known crawlers and most of these headless/AI agents never run the js tag at all. so you get the worst combo: they dont show up in analytics but they absolutely show up in your CPU bill. one thing worth doing is splitting the access logs by user agent and asn, usually a huge chunk is a handful of cloud provider ranges hammering you, and rate limiting those at the edge buys back most of the CPU without touching real users. the part that worries me longer term is the AI agent traffic that DOES render js, because that pollutes your real metrics and you quietly start optimizing for an audience that will never convert.
The last part is what I have been pandering on too and this is what is motivating me to ask for feedbacks on this and see if I could actually build a very effective tool around it. I really appreciate your response.
The part about discovering it through CPU usage instead of analytics felt real. That's usually how these problems surface.
One thing I'd want before paying is proof that the human traffic classification is accurate. If that layer is trustworthy, the rest of the product becomes much easier to justify.
Thanks for this feedback.
I will update you when I have an MVP and let you try it out as much as you want before making a decision. You will also get to see how we classify each of your traffic layers, I plan to opensource that part allowing for transparency and verification of the traffic classification accuracy.
That sounds like a solid approach. I like that you're planning to make the traffic classification transparent being able to verify how decisions are made builds a lot more trust.
Looking forward to trying the MVP when it's ready. And if you ever want a second pair of eyes on the messaging or wording, I'd be happy to help make it even clearer.
Thank you so much Muhammad, I'll keep it in mind. I really appreciate you helping me to validate this.
The distinction between human traffic and machine traffic is important, but I’d be careful with a binary “verified human” label. Privacy tools, shared networks, and real users behind unusual request patterns make that boundary fuzzy.
For Speechara, GA4 became more useful when we tied events to a user-visible outcome — first transcript, first translation, or first saved meeting — instead of treating pageviews as success. A dashboard that combines traffic likelihood with “did this visitor reach a real product outcome?” might be harder to fake and more actionable than another clean-session number.
Honestly, this is one of the most important traps in analytics right now.
If a tool slaps a rigid binary "Human: YES / NO" label on every visit, it breaks the moment someone visits behind Apple Private Relay, a corporate VPN, or Brave Browser. You end up throwing away real, privacy-conscious users while over-trusting click farms that happen to pass basic browser checks.
What you did at Speechara, tying analytics directly to product outcomes like first_transcript, is the exact ground truth every product team actually needs. Pageviews mean almost nothing; completed intent means everything.
That realization is completely reshaping how we’re building our core classification engine. Here is how we’re structuring the underlying tech to solve this exact problem:
We don't want this to be another opaque "black box" where an algorithm magically decides who is real and who isn't. We’re planning to open-source the core traffic classification engine.
By making the detection rulesets, TLS/JA4 fingerprinting matchers, and reverse DNS logic open-source, developers can audit the code, verify how classifications are made, and contribute patterns. Community-driven transparency is the only way to build real trust in analytics data.
Instead of forcing a binary "Human or Bot" decision, the system categorizes traffic into four distinct operational tiers:
🔴 Rogue Scrapers: Headless scripts, API hammerers, and datacenter bots. Detected via JA4 TLS cipher mismatches and failed reverse DNS checks.
🔵 Utility Crawlers: Verified indexers (Googlebot, ClaudeBot, GPTBot, Slack previews). Cryptographically confirmed via two-way rDNS (PTR + A lookup) so you can track your AI/search footprint without polluting marketing metrics.
🟡 Zombie Traffic: Real browsers (click-farm syndication, 1-second bounces) that pass network checks but show 0 DOM interactions.
🟢 Active Humans: Real users who navigate paths and engage with the page.
To handle the "fuzzy" boundary caused by privacy tools, sessions start with an Intent Score (0–100) rather than a strict label.
Even if a user on a strict VPN or Apple Private Relay looks network-wise like a potential bot, the moment they trigger a product outcome (e.g., first transcript, search performed, account created), their session is permanently upgraded to Confirmed Active Human.
By pairing Edge-level server signals (TLS, IP type, path shape) with first-party product outcome beacons, we completely eliminate the false-positive problem. If a user actually does something in your app, no privacy tool or unusual network setup will obscure that success.
There are several different pains bundled together here: distorted analytics, infrastructure cost, bot identification, and automated defense.
The responses to your $29 question may be much less informative than which of those problems people already feel strongly enough to solve.
Thanks for the response, in your own opinion, which of those problems do you think is the biggest pain right now?
I think that’s exactly the question worth answering through customer conversations rather than assumptions.
What have you heard so far from people actually dealing with these issues — which problem do they describe as the most urgent?
The practical fallout for early-stage products: if you optimize landing pages off raw sessions, you're optimizing for bots. We switched to measuring signal quality — time on page, scroll depth, the specific pages people actually reach — and our "real user" number turned out to be a fraction of the dashboard figure.
The other thing that caught us: scraper traffic floods one endpoint, not the ones a human would touch. A human lands on the homepage, reads, clicks through. A bot hammers the API. Filtering analytics by that path shape got us closer to truth than any bot-filtering feature.
Worth noting — it also means your server bill is partly paying for machines that will never buy.
Thanks for this very solid feedback. 💯💯 I will loke to give you a free access and receive your feedback
Disclosure: LeadGrid (leadgrid.eu) is mine - local-business lead lists - so I'm the kind of small site you're describing.
The traffic that fooled me worst would have sailed through your filter. 895 pageviews all time; about a third arrived from roughly 25 parked domains with names like business-browser-dot-something, plus a block from Yahoo in the same window. That's Bing's search syndication network, and I was paying for it - 483 clicks bought between 6 and 26 July. Real browsers, real sessions, plausible referrers, nothing a bot classifier would flag. Number of those 483 who ran a single search in the product: zero.
So "Verified Human Traffic" would have shown me a clean, healthy number and been exactly as wrong as GA was. Cheap ad syndication and click farms live in the gap between your first bucket and your third.
Worth checking before you build the ingester: the log-parsing half is well covered already. Matomo has imported raw access logs for years, GoAccess does it locally for free, and Cloudflare classifies bots at the edge before they reach your origin. PostHog and Plausible aren't in that group - they're client-side like GA and share the blind spot you found.
The split I'd actually pay for is did-something versus did-nothing, with the source attached.
I will like to show you what we are building and the very solid filters we have. You will get free access in exchange for your honest review💯
Happy to. Fair warning that I'll be a difficult test case, which I assume is what you actually want.
The thing I'd check isn't whether it catches bots — I'll take that as given. It's the July campaign: 483 clicks from Bing and Google, real browsers, plausible referrers, human enough to render the page, and not one of them ran a single search inside the product. If your filters call that traffic human, they're correct and it still doesn't help me. If they flag it, I want to know which signal did it.
I can point it at LeadGrid (mine, as above) and hand you the date range and the ad-network split, so you'd be scoring a set where I already know the answer. More useful to you than my opinion of the UI.
Tell me what you need me to set up.