Run the example.
Unzip the download and open a terminal in its folder. With Node.js 20 or later:
node test.mjs
node match.mjs input.json result.jsonOpen result.json. Expect matchedSubtotalCents: "3750", one matched row and three review rows. The downloaded output.json is the reference result.
Why it stops
The $37.50 is only the subtotal for the one exact match. The other rows remain visible because a partial answer is safer than a confident-looking quotation.
This sample accepts JSON, USD catalogue prices in integer cents and positive whole-unit quantities. It does not extract PDFs, create Excel files, infer matches, calculate tax or freight, integrate with an ERP or send customer quotes.
Self-created demonstration
Fictional product data. Tested component. Not client work or a complete quotation system.
Have a small workflow to repair? Share an example input, expected output and the failure you want fixed.