Turn a generic CSV or TSV of personalized orders into a checked production batch. Map columns, review blocking and warning checks, and export a LightBurn-style Merge/CSV file, printable proof sheet, and batch ZIP.
You make personalized items (for example engraved boards, tags or coasters) and want to catch empty, too-long or unsafe personalization text before it reaches LightBurn's variable text.

Buy from /store/sif-batch/ and download sif-batch-0.1.0.zip from the checkout page. Extract it; you get a folder named sif-batch with server.mjs, the app, synthetic samples and README.txt.
Open a terminal in the sif-batch folder and run: node server.mjs. It prints “SifBatch is running at http://127.0.0.1:8787/ (loopback only; press Ctrl+C to stop)”. Open that address in Chrome. Keep the terminal open while you work; press Ctrl+C there when you are done. If port 8787 is busy, start it with node server.mjs --port 8790 and open that port instead.
On the Import step, click “Generic CSV sample”. It loads invented orders together with a saved mapping so you can walk through all four steps safely.
Keep “Generic CSV / TSV” selected. Click the “Drop a .csv / .tsv / .txt file or click to choose” area and pick your order file. Encoding and Delimiter can stay on automatic. Add buyer images under “Buyer images” only if your orders reference image files. Click “Continue to mapping →”.
Under “Record identity” choose the Order ID column (required) and, if you have them, the order line, quantity and image file name columns. Under “LightBurn columns” each row becomes %0, %1, … in LightBurn: pick its Source column, tick Required only for values that must never be empty, and set “Max chars” to what fits your item. “Suggest from source names” fills this in quickly but marks every suggested column Required, so review it. “Import mapping…” loads a saved mapping file and “Export mapping” saves the current one for next time. Click “Confirm mapping and validate →”.
Every order is listed as READY or BLOCKED, or with a warning, and the reason is shown in the Checks column. Use the filters (All, Blocked, Warnings, Ready, Excluded) to review. Blocked records never reach the LightBurn file; records with warnings do, so read them. Fix problems in your source file and import again, or adjust the mapping. Click “Proof & export →”.
Check the proof sheet preview and the “LightBurn setup” box (mode Variable Text → Merge/CSV, the Start/End rows, header row, UTF-8 encoding). Set a “Batch name”, then click “Download batch package (.zip)”, “LightBurn CSV only”, “Validation report (CSV)” or “Print proof sheet”. Files go to Chrome's downloads folder.
In LightBurn, use Variable Text in Merge/CSV mode with the downloaded merge CSV and the Start/End rows shown on the export step. Check LightBurn's preview for every row before production.
Input: examples/sif-batch/coaster-orders.csv (6 fictional orders: one with quantity 2, one name longer than 20 characters, one that starts like a spreadsheet formula, one with an empty name) and examples/sif-batch/coaster-mapping.json (Name required, max 20 characters; Date optional; Font required; Copy number).
Expected: Validate shows 6 records: 3 ready, 0 with warnings, 3 blocked, 4 LightBurn rows. Blocked reasons: “"Name" has 35 characters; the limit is 20.”, the formula rule for =1+1 (“"Name" starts with a spreadsheet formula character …”), and “"Name" is empty.” The CSV (SifBatch_Production-batch_lightburn-merge.csv) has 4 lines, the two-coaster order expanded to copies 1/2 and 2/2: “Hanna & Theo,21.06.2026,Great Vibes,1/2”. The batch ZIP contains lightburn/merge.csv, lightburn/COLUMNS.txt, proof/proof-sheet.html, reports/validation-report.csv and .json, mapping/sifbatch-mapping.json, originals/coaster-orders.csv, README.txt and manifest.json.
On “2 Map columns”, untick Required for that LightBurn column (“Suggest from source names” ticks every column), then confirm the mapping again.
Values starting with = + - or @ are blocked by default to protect spreadsheet users. Fix the source text, or on the Map step choose “Prefix with an apostrophe” (the apostrophe will be engraved) or “Export exactly as typed” (only if you never open the CSV in a spreadsheet app).
Check node --version shows 20.12 or newer and that you ran the command inside the sif-batch folder. If the port is in use, add --port with another number.
On the Import step set Encoding to the one your spreadsheet used (for example Windows-1252 for Excel “CSV” on Western Windows) instead of automatic.
SifBatch does not store orders between sessions. Use “Export mapping” (or keep the mapping inside the batch ZIP) and re-import the order file next time.
Guide and examples: 30 September 2026. Examples are fictional or synthetic. Online guide · Support