1
14 Comments

Show IH | I built Datadog for business metrics after missing a revenue dip across 12 sites

I run 12 products. TidyUTM.com, and 11 others.

At any given time I have no idea which ones are quietly declining.

That sounds like a management problem. But it is actually a tooling problem.

Here is what my monitoring setup looked like six months ago: Stripe for revenue, Google Analytics for traffic, a spreadsheet I updated when I remembered, and gut feel for everything else. I checked in when I had time. I trusted things were fine when I did not.

TidyUTM started losing subscribers. Slowly at first. The kind of slow that does not trigger any alarm because each individual month looks close enough to the last one.

By the time I noticed something was wrong I was already in recovery mode. The dip had been happening long enough that I was not catching a problem early. I was cleaning up after one.

The thing that frustrated me most was not the lost revenue. It was that nothing had told me. Stripe did not alert me. Google Analytics did not alert me. My spreadsheet definitely did not alert me. I had to stumble into the data myself.
I thought about how engineers handle this problem. When a server starts degrading you do not find out because you happened to check a dashboard. You find out because Datadog fires an alert the second something drifts outside normal. You are monitoring, not manually checking.

Business operators have nothing equivalent to this. We check dashboards. We pull reports. We hope we notice when something changes. Nobody is watching between our visits.

So I built KPILIO.

KPILIO is a business observability platform. You connect your KPIs, enter your data or import via CSV, and KPILIO monitors everything continuously using statistical anomaly detection. The moment a metric drifts outside its normal range it sends you an alert with a plain-English explanation of what changed and why it matters.

It is the monitoring posture applied one layer above infrastructure. Not watching your servers. Watching your revenue, churn, conversion, CAC, and whatever else actually runs your business.
What I have built so far:

  • KPI tracking with targets and trend visualization
  • Z-score based anomaly detection running continuously
  • Email alerts the moment something unusual is detected
  • AI generated insights and recommended actions per anomaly
  • Scenario planning and forecasting
  • CSV import for historical data
  • Team workspaces with role based access
  • Stripe integration for billing

It is free to start. Five KPIs, no credit card, no time limit. Growth plan unlocks more KPIs, integrations, and team seats.

If you are running more than one product, or running a SaaS and tired of finding out about problems after the fact, I would love your feedback.

kpilio.com

posted to Icon for group Show IH
Show IH
on March 22, 2026
  1. 1

    “Most analytics tools are definitely too passive—getting an alert the moment a conversion rate falls is exactly what a solo founder needs to stay proactive. 📉Nice idea, this could be a good way to test it. There’s a competition where you can submit KPILIO — entry is $19 and winner gets a Tokyo trip.Prize pool just opened at $0 so your odds are the best right now.”

    1. 1

      Fantastic. DO you have any more details on the competion? I'd love to submit my application.

      1. 1

        Hey Robert — great to hear, happy to share more.

        Tokyolore.com is a competition where founders and builders submit their idea for $19. Every idea gets a real AI business analysis plus a numbered artifact tied to your concept.

        The winner gets a trip to Tokyo — flights and hotel booked by us. Prize pool is self-funding so it grows with every entry. Right now it's at $0 which means your odds are genuinely the best they'll be.

        Round 01 closes at 100 entries and does not reopen.

        You can enter and submit your idea here: tokyolore.com — takes about 5 minutes.

        Happy to answer anything else

          1. 1

            "Quick update — Round 01 is now live and entries are coming in. Once we hit 100 entries, this round will close and the winner gets locked in. Right now is the earliest stage, so this is your best chance to enter while odds are highest."

          2. 1

            Happy to answer any questions if you have them. Round is still wide open — prize pool at $0 means best odds right now

  2. 1

    The quiet decline problem is real. GA4 shows you what happened, not that something started going wrong. I had the same gap with Zenovay; ended up building anomaly-style trend indicators into the dashboard for exactly this reason. Curious how you're handling the signal-to-noise ratio on multi-product anomaly detection?

    1. 1

      That's exactly the right question and honestly the hardest part of the problem.

      KPILIO uses z-score detection with a 2.0 standard deviation threshold as the default. Not all KPIs deserve the same sensitivity though, so I just shipped per-KPI tuning this morning. You can now set each metric to Sensitive (1.5), Balanced (2.0), or Relaxed (2.5) depending on how much noise you're willing to tolerate.

      I also shipped a 14-point baseline requirement today. Anomaly detection won't fire on a new KPI until it has enough history to know what normal actually looks like. New KPIs show "Building baseline..." instead of noisy early alerts.

      The bigger challenge I'm working toward is context-awareness. Treating a 15% revenue drop differently in week 1 of a new campaign versus week 6 of a stable baseline. The z-score approach works well for established KPIs with clean history but struggles with seasonality and product-specific patterns.

      Curious how you handled it in Zenovay. Rule-based thresholds, ML-based, or something hybrid? Would love to know what actually worked in practice.

      ~ Robert Dixon

  3. 1

    That “slow enough not to trigger anything” problem is real.
    We’ve seen the same thing in trading systems where nothing breaks outright, it just drifts over time and you only notice once you’re already behind it.
    The hard part isn’t tracking metrics, it’s knowing what “normal” actually is so you can spot when things quietly move away from it.

    1. 1

      You're absolutely right Rebecca, defining "normal" is the whole problem. Most tools show you the number. KPILIO figures out what the number should be based on your own historical patterns, then tells you the moment you drift from it.

      The trading systems analogy is perfect. It's not a crash you need to catch, it's the drift. A 3% monthly decline looks fine in isolation. Six months of it is a business problem you should have caught in month two.

      That's exactly what z-score detection handles, it builds a rolling baseline from your actual data, not industry averages, and flags deviations the moment they cross a meaningful threshold. We also layer in industry benchmarks so you can see not just "am I drifting from my own normal" but "am I drifting from what healthy businesses in my category look like."

      ~ Robert Dixon

      1. 1

        Indeed , that’s the interesting part. The moment you formalise “normal” it becomes useful, but it can also give a false sense of control if the underlying behaviour shifts.

        We’ve seen cases where the baseline itself drifts slowly, so you’re technically “within range” but still moving in the wrong direction.

        That’s where it gets tricky.

  4. 1

    Missing a revenue dip across 12 sites is a brutal way to learn you need better monitoring, been there with a much smaller portfolio. The interesting design challenge with business metrics vs infra metrics is that the signal-to-noise problem is totally different, revenue anomalies need way more context to be actionable (is it traffic, conversion, or payment processor?). Curious how you handle alerting thresholds when each site has different baseline patterns.

    1. 1

      Hi ShellSageAI, Thank you for your insigths and I hope I can answer some of your questions.

      The signal-to-noise problem is exactly what made this hard to build. Infrastructure anomalies are relatively self-contained. A latency spike is a latency spike. Business metric anomalies are almost always downstream of something else, and the alert without context is just noise.

      The way I approached it: each KPI sets its own baseline using z-score over a rolling window, so a site doing $500/day and one doing $50K/day aren't held to the same standard. On top of that you get four manual rule types: hard floor/ceiling thresholds, percent change over a time window, N consecutive declining data points, and target miss alerts. When something fires you can snooze it for up to 30 days with a note, or flag it as a false positive, which is how the system learns what noise looks like for your specific business.

      On the traffic/conversion/payment processor question, that's the part I'm still sharpening. Right now the alert tells you what changed and flags the magnitude. Drilling into why depends on which KPIs you've set up. If you're tracking conversion rate and revenue separately, you can usually triangulate from the alert sequence. Not automatic root cause analysis yet, that's on the roadmap.

      The hardest edge case is seasonality. A revenue dip on a Sunday for a B2B site is noise. The same dip on a Wednesday is a problem. Still tuning how the rolling window handles day-of-week patterns.

      What does your current setup look like, are you aggregating at the portfolio level or monitoring each independently?

      ~Robert Dixon

      1. 1

        Quick update since I posted this, I've been heads down on the detection engine based on some great feedback in the comments.

        Shipped this week:

        Alert sensitivity is now High / Medium / Low instead of a raw number. Each KPI sets its own baseline so a $500/day site and a $50K/day site aren't held to the same standard.

        False positive learning is live. When you mark an anomaly as false positive, those data points get excluded from future baseline calculations for that KPI automatically.

        Day-of-week baselines are in. A Sunday dip for a B2B SaaS no longer gets compared against Wednesday numbers. If there are enough same-day historical points it uses those, otherwise falls back to the global baseline.

        KPI groups are in beta. You can now group related KPIs together and when one fires, KPILIO checks if others in the group also fired in the last 24 hours. Shows up on the alerts page and in the email.

        ShellSage's question about how thresholds work across different baseline patterns was the push that got most of this done. Good reminder that shipping and talking about it publicly is the fastest way to make the product better.

        ~Robert Dixon

Trending on Indie Hackers
How I built an AI workflow with preview, approval, and monitoring User Avatar 64 comments Show IH: I'm building a lead gen + CRM tool for web designers targeting local businesses without websites — starting with Spain User Avatar 62 comments I built a URL indexing SaaS in 40 days — here's the honest story User Avatar 53 comments After 4 landing page rewrites, I finally figured out why my analytics SaaS wasn't converting User Avatar 21 comments We witnessed a sharp spike in our traffic. So much happiness after a long time. User Avatar 15 comments Creative Generator — create product-focused visuals and ad concepts faster User Avatar 11 comments