Skip to main content

Office Documents

Office document handling comes from four independent plugins, each with its own constraints and failure modes:

Word documents

profy-docx — docx-js generation, unpack-and-edit XML, cross-run text replacement, tracked changes

Excel spreadsheets

profy-xlsx — formulas over hardcoded values, zero formula errors, financial model conventions

PDF documents

profy-pdf — WeasyPrint creation (mandatory) plus pypdf/qpdf manipulation, including the kami typesetting engine

Presentations

profy-pptx — native .pptx (SVG → DrawingML) and HTML Deck, two mutually exclusive pipelines

What the four have in common

The “no tools” property deserves comment. These four plugins do not expose button-like interfaces such as “generate a Word document”. They supply methods and scripts. The upside is that the capability ceiling equals whatever can run in the sandbox, rather than being fixed by a tool signature — which matters for document work, where requirements are unusually open-ended.

Choosing between them

Three wrong turns worth naming

  • Wanted a PDF, built an HTML Deck. HTML Decks cannot export to PDF (Tailwind and WebGL do not render). If PDF is the requirement, take the kami route from the start.
  • Wanted an editable deck, wrote a custom converter. Custom scripts produce image-only slides with broken CJK text. The svg_to_pptx.py pipeline is the only supported route.
  • Wanted a live model, got a snapshot of numbers. Every calculation in Excel must stay a formula; hardcoded results become silently wrong the moment one input changes.
All three share a shape: the wrong path is easier, succeeds without error, and produces something that looks right until someone tries to use it.

One sentence that picks the right path

The deciding factor isn’t the file extension — it’s who picks the deliverable up next and what they do with it. Put that in the request and the Expert can’t take the wrong pipeline:

Shared constraints

Large documents — PDFs over 100 pages, DOCX files with many images — take a long time to process. Split them before uploading when practical.
  • The sandbox image has all dependencies preinstalled. Do not run pip install at runtime; an import failure is an image bug.
  • Operations involving LibreOffice (xlsx formula recalculation, doc→docx conversion, accepting tracked changes) depend on LibreOffice being present in the sandbox.
  • When modifying an existing file, its established conventions outrank any default guideline — you do not know what downstream depends on them.

Failures and fixes

Per-format failure modes live on each plugin’s page; these are the ones shared across all four:

Billing

Credit consumption for document work comes from model token usage in the conversation. Generating and downloading the files themselves carries no additional charge.
Verified 2026-08-11. Sources: services/agent-runtime/src/plugins/builtin/{docx,xlsx,pdf,pptx}/plugin.json and their respective skills/ directories.