← All work

Anomaly Upload Validator

The dataset problem nobody wanted to own.

In production use Internal tool · Documentation public
Role
Specced and built solo
Scope
20 stories, 7 epics, 72 test cases
Stack
Single-file HTML, SheetJS, client-side
Status
In production use internally

Third-party vendor datasets did not reliably match the field schema the platform expected. A mismatch surfaced late, after the data had already reached customer success or engineering, and someone had to work out which column meant what before anything could proceed.

The validator moves that check to the front. A dataset is validated against the spec before it reaches anyone, and the damage matrix conversion across vendor, platform, and client schemas runs automatically rather than waiting on engineering review.

It is in production use internally. It was built with Claude.

How it was specified

The tool is internal, so the build itself is not something I can show. The documentation is, and it is the more useful half anyway.

Product requirements

What the tool had to do and the constraints it worked inside.

FR-04.9 Asset and Coordinates: when empty, flag as Check Internally rather than Error

FR-06.4 Check Internally: Asset or Coordinates empty — value may exist in internal records

FR-06.6 Check Internally rows shall be excluded from compliance score denominator

Product requirements, FR-04 Row-Level Validation and FR-06 Status System

User stories

The work decomposed into shippable pieces.

As a Data Coordinator, I want the Export Converted XLSX button to be locked until all Manual Review flags are resolved, so that I can't accidentally export a file with unresolved values.

AC-06: Export Validation Report CSV is always available after validation — not blocked by Manual Reviews.

User stories, US-15, EP-05 Manual Review Resolution

Test cases

What had to pass before release.

TC-37 REGRESSION: Trailing dash (Subtype empty)

Type='Crack', Subtype='' (empty string)

Input Damage Type='Crack' (no trailing ' - '). the organization='Crack - TLC'. the OEM='Crack - Longitudinal'. v2.1 fix.

Test cases, TC-37, Section 4 Conversion Engine

Release notes

What actually shipped.

VLOOKUP row ranges hardcoded in exported XLSX. Engineering adding rows beyond existing ranges requires manual formula updates.

ISBLANK() formula limitation — fixed in v2.1.

Single dataset format supported at release (Dataset A structure). Multi-format added in v2.1.

Release notes, v2.0, Known Issues at Release