Blog
Next

The Reveal: Why I'm Rebuilding Analytics from Scratch

Announcing GoodData, my Final Year Project. Moving beyond basic page views to build an analytics engine that understands user intent and behavior.

GoodData Dashboard Concept

In my last post, I talked about the struggle of finding an FYP that wasn't just another "Library Management System." I wanted something that pushed my engineering skills and actually solved a hard problem.

Today, I’m ready to share what I’m building.

It’s called GoodData, and it is a Behavioral Analytics & Predictive Intelligence Engine.

The Problem with "Normal" Analytics

When I started looking into how online businesses, whether it's a massive e-commerce store or a solo developer selling SaaS, track their success, I noticed a huge gap.

Tools like Google Analytics (GA4) are great at telling you what happened.

  • "You had 500 visitors."
  • "Your bounce rate is 40%."

But they are terrible at telling you why.

Why did those visitors leave? Did they get confused by the pricing table? Did they rage-click on a broken button? Did they screenshot the product to compare it later, or did they just scroll past it?

Traditional analytics treat users like numbers. But users are people with intent, hesitation, and frustration. As a developer, I realized that if we can capture those subtle signals, the mouse movements, the scrolls, the screenshots, we can turn "data" into actual intelligence.

Enter GoodData

My FYP isn't just a clone of an existing tool. It is an attempt to answer the question: Can we predict user behavior before they even make a purchase?

GoodData focuses on Behavioral Intelligence, not just traffic counters.

1. Capturing Micro-Interactions

I am building a lightweight (~15KB) JavaScript tracker that goes way beyond page views. It captures the things standard tools miss:

  • Intent Signals: Did the user copy the product name? Did they screenshot the page? (A huge signal for high purchase intent).
  • Frustration Metrics: Are they "rage clicking" on an element? Is their mouse velocity dropping around the checkout button (hesitation)?
  • Scroll Depth: Not just "they reached the footer," but exactly which section made them stop and read.

2. Predictive Insights (The AI Part)

Collecting data is easy. Making sense of it is hard. I am using Python (FastAPI + Scikit-learn) to build a machine learning pipeline that analyzes this behavioral data.

Instead of just showing a graph of users, GoodData will create Cohorts:

  • "High Intent" Users: People who screenshotted and scrolled deep but didn't buy (Retarget them!).
  • "Churn Risk" Users: People showing signs of disengagement based on recency and frequency patterns.

The Technical Challenge

This is where the engineering gets fun (and scary).

Building this isn't just about React components. It requires a serious architectural approach:

  • High-Scale Ingestion: How do I handle thousands of mouse-move events without crashing the database? (Hello, batched ingestion).
  • Performance: The tracker needs to be invisible. It cannot slow down the client's website, which means using APIs like navigator.sendBeacon and running entirely off the main thread where possible.
  • Data Privacy (The Smart Way): While the goal is intelligence, I am designing it to be responsible. No cookies, no creepy cross-site tracking. Just daily salted hashes and server-side fingerprinting to get unique visitors without invading privacy.

Why This Matters

I didn't want my FYP to be something I submit and forget. I want to build a tool that actually helps business owners, whether they are selling hoodies on Shopify or software on Gumroad, understand their customers better.

If I can tell a store owner, "Hey, 50 people screenshotted this jacket but didn't buy it, maybe your checkout button is broken," that is actual value. That is engineering solving a real human problem.

What's Next?

The vision is set. Now comes the hard part: actually building it.

Over the next few weeks, I’ll be documenting the technical hurdles. I’ll talk about choosing the stack (Next.js vs. The World), designing the database schema for high-volume writes, and the nightmare that is browser compatibility.

Let’s write some code.