Skip to content

Repository files navigation

Sheet Docket

A private, browser-based spreadsheet toolkit for CSV, XLS, XLSX, and ODS files. It includes a rule builder, file difference checker, health profiler, duplicate cleaner, lookup/merge tool, and batch processor. Workbook data stays in the browser and heavy processing runs in Web Workers.

Workbook data is processed locally in a Web Worker. It is not uploaded to an API or stored on a server.

File difference checker

Open /difference, choose a baseline file and an updated file, then configure:

  • One to five matching-column pairs, allowing composite unique keys
  • One or more column pairs whose values should be compared
  • Normalized text matching, which ignores capitalization and extra spaces, or exact value matching
  • Optional per-column exact or normalized comparison, numeric tolerance, date tolerance, and ignored comparison pairs

Same-name columns are paired automatically and likely identifier columns such as Claim ID are suggested as the matching key. Every output row is classified as CHANGED, ADDED, REMOVED, UNCHANGED, or KEY ISSUE. Blank and duplicated keys are isolated as key issues instead of being matched ambiguously.

The preview shows baseline and updated values side by side and identifies the specific columns that changed. Export differences only, all compared records, or one status. Reports use the updated file's extension and include all selected rows even though the browser preview is limited to 50.

Download the two included workbooks from the difference checker to exercise a known result: 20 changed, 10 added, 10 removed, and 470 unchanged records.

Rule recipes

Valid rule dockets can be named and saved in browser local storage. Recipes map conditions by column heading, so they remain usable when columns move. The saved-recipe drawer supports JSON import, JSON export, updating, applying, and deleting recipes. Recipe JSON contains headings, conditions, comparison values, and optional remarks, but no workbook rows.

After ordered rules run, the rule tester reports raw matches, assigned matches, priority-shadowed matches, overlaps, rules with no matches, and sample source row numbers.

Ordered row rules

Rules run from top to bottom and the first match wins. Each rule can require all or any of its conditions. Individual rules can be marked Active or Skipped without deleting their setup. At least one rule must remain active, and every saved rule must contain a complete condition. Supported operators include:

  • Text equality, inequality, contains, does not contain, starts with, and ends with
  • Blank and non-blank checks
  • Numeric greater-than, at-least, less-than, and at-most comparisons
  • Date before, on-or-before, after, and on-or-after comparisons

Each rule and the fallback can write a custom remark. Leaving a remark blank still classifies the row but does not overwrite an existing source remark. Text comparisons ignore capitalization, surrounding whitespace, and repeated spaces.

Duplicate date window

This recipe compares rows across the sheet using configurable entity, category, and date columns. The window can use days or calendar months and can be strict or inclusive. It produces four outcomes with optional, editable remarks in priority order:

  1. Same entity and category inside the date window
  2. Same entity and category outside the date window
  3. Same entity with a different category
  4. No duplicate condition

The original assistance checker is preserved as the default preset when the headers look like client name, assistance type, and date received.

Spreadsheet health checker

Open /health to scan every row for completeness and value consistency. The health ledger reports inferred types, blank rates, repeated values in a sample of up to 50,000 rows, unreadable date-like values, four-standard-deviation numeric outliers, examples, and a likely unique key. The report exports using the source extension.

Duplicate cleaner

Open /duplicates and choose one to five key columns. Exact or normalized keys can keep either the first or last row in each group. An optional merge fills blank survivor cells from other rows in the group. The tool downloads the clean same-format workbook and a separate same-format duplicate audit.

Lookup and merge

Open /lookup to join a primary and reference file using one to five paired keys. Choose reference columns, exact or normalized matching, a left or inner join, and whether same-name columns are appended, filled only when blank, or replaced. Duplicated reference keys remain visible as ambiguous and are never matched arbitrarily. The result uses the primary file extension.

Batch processing

Open /batch to run one saved recipe across up to 25 files or 500 MB at a time. Files are processed sequentially in a Web Worker. The downloaded ZIP contains each completed output in its own source extension plus batch-report.csv with completed and skipped-file details.

Public pages

  • /tools is the full tool registry.
  • /guides includes tool selection, key, large-file, review, and FAQ guidance.
  • /about, /privacy, and /terms document the product, local-processing boundary, advertising disclosure, and responsible use.

Export behavior

  • Export all classified rows or a single remark category.
  • Preserve the input extension: .csv, .xls, .xlsx, or .ods.
  • Write only non-empty configured remarks. Blank rule actions preserve an existing Remark or Remarks value.
  • Append Remarks only when at least one rule writes a remark; otherwise leave a source file without that column unchanged.
  • Preserve source values from the selected sheet. Styling, formulas, macros, and unselected sheets are not copied.

The legacy XLS format allows at most 65,535 data rows per sheet. Larger XLS outputs are rejected with a message recommending XLSX.

Large files

Parsing, rule evaluation or file comparison, previews, and exports run in dedicated Web Workers. Only the selected worksheet from each source is retained, classification codes use typed arrays, and the interface receives at most 50 preview rows per output category. This keeps the main screen responsive during checks with hundreds of thousands of rows.

Run locally

Use the production server for normal spreadsheet processing. Unlike the development server, it does not open a hot-reload WebSocket.

npm install
npm run preview

Open http://localhost:3000.

For development:

npm run dev

Verify

npm test
npm run lint
npm run build

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages