I've had weeks where my nginx logs suggested my site was blowing up. Requests per minute through the roof. But when I checked cookies, no humans. GA4 key events? Zero. Search Console? Shrug. The bots were having a great time. My business, less so. More proof that the Dead Internet Theory isn't a theory.
If you're building anything on the internet, you're surrounded by activity that looks like progress. AI pours gas on that. You can generate more pages, write more posts, think up more "experiments," spin up more dashboards. You can feel busy while nothing useful is happening. Skip the honest read of your own logs and the charts get cleaner while the business stays just as confused.
Lean Startup is mostly about not lying to yourself
I like Lean Startup because it's mostly a framework for forcing founders to look at numbers they don't like. Validated learning, innovation accounting, actionable metrics.
The trap a lot of founders fall into is watching vanity metrics. Pageviews. Sessions. "Engagement." A spike that makes you feel good for about six minutes.
Early on, your job is to find one behavior that proves a human got value. Not "visited a page." Not "spent 42 seconds." Stuff like:
- sign up and confirm email
- run the core workflow
- invite someone else
- pay
- come back and do it again
Pick the thing that matters, then measure it like your business depends on it... because it does.
Use AI to read logs, not to invent conclusions
AI is great for chewing through ugly text and helping you ask better questions. It's not a source of truth. Think "very confident intern with a fast typing speed," and then remember you still need to check their work.
Log parsing and traffic sanity checks
Give it a sample of server analytics logs and ask it to summarize by:
- user agent families
- IP ranges
- referrers, referers? (Fun Fact: that's a real typo in the HTTP standard.)
- top paths
- status codes
- weird spikes by minute
Then verify with real counts.
A simple Python script gets you pretty far:
import re
from collections import Counter
ua_re = re.compile(r'"[^"]*" \d+ \d+ "[^"]*" "([^"]+)"$')
uas = Counter()
with open("access.log") as f:
for line in f:
m = ua_re.search(line.strip())
if m:
uas[m.group(1)[:80]] += 1
for ua, n in uas.most_common(20):
print(n, ua)
If the top twenty user agents are crawlers, you don't have traction. You have visitors who cost you bandwidth, and even more proof of Dead Internet Theory.
Cohorts that answer one question
Cohorts are where founders accidentally get honest.
"Users who signed up after feature X shipped" is a cohort. "Users who came from Search Console queries with intent words" is a cohort. "Users who hit pricing then bounced" is a cohort.
AI can help write the SQL. The SQL still has to run and return numbers you can defend.
Pattern detection you can act on
AI is good at spotting "this looks weird" patterns:
- a single IP hammering a path
- a new bot user agent you've never seen
- a referrer that's obviously junk
- a path that gets traffic but has no conversion event attached (broken tracking? bad copy?)
Then you get to do the part that actually matters: filter and count.
Use traditional software for the stuff that has to be deterministic
I've built ML systems for companies that wanted "accuracy improvements" but couldn't tell me how they measured accuracy. Same disease as "we have growth" with no clean definition of what a user actually did.
Use the right tools for calculating simple truths:
- GA4 for event collection (yes, I know GA is annoying)
- server logs as the ground-level record
- Search Console for search reality
- database events for "did the user actually do the thing"
- SQL/Python for aggregation and audits
LLMs can help you write the query. Don't let them be the query.
Also: don't let dashboards become a substitute for understanding.
The human part: embarrassment tolerance
The hardest step is staring at the number that says nobody clicked the button.
Founders dodge that moment by adding features, writing posts (as I'm literally typing away instead of doing something else I should probably be doing), tweaking copy, planning "AI improvements," and refreshing charts. It feels productive. It'll definitely eat up a 12-hour day. It's also a great way to avoid fixing the real problem.
If GA4 says your key event fired zero times, do this, in this order:
- Confirm the event is wired correctly.
- Confirm a human can reach it.
- Watch a few real sessions, or run the flow yourself in a clean browser.
- Read the offer. Does it resonate? Would you buy?
- Fix the dead conversion path.
Leave optimization for later.
The goal is not better dashboards. The goal is knowing what happened before you decide what to do next.
Start there, even when the answer is ugly.
Especially then.
If you want help
If your analytics are lying to you, I do audits. I'll also help you set up AI-assisted growth loops grounded in real datasets: server logs, GA4, Search Console, database events.
If you want to DIY it: pick one conversion event that matters, verify it end-to-end, then read your logs like you're trying to prove yourself wrong.
-Sethers