← Back to projects Case Study · Personal Quality Control · 2025

Personal Quality Control

An Individuals–Moving Range (I-MR) control chart applied to a metric from your own life - sleep, steps, study hours, mood, anything you log daily.

The same statistical process control logic that flags a defective batch on a factory line can flag the one night your sleep genuinely broke pattern - versus normal day-to-day noise.

I-MRIndividuals & Moving Range chart
2.66σControl limit constant (d2, n=2)
1reading per day - no subgroups needed
0server upload - runs in your browser

01 /

The Problem.

// "was that day actually unusual, or just noise?"

Habit trackers show you a graph, but not whether a bad day was a real signal or just ordinary variation. Without a baseline and control limits, every dip looks alarming and every improvement looks like a trend - so nothing actually changes behavior.

Statistical Process Control solves exactly this problem on a factory floor: separate common-cause variation (normal noise) from special-cause variation (something genuinely changed). This project applies that same logic to a personal daily metric.

02 /

Methodology.

// individuals & moving range, worked daily

Moving Range

MR_i = |X_i − X_i−1|. Since a personal metric is one reading per day (no natural subgroup), variation is estimated from the difference between consecutive days.

Control Limits

UCL/LCL = X̄ ± 2.66 × MR̄. The 2.66 constant is the standard d2-based multiplier for individuals charts (equivalent to a subgroup of n=2).

Out-of-Control Flagging

Any day outside the control limits is flagged as a likely special cause - worth investigating, unlike ordinary day-to-day fluctuation inside the band.

Baseline Re-centering

As you log more days, the center line and limits recompute from your actual running history - your personal process, not a generic benchmark.

03 /

What’s in the build.

// shipped features

Any metric, your label

Name the metric and its unit - sleep hours, steps, study hours, mood score - the math doesn't care what you're measuring.

One-line daily log

Add a date and a value; control limits and flags recompute instantly from the full history.

Live control chart

An inline SVG plot of every reading against the center line and control limits - no charting library required.

Out-of-control table

Every day is listed with its moving range and a clear flag for any point outside the limits.

Sample dataset

Loads a 14-day sample with one deliberately planted outlier so you can see a real flag before logging your own data.

Local persistence

Your log is saved in the browser between visits - nothing is sent anywhere.

04 /

Stack & Outcome.

// what it took, what it shipped

Stack

HTML5 Vanilla JavaScript (ES6) Inline SVG rendering Web Storage API No build step

Outcome

A student logging even two weeks of a metric gets a real, personally-calibrated control chart - the fastest way to internalize the difference between "normal variation" and "something actually changed" that SPC theory is built on.

Live Tool

Try it below

LIVEpersonal-quality-control · runs entirely in your browser
Add readings or load the sample dataset to see control limits.