React Data Quality Report

The screen that answers “can I trust this dataset” before someone builds a decision on top of it. Per-column health, and the specific reason behind every flag.

wafer_test_results

284,512 rows · 11 columns

7 healthy1 needs review3 problem92% overall
ColumnCompletenessDistinctNullsOutliers
lot_idunique100.0%284,5120
wafer_no100.0%250
product100.0%80
tool_id99.6%421,204
recipe93.4%6118,902
yield_pct100.0%4,21809,104
defect_density99.9%12,880340612
site100.0%10
started_at100.0%271,0040
serialunique100.0%281,9900
passed100.0%20

Select a column for its issue detail. Completeness threshold is 99%.

Installation

npx shadcn@latest add "https://kelvinui.com/registry/data-quality.json"

Props

PropTypeDescription
datasetNamestringHeading
rowCountnumberTotal rows profiled
columnsColumnProfile[]{ name, type, count, nulls, distinct, outliers?, duplicates?, unique?, min?, max?, issues? }
completenessThresholdnumberCompleteness below this is flagged (default 0.99)

Health is derived, and it shows its reasoning

Each column gets a score starting from its completeness, then penalised for the failures that actually matter:

  • Duplicates in a column marked unique. The unique flag is what makes this meaningful — duplicates in a product column are expected, duplicates in a serial number are a data-integrity bug. The demo's serial column has 2,522 of them and is flagged hard.
  • Outliers above a 2% share. A handful of extreme values is normal; 3% of a column being outliers usually means a unit mix-up or a sentinel value like -999 being treated as data.
  • A single distinct value. A column with one value across 284k rows carries no information — usually a filter that was already applied upstream, occasionally a broken join.
  • Free-text issues, for anything your profiler detects that the schema cannot express. The demo flags mixed casing in recipe, which silently splits one category into two in every downstream group-by.

Selecting a column expands the specific reasons rather than leaving you with a colour. A quality report that says "amber" without saying why just moves the investigation somewhere else.

New components every week

Get the week's new Kelvin UI components and templates in one short email. No spam, unsubscribe anytime.