MATE for InDesign: Once Upon a Time in the Revolution!
February 03, 2025 | Extras | en | fr
Preamble
This is not InDesign's first brush with the realm of AI. The application already has Firefly-powered generative features like Text to Image and Generative Expand. In addition, script developers have not been slow to build bridges with existing AI systems — see for instance OpenAI for InDesign from Roland Dreger.
What's new with MATE — a mind-blowing extension released by Eugen Pflüger — is that it definitely opens the black box of automation to non-developers. And this is just enough to make us shiver! Under the hood, MATE for InDesign whispers to an oracle called ChatGPT, or Claude. The oracle can occasionally deliver unexpected results, but it is clear that on average, it overcomes the most daring challenges.
Eugen Pflüger — aka Plugisto — is a UX/UI expert specializing in creating innovative solutions for Adobe products, and it is not by chance that he received the Developer Champion 2024 medal! As a product designer and part-time plugin developer, he already created Arranger and OMATA for Illustrator (both available for free). He lives in Germany.
• Hi Eugen! Tell me briefly about your background.
Eugen Pflüger : I taught myself programming with Flash and never stopped learning. I love design. I also enjoy coding and scripting. With developing plugins for design tools like InDesign, Illustrator, Photoshop, Express, and Figma, I can combine both.
I also love generative design and art (I'm not talking about NFTs).
• MATE is a thunderbolt in the world of Adobe automation. How did this project come about?
E. P. : As a designer you sometimes need to do tasks that are incredibly tedious and slow that can be accomplished in seconds with code. E.g. arranging some items in a circular layout. Incredibly painful to do by hand, incredibly simple with script. That's how Arranger came to be.
With OMATA I wanted to expand this concept and give designers the “power of code” to easily create, transform, and randomize hundreds of objects without knowing how to code. The idea was to make it easy to create generative designs / generative art. OMATA is a no-code or “visual code builder”. You can stack commands (like “random opacity”) on each other and Illustrator executes those commands.
It was a very slow process to build all those commands and maybe Illustrator with its old and in parts quirky API was not the best choice to start with.
• That's when ChatGPT happened...
E. P. : Yes, after OMATA was released, ChatGPT appeared. Like many others I started to play with it and got fascinated by how a machine could understand my words. I asked myself if now someone would replace my plugins. The next thought was, why don't I try to replace them myself? I started to experiment:
Arrange items in a grid. Arrange in a circular layout. Random opacity. Of course, the AI hallucinated sometimes and the flipped Y axis¹ in Illustrator API is still an issue. But it worked quite well. I soon realized that with MATE I could accomplish tasks that are possible with OMATA. But it was simpler, faster, and I could do so much more. E.g. applying random opacity (with min/max) to the current selection requires several steps in OMATA. In MATE it's just typing a simple sentence and waiting for a few seconds. If you want to do more complex tasks, e.g. make sure that 10% of the items have an opacity of more than 50, it's almost impossible with OMATA. With MATE it's just another simple sentence and it's done.
1. Adobe changed Illustrator's document origin from bottom/left to top/left in CS5. This introduced persistent difficulties in getting scripts properly manage the coordinate systems.
And then you can even ask MATE to “Generate UI” and it will show you a dialog where you can input min and max values. There are so many tasks it can do for you. It's mind-blowing. Users like Jean-Claude Tremblay and Laurent Tournier and others, come up with incredible use cases and solutions everyday.
• Let's give our readers a straightforward use case starting from a 300-page document…
Speaking of 300 pages… this is a quote from Jean-Claude Tremblay from our Discord server (yesterday):
“I need to set all rows height to at least 0.125' in all tables in a document! I need to resize the width of all tables to their text frame width! Three prompts with MATE, and Voilà! All done in a 300-page document! I ❤️ MATE!”
MATE is a flexible tool for all kinds of use cases. The best part is: you can transform this tool to work on your specific need.
• But roughly summarizing, MATE is an assistant to automate tasks via ChatGPT or Claude. What does it bring more than directly invoking an AI?
E. P. : MATE does a lot of things to help you with daily tasks. First of all, it saves you from constantly copy-pasting between InDesign and ChatGPT/Claude. But it's more. It helps you to keep your flow. MATE can read your selected items and directly execute on them. With “auto run” turned on, MATE not only writes a script, it also executes it. You ask again. It executes. It's like having a real person sitting next to you and doing the tasks for you.
Besides that, you can save your scripts locally (and run them locally) and build up a nice collection of tools. Next to “Chat” MATE has other modes: “Text” and “Images”. It can correct spelling errors, translate to over 30 languages, shorten or lengthen texts. You can create images as placeholders or create them to get inspired.
• By the way, how to switch from ChatGPT to Claude Sonnet?
E. P. : You need to have the latest installation (v1.2.0 and above). In the chat view at the left corner there is this button with a bolt icon. You can switch between models for each chat and even for each prompt. In “Settings” you can also choose a default model. Every chat will then start with this model.
• Tell me more about your licensing system and how things fit together with OpenAI and Anthropic.
E. P. : MATE is available as a monthly subscription and a yearly subscription (you will get two months for free). I need to offer it as a subscription because the AI providers (OpenAI, Anthropic) are charging me for usage. You can also get a version that works with your own OpenAI API key — soon with your custom Claude (Anthropic) API key. Then it's a one-time payment only, not a subscription. Also, right now you can get MATE as a “lifetime deal”. That means you pay once and can use it forever.
Technical questions
• The product is quite easy to install when using the Creative Cloud application via Adobe Exchange. But suppose I want to manually install the ZXP source, is that possible?
E. P. : No, it's not possible. I'm not very familiar with all the things that can happen when you manually install a ZXP. Adobe fixed the installation process of extensions some time ago and it works now. I'm a solo developer. I think my time is better spent with developing features and fixing bugs than to answer support requests for installation issues. If there is really a need for it please tell me at support[at]omata{dot}io
. I will then take a look into it. But I don't believe it's needed now.
• For the time being, MATE can only produce ExtendScript scripts. Do you plan to add UXP?
E. P. : Yes, that will be possible. I still need to figure out how to handle it in the UI so that users know what they are dealing with. Not every user cares about it. But it will be coming.
• In preparing for this interview, you explained to me that “MATE is not a solution for a single use case”. What did you mean?
E. P. : In software you can often distinct between a “solution” and a “tool”. A solution solves a concrete problem (e.g. Arranger solves circular layouts. That's it.) A “tool” is often more flexible and can be applied to several problems. MATE is a tool. It's the same with ChatGPT that has not a single use. It can be used for emails, programing, writing poems, brain storming, etc.
MATE solves your very specific need in that moment. And this can be anything in your work: styling table cells, rewriting character styles, changing car names in a text to bold, writing GREP, or picking some graphics items randomly to creating an interesting background effect. That's why I like to describe it as a tool for automations, creative work (e.g. random colors), and scripting. It's hard to describe it with a single use case.
• What are the limitations that the user should know about? What is MATE for InDesign unable to do?
E. P. : One important aspect is that MATE does not create a nice editorial page layout for you. Or it won't draw you a unicorn icon. This is by design. I wanted MATE to be your assistant to help you with boring tasks so that you have more energy for the creative things.
Another limit is called “context window”. The AI in the background has a limit of input that it can work on. That means that it can't work on a very, very long single text. You would need to break that down into smaller pieces. Although, the AI vendors are constantly increasing context windows.
• Let's talk about those damn “hallucinations”. In a quick exchange on X we noticed that MATE could sometimes invent InDesign DOM properties that don't actually exist, which then causes a runtime error…
E. P. : Hallucinations mean that the AI invents things that are not there. Like sometimes DOM properties. It happens unfortunately. The system is not perfect. They are rooted in the way LLMs work. Andrej Karpathy has written an interesting post about it. Hallucinations are a feature and not a bug :) Without these inner workings LLMs could not be so creative and flexible. The question is, how we can deal with it? I'm working on improving this. Better handling of errors is the first step. A benefit of AI is that it can fix its own mistakes.
• So, suppose I found a wrong assumption in MATE's reasoning, I can then help it handle the isssue — e.g. “The Spread object does not have bounds
property” — and it will and readjust the code accordingly (which is awesome!) But is there really no way to make these fixes persistent?
Unfortunately, the “big” LLMs like ChatGPT, Claude, Mistral… don't learn from mistakes. There is a misconception about what AI and “learning” mean. You can ask them to remember a solution to a mistake but they can't (because the learning/training phase of an AI model is already completed — it's “frozen”). LLMs learn when they're trained, which happens in a phase before it will be released. After that no learning happens from interactions with users.
There are some technical reasons for it but also some conceptional: what if you are intentionally telling a LLM wrong facts and that it should remember them? Who decides which is wrong or right? I believe these are good reasons to not have a trained model be open for feedback. Privacy is another aspect. It would need to save your prompts and data and integrate them in their models. There was a lot of backlash in the beginning of ChatGPT against using user data to train the next model. It's a difficult topic.
As a user of ChatGPT and MATE myself, I can absolutely see the need to correct obvious mistakes and adapt MATE to your needs. I'm doing research on it. There are several concepts, e.g. a RAG system² with memory (for your corrections). I'm working on it.
2. RAG stands for Retrieval-Augmented Generation.
• Branislav Milić reported a few days ago that one can “reverse-engineer” existing scripts using such tool — e.g., parsing a third-party code and adapting it to a different task…
E. P. : Yes, you can do that. But you could do this with ChatGPT from day one. And, you could do all the time with all .jsx
files without any AI. You could always open them, change some values, rewrite them. AI only makes that simpler and faster.
• Does this mean that old-school developers like me can retire?
E. P. : I understand the concerns. Just because reverse-engineering is technically possible doesn't mean it should be allowed. It's the same question of rights as with e.g. fonts or photos. Technically it's simple to share them but usually you are not allowed to. (It's not a new topic because of AI: it's as old as design itself.)
I have never heard someone say “We have too many developers.” Developers and engineers are still a rare resource. Although some non-developers can change scripts without an engineer doesn't mean that you have less work. I think it's the opposite. Automations and systems integrations are needed more and more. AI makes mistakes and you need people who can correct them. Developers like you can use AI as a tool to get things done faster and with less mental energy. AI helps you to get the boring parts of coding done faster so that you can focus on the more challenging higher level tasks.
• What do you plan to enhance or fix in the next releases?
E. P. : I want to improve the quality of responses and reduce hallucinations. I want MATE to better understand your documents and your requests. I want to add more AI models. I'm also working on a prompt guide and a trouble shooting guide. It's important to teach people how to deal with errors instead of ignoring them.
This space is moving so fast that it's really hard to keep up and provide the latest and greatest models. The good news is that things are getting better constantly.
Interviewed by Marc Autret
• Where to go from now?
→ OMATA Labs: omata.io
→ MATE: omata.io/mate
→ Adobe Exchange: @plugisto
→ Figma: figma.com/@plugisto
• Related links
→ A Case Study on Arranger: Making the Leap from CEP to UXP
→ OpenAI for InDesign (R. Dreger)
→ Adobe France: InDesign: Scripts, GREP et IA — avec L. Tournier (FR)