Inspiration

Receiving a revised data export creates a deceptively small question: what changed? Rows can move, a column can disappear, and an identifier can be duplicated. A tidy list of differences is not useful if the software silently chooses which duplicate to trust. We built Rowmark around that handoff: confirmed changes should be easy to inspect, and uncertainty should stay visible.

What it does

Rowmark compares two CSV or TSV exports using user-selected identity columns. It separates added, removed, changed and unchanged records from groups that cannot be matched safely. The inspector places the original values side by side, distinguishes missing cells from empty fields, and links them to their source record and line numbers. A readable report and a full JSON audit include file fingerprints, matching policy and unresolved records.

The included water-monitoring scenario is synthetic. It demonstrates actual application behavior with invented records, not environmental findings or user adoption.

How we built it

We started a new project for Next Byte Hacks V5. The application uses JavaScript modules, semantic HTML and CSS without third-party runtime dependencies. A bounded state-machine parser handles quoted separators, escaped quotes and multiline fields. Exact composite keys produce record groups; ambiguous groups are withheld rather than overwritten. Web Crypto fingerprints the supplied file bytes. All data processing happens in the browser; the optional Node.js server only serves static files.

The implementation and materials were developed with OpenAI Codex. We disclose that assistance and do not present this as unaided development.

Challenges we ran into

“Missing” is not one state. A blank field, a short record, a removed column and a removed row mean different things. Preserving those distinctions through the parser, comparison, interface and exported audit was central. Another challenge was deciding when not to match: even identical duplicates remain ambiguous until the source or identity definition is repaired.

Accomplishments that we're proud of

The working demonstration completes ingestion, key selection, inspection and export without an account or data-service dependency. The automated suite checks malformed inputs, ambiguous identities, reordered rows and columns, a 10,000-row mutation oracle, resource limits and HTML escaping. The example explicitly shows a case where Rowmark refuses to claim a change.

What we learned

Auditability depends on keeping the comparison conditions attached to the result. A hash does not prove a source is authentic; an unchanged record may still have a schema change; and a stable row number is not an identity. Making those limits visible improves the result more than adding an opaque “confidence” score.

What's next

Independent usability sessions with research teams, saved review annotations that do not alter source data, streaming larger files, and an optional explicitly configured numeric-tolerance mode. These are future work, not current features.

Share this project:

Updates

Submission history