Skip to content
AtomStorm

The export is the product

Most AI presentation tools hand you a picture of a slide and call it a deck. This is what we learned rebuilding our PowerPoint export twice, and why the file you walk away with is the only honest measure of the tool.

  • studio
  • craft
  • export

There is a moment, about ninety seconds after an AI tool finishes generating your presentation, when you find out what you actually bought. You open the exported file, click on a headline to fix a typo, and one of two things happens. Either a cursor appears between two letters, or the entire slide selects as a single image.

If it is the second one, you did not get a deck. You got a screenshot with the file extension of a deck.

We have spent more engineering time on that ninety-second moment than on any other part of AtomStorm Studio, including the part that talks to the model. This is an account of why, and of what we found when we took it seriously.

The shortcut everyone takes, and why

Generating a good-looking slide is now the easy half of the problem. A language model writes the content, a layout system arranges it, a browser renders it, and what you see on screen is genuinely nice: real typography, real spacing, effects that would take a person twenty minutes to build by hand.

Then you ask for a PowerPoint file, and the shortcut appears. The renderer has already produced a perfect picture of the slide. PowerPoint accepts pictures. Writing that picture into a .pptx file takes an afternoon. Translating the slide into the shapes, text runs, and layout rules that PowerPoint natively understands takes months, and it never entirely stops taking months.

So a lot of tools ship the afternoon version. It demos beautifully. Every pixel survives the trip, because a pixel is all that made the trip. The failure shows up later, in someone else's hands, usually under time pressure, usually the night before the meeting.

We shipped the afternoon version too, in our first release. This is not a description of someone else's mistake.

What "editable" actually costs

The second time around we rewrote the pipeline to go from the rendered document straight into native PowerPoint objects: text boxes with real paragraphs and real runs, shapes with real fills, images placed as images and text kept as text. The bitmap became a fallback rather than the plan.

Here is the part nobody mentions: it is not one hard problem. It is a long tail of small, specific, unglamorous problems, and the tail is the entire job.

Fonts do not travel. A deck that renders perfectly on our machine opens on someone else's laptop and reflows, because the typeface it was designed around is not installed there. PowerPoint substitutes something close, the substitute is wider, and a headline that fit on one line now takes two and pushes into the image below it. The fix is to embed the fonts in the file itself, which sounds obvious until you find that font licensing, format conversion, and the differences between how PowerPoint, Keynote, and WPS each read embedded fonts are three separate rabbit holes. We went down all three. Our exporter now embeds the Latin fonts a deck actually uses, and fetches the ones it needs on demand at export time.

Text overflows in ways you cannot see coming. Even with the right font, the same string measures slightly differently in a browser and in PowerPoint's text engine. A title that is comfortable in the preview can be three pixels too wide in the export, and three pixels is enough to wrap. We ended up asking PowerPoint to do what it is already good at: we mark text frames so the rendering engine shrinks the text slightly when it would otherwise overflow. The document adapts on the machine where it is opened, instead of trusting a measurement we took somewhere else.

Some things genuinely have no equivalent. A gradient mesh, a blur, a blend mode that exists in CSS and simply does not exist in the PowerPoint object model. Here you have to make a decision and be honest about it: rasterize that one element and keep everything around it live, or drop the effect. What you must not do is rasterize the whole slide because one corner of it was inconvenient. That is the shortcut wearing a disguise.

None of this is glamorous. All of it is the difference between a file you can use and a file you can only look at.

We kept the bitmap, and we tell you when it fires

There is a version of this essay where we announce that we solved the problem and the picture-of-a-slide never appears again. That version would be marketing.

We still have a bitmap path. It exists because the honest answer to "can every visual effect be expressed as a native PowerPoint object" is no, and a tool that pretends otherwise will silently mangle the one slide you cared most about. What changed in the rewrite is its status. It went from being the default to being a declared fallback, and we made it switchable: there is a flag that forces the whole pipeline back to the older bitmap-backed path, which exists so that if our native exporter ever gets something badly wrong on a deck that matters, the recovery is a single setting rather than a support ticket and a lost evening.

That inversion is the actual design decision. The question is never "does the tool have a fallback" — every tool has one. The question is whether the fallback is the plan wearing a nicer name, and whether you are told when it fires.

A related discipline: when we do rasterize an element, we try to keep the blast radius to that element. A slide where one decorative panel is flattened and the other fourteen objects are live is a slide you can still work on. A slide that was flattened wholesale because of that one panel is a slide you have lost, and the difference between those two outcomes is entirely a matter of how much work the exporter is willing to do before it gives up.

Why we think this is the actual product

It is tempting to treat export as the last step, a plumbing detail after the interesting work is done. We think that is backwards, for a reason that has nothing to do with engineering pride.

An AI tool that produces something you cannot edit has quietly made a claim: that it got everything right. Every word, every emphasis, every number, on the first try, for a document that is about to go in front of people whose opinion of you matters. That claim is false for any tool, ours included. Models are good and getting better, and they still do not know that your CFO hates the word "synergy", that the Q3 figure changed this morning, or that the client is using their old logo on purpose.

So the question is not whether you will need to change it. You will. The question is what happens when you do. If the file is editable, the answer is boring: you fix the word and move on, and the tool has saved you the two hours it was supposed to save you. If the file is a picture, the answer is that you either ship something slightly wrong or rebuild the slide by hand, which is precisely the work you were trying to avoid.

A tool that cannot be corrected is not a fast tool. It is a fast draft attached to a slow recovery.

The same rule, in a different room

We build a second product, Atlas, that has nothing to do with presentations. It cleans up macOS: caches, logs, build artifacts, the accumulated debris of a working machine. Different problem, different user, different language even.

It follows the same rule. Before Atlas removes anything, it shows you exactly what it plans to remove and why. After it runs, you can put it back.

We did not plan that symmetry. We noticed it after the fact, while trying to explain to ourselves why both products kept arriving at the same kind of decision. The rule underneath both is that software should not put you in a position you cannot get out of. A cleanup you cannot undo and a deck you cannot edit are the same failure in different clothes: the tool acted, the tool was confident, and you are now downstream of a decision you did not fully see and cannot revise.

Confidence is cheap. Reversibility is expensive, and it is the thing worth paying for.

How to check any tool in ninety seconds

If you are evaluating an AI tool that produces documents, you do not need to read a feature list. Generate something and export it. Then:

  1. Click a headline. Does a text cursor appear, or does the whole slide select as one object? This alone sorts most tools into two piles.
  2. Change a word to something much longer. Does the layout hold, or does the text spill out of its box and over the design?
  3. Open it on a different machine, ideally one that is not yours and does not have your fonts installed. Does it still look like what you exported?
  4. Look for the seams. If most elements are live and one is an image, that is a considered tradeoff and probably fine. If the whole slide is one image, the tool made you a picture.

Four checks, about ninety seconds. They will tell you more than any comparison table, including ours.

We would rather you ran those checks on AtomStorm Studio than took our word for any of this. The export is where the promise gets tested, and it is the only part of the tool that keeps working after you have closed the tab.