Draft: synchronized Hacker News launch¶
Do not submit. Hacker News submission is human-only. This is final local copy for owner publication after logged-out preflight.
Submission¶
Title
Show HN: WolfXL, a preservation-first Excel engine for Python
URL
https://wolfgangschoenberger.com/blog/when-an-ai-agent-edits-a-spreadsheet
First comment from the founder¶
Hi HN, I built WolfXL, a Rust-backed Excel engine with an openpyxl-shaped Python API.
The design goal is that an agent should not replace a source workbook until it can state what it changed and whether unrelated workbook state moved.
The agent-facing route is a guarded transaction: inspect the source, declare allowed operations and ranges, plan against an explicit capability table, patch an isolated copy, verify the requested mutation and unrelated package drift, then publish atomically. Unsupported operations fail visibly or use an explicitly named fallback.
I pressure-tested that design against the headless LibreOffice route bundled in the local Codex runtime installed with ChatGPT Desktop. The public comparison is intentionally narrow. It does not claim to benchmark ChatGPT web Canvas, a private server-side engine, Microsoft Excel, or every spreadsheet workload.
For preservation, I performed a no-op open/save round trip on five valid XLSX fixtures and compared every OOXML package part:
- region/quarter workbook: WolfXL 0 unrelated changes, LibreOffice 8
- validation, protection, and custom XML: WolfXL 0, LibreOffice 19
- external links: WolfXL 0, LibreOffice 14
- pivot chart and slicers: WolfXL 0, LibreOffice 31
- PowerPivot model: WolfXL 0, LibreOffice 151
Changed parts are not automatically corrupted parts. Office export filters can legitimately normalize XML, relationships, calculation metadata, and drawing geometry. The result measures mutation blast radius.
The source-matched local macOS benchmark used three observations per row. WolfXL was 2.2x to 3.9x faster on the paired tasks and inputs in the article. Its measured install was 37.5 MB versus 423.0 MB for bundled LibreOffice. I kept the unfavorable row too: isolated footprint RSS favored LibreOffice at 34.5 MiB versus 53.1 MiB for WolfXL.
LibreOffice remains the right fallback for broad office conversion and unsupported legacy formats. WolfXL is for bounded Python spreadsheet operations where explicit support, package preservation, and a machine-readable mutation receipt matter.
The Community edition is MIT-licensed and on public PyPI. Current production operations are commercial. The article links the exact-source preservation, benchmark, and wheel-build receipts, plus the producer scripts.
I would value feedback on three questions:
- Which workbook features should be hard refusal boundaries for an agent?
- Which public or redistributable fixtures would strengthen the preservation corpus?
- Which agent workflows still need a full office-suite fallback?
Please use public or synthetic minimized workbooks if you share a fixture. Do not upload confidential data.
Prepared short answers¶
Why call this package drift instead of corruption?
A changed ZIP member can be harmless normalization. We use "drift" until a feature-specific check demonstrates a user-visible failure. The preservation contract is still stricter: unrelated parts should remain unchanged unless the operation requires them to move.
Why benchmark LibreOffice instead of Walnut?
The published evidence is source-matched and reproducible for the bundled LibreOffice route. The inspected runtime also contains OpenAI's artifact-tool and Walnut packages, but the separate local Walnut probe is outside this launch because its receipt is not publication-grade.
Does WolfXL replace LibreOffice or Excel?
No. LibreOffice is a broad office suite and Excel is the reference application for many workbook behaviors. WolfXL targets supported server-side Python automation and uses explicit fallbacks or refusal outside that boundary.
Is the whole product open source?
WolfXL Community through 2.0 is MIT-licensed and available from public PyPI. Current 2.1+ production operations are commercially licensed and distributed separately. The public Community source is at https://github.com/SynthGL/wolfxl-community.
Can I reproduce the numbers?
Yes. The article links compact receipts, hashes, exact source identity, and producer scripts. The published result is scoped to those files, tasks, builds, and machines.
Submission sequence¶
- Publish the portfolio article and verify it while logged out.
- Confirm the evidence links resolve from the public default branch.
- Submit the article URL with the title above.
- Post the founder comment immediately.
- Publish the X thread within the same ten-minute window.
- Add the HN discussion URL as a reply to the X thread.
- Answer factual questions from receipts. Correct the article before replying if a factual error is found.
Moderation boundaries¶
- Do not turn package drift into a corruption claim without a demonstrated visible failure.
- Do not claim a benchmark against ChatGPT web Canvas, private OpenAI services, or Microsoft Excel.
- Do not promise support terms, future features, or performance outside the recorded scenarios.
- Do not ask anyone to upload a confidential workbook.