On templates, legacy formats, and a promise that is hard to verify
Implementation notes and usage lessons. No publishing schedule — it goes out when it is written.
Template design12 October 2026
Why thirty employment documents take forty minutes
Whether batch generation feels like one click depends mostly on how the template is written. Five habits that help.
Thirty employment documents, each name copied and pasted by hand, take a practised person forty minutes. The failure in those forty minutes is not typing speed — it is reaching the seventeenth person while believing you are on the eighteenth.
A batch tool removes the repetition, but only if the template is machine-friendly. These five habits take detection from “guesswork” to “almost no manual binding”.
Mark blanks with {{field}}, using exactly the column names from your sheet. The tool matches by name and ignores context, which is the most reliable path.
Do not merge header cells. Merging shifts column names; the first row may end up with one value and the rest called “col A, col B”.
One column, one fact. Split a header like “Name (former name)” into two columns — easier to bind, easier to check.
Use underscores, not spaces, for blanks. Both ASCII (____) and full-width (__) underscores are recognised. Spaces need the “Include gaps” switch and tend to catch normal prose spacing.
Store number-like columns as text in Excel. ID numbers, bank accounts and document numbers lose leading zeros, or turn into scientific notation, the moment Excel treats them as numbers.
The tidier the template, the closer the tool gets to one click. Conversely, heavy merged cells, WordArt and text boxes degrade detection — those spots usually need converting into ordinary paragraphs first.
One last thing: test with three rows. Confirm names, numbers and dates, then release the full list. The expensive mistake in batch work is never slowness — it is generating five hundred wrong files at once.
Format compatibility20 October 2026
.xls and .doc: keeping a road open for legacy files
The new formats are a decade old, yet finance still sends .xls and legal still keeps .doc files from 2008.
Legacy formats do not disappear when a new one arrives. Finance still sends .xls, legal still has .doc files from 2008, and nobody wants to batch-convert hundreds of files just to try a tool.
.xlsx and .docx are XML inside a ZIP container, which a browser can open directly. But .xls and .doc are OLE compound documents: a small disk made of 512-byte sectors, and inside it another layer governed by BIFF8, FIB and CLX — specifications written in 1997.
So we did two things. First, a compound-document reader that walks the FAT, the directory and the mini-stream to pull out the real data streams. Second, a minimal parser per format: .xls reads the shared string table and cell records (including RK numbers packed into four bytes), while .doc reads the piece table and extracts the body text.
The cost should be stated plainly: .xls contributes cell values and date formats only — font colours, comments and charts do not survive; .doc is converted into a clean .docx first, so bold, font sizes and margins are simplified.
So the advice stands: use the modern format when you can. Legacy support is a safety net, not an upgrade.
Privacy engineering26 October 2026
“No upload” is something you can verify, not just a promise
Every document site says it. So we broke it into three things you can check in front of you.
Every site that touches documents says it does not upload them. That is hard to verify, because you cannot see what the code is doing. So we broke it into three things you can check yourself.
One: there is no upload channel in the architecture. The page has no fetch, no XMLHttpRequest, no WebSocket. The server returns static files and has no database at all.
Two: the browser is forbidden from connecting out. The deployment sets connect-src to none. Even if someone slipped upload code in tomorrow, the browser would block it and raise a CSP error. That puts the promise in a policy, not in copy.
Three: the offline test. Open the page, unplug the network, then upload → bind → generate. Full functionality is the best proof there is.
One more detail: this site loads no external fonts, no analytics and no ads. Every request you see in the Network panel comes from this site.
Want to talk templates or compatibility? Open an issue in the project repository.
Try it — thirty seconds
No sign-up, nothing to install. Drop two files in and decide whether it deserves a bookmark.