Inspiration

A dataset handoff often starts with a small CSV: sample IDs, batches, dates, and notes. A duplicate identifier or missing label can make that handoff harder to interpret. SamplePack gives the sender a focused review step before sharing the file.

What it does

SamplePack runs locally in the browser. Load a CSV, choose which columns represent your sample identifiers and metadata, select required fields, and confirm the mapping before review.

It flags missing and duplicate identifiers, checks required metadata, and rejects malformed CSV rather than silently shifting values into the wrong columns. The reviewer can download a normalized four-column CSV, a JSON report containing mappings and findings, and an unchanged copy of the original input. Errors pause normalized export while keeping the report and original available.

Identifier whitespace is preserved by default. Optional trimming is explicitly selected and logged. Formula-like text receives a documented apostrophe prefix in the spreadsheet-oriented CSV export; raw mapped values remain in the JSON report. The application uses synthetic examples and has no file-upload service, analytics, or AI inference endpoint.

How it was built

The application uses HTML, CSS, and JavaScript ES modules with standard browser APIs. A separate calculation-free validation core handles CSV parsing, metadata checks, and deterministic export. The interface manages explicit mapping consent, file replacement, and asynchronous file-reading state. Node's built-in test runner provides automated tests; Python can serve the static files locally. There are no installed application dependencies.

Challenges and what was learned

CSV handling needs more than splitting lines: quoted commas, embedded newlines, escaped quotes, Unicode, and malformed records need distinct handling. Another challenge was keeping results trustworthy when a user changes mappings or replaces a file while reading is still in progress. These actions now invalidate previous results, and delayed operations cannot restore stale state.

The development review caught a minor stale-control issue during pending or rejected file selection. It was fixed and covered by regression tests. The main lesson was to test state transitions and export bytes alongside parsing rules.

Verification

The private candidate passed 50 automated tests, including a seeded test of 1,000 CSV roundtrips and exact/exceeded input limits. An additional AI-agent review added independent tests. Cloud Chrome testing covered clean and invalid examples, local file selection, explicit mapping, keyboard control activation, result invalidation, reset, and real downloads. The downloaded original matched the uploaded fixture byte-for-byte, and the normalized CSV matched the expected output.

Current scope

SamplePack reviews generic metadata, not scientific measurements. Dates receive a format warning rather than calendar validation. The normalized file includes the four mapped fields; other columns remain in the original source. Spreadsheet escaping is a mitigation rather than a guarantee across spreadsheet applications. Full screen-reader, mobile, and cross-browser/OS acceptance remain future work.

New work and AI attribution

This standalone implementation, interface, tests, documentation, and synthetic fixtures were created on October 29, 2026 for this hackathon candidate. No pre-existing commercial application code, private research project, or real experimental dataset was imported.

OpenAI coding assistants in tests and documentation. Additional AI-agent review and automated tests were used during development.

What's next

The proposed next steps are broader browser and accessibility testing, configurable metadata schemas, and clearer review summaries for larger manifests. These are plans, not current features.

Built with

HTML; CSS; JavaScript ES modules; Web Crypto; File API; Blob downloads; Node.js built-in test runner; Python static server; OpenAI coding assistants.

Links

Share this project:

Updates

Submission history