What is my (Omata) mate like after a month?

Regulars to Colecandoo may be aware that close to a month ago, I’d written a post about the Adobe InDesign plug-in called Omata Mate. If you haven’t read the article (here if you’re interested) Omata Mate is an extension panel that provides access to several LLM/AI models to write chunks of javascript code or GREP patterns, create images (similar to InDesign’s own text to image feature) or manipulate selected portions of text. My original take on the plug-in was quite favourable, and remains so one month on, but I thought I would prepare a follow-up piece with my experiences using the extension.

Welcome to “vibe” coding!

If you’re unfamiliar with this buzzword, it’s a way of creating software by using LLM/AI models to prepare the code, but the models are using the prompts to generate the code that creates the software via a “conversation” with the human creator. To simplify it further, think of the Ironman movies where Tony Stark talks to his computer “Jarvis” about what he wants and Jarvis seems to intuitively know what Tony wants and prepares it for him. In a perfect world, it would be like that.

We’re a long way from Ironman

At the time of writing, InDesign’s Omata Mate has access to 8 different LLM/AI for coding, but they each have their own different ways of doing things and their own ‘quirks’, such as:

  • My experiences with Javascript written by ChatGPT – one example was that it wasn’t great at doing things that required page geometry. That is, it would prepare code in points, but not convert them back into the user’s appropriate units of measurement. Gemini 2.5 on the other hand did not have such issues. ChatGPT also had trouble interpreting dates written in methods other than the usual conventions seen in USA or Canada, whereas Gemini 2.5 did not experience this difficulty.
  • ChatGPT would often go ‘off-piste’ and use portions of javascript that were outside of the extendscript framework. I’d often have to write this specific prompt to attempt to steer the code back into the right direction: “Using only the InDesign ExtendScript API Adobe InDesign 2025 (20.0.0.95) Object Model…
  • Code produced by Gemini 2.5 felt far more stable, but took longer to prepare per query. There were also several instances of prompts that would just do nothing, almost as if there was an error that I couldn’t see. With several reprompts, it was possible to have the change was made to the script.
  • Inconsistency with successful prompts. Sometimes the LLM/AI would fulfill my prompt correctly on the first go, but other times I felt like I was banging my head against a wall. If you’d asked me 25 years ago “would you ever get into a heated argument with a computer” the answer would have been no…
  • The ability to now write a UI is not the same as making a UI that is functional or practical. This is where it is important to not just have a UI, but also have good UX (user experience) design.

There were moments when I felt like Tony Stark, as I was able to type in a prompt such as “write a script that will prepare a UI to make randomised bingo cards based on a text file of various words” and within moments my “Jarvis” would present with a UI that did very close to what I asked.

Those occasions were rare, and much like asking an actual human programmer to make software, required lots of dialog and iterations, plenty of scope creep, and bouts of frustration. Several scripts that I’ve worked on took dozens – if not hundreds of iterations to work as expected.

Unfortunately, there were plenty of moments that were nothing like Jarvis – I’d type what I felt would be an easy request, but the next script that came along would throw errors; could click through the OK button but nothing would happen, or the script would go backwards in iterations. In one instance I’d asked to include a checkbox on a script but any time the checkbox was clicked, the script would fail. The AI’s solution – grey out the checkbox so I couldn’t select it! Certainly some outside of the box thinking there.

How the blacksmith wields the hammer

Despite some frustration, I’ve been able to use Omata Mate to make some very powerful InDesign Javascript user interfaces. Much of this frustration I’ll put down to not knowing how to use the tools properly. With this in mind, it is worth sharing the following tips:

  • Don’t try to write a fully functional script all in one go – break it down into smaller tasks and build those tasks gradually. As mentioned before, some scripts took hundreds of iterations.
  • You are tethered by what can and cannot be done within Extendscript, so trying to program your way out of common InDesign bugs such as text wrapping an anchored object to the first line of a paragraph so that the first line obeys the text wrap will still be impossible.
  • Be prepared for frustration. There will be moments where a prompt request either does nothing, throws an error, goes backwards, or does something unexpected.
  • If you plan on giving (or selling) your scripts, then test, test and test again. Try all of the configurations that are possible in the UI that you’ve made. Try the same script on someone else’s machine. Get others to try the script, particularly if their default units of measurement aren’t the same as yours, or if their first language differs to your own.

How the plugin differs to using a regular AI model

While Colecandoo has the Omata Mate subscription, it isn’t something I’m using in my day job as a prepress operator. That said, everyone does have access to the free version of ChatGPT without a login, and I’ve been using this in my day job to create scripts in the meantime. My preference is to use the Omata Mate plug-in for the following reasons:

  • After submitting a prompt using the Omata Mate plug-in, the script can auto-run if requested. This is in comparison to ChatGPT in a browser window, where you have to copy the text, paste it into a text editor, save the file, go to InDesign and run the script manually… it’s a small thing but when a script can take dozens of iterations to get right, it gets old really quick.
  • When a script doesn’t perform as expected in Omata Mate, providing negative feedback doesn’t to Omata Mate doesn’t generate any feedback about what went wrong and how it fixed it – it just tries again. Conversely with ChatGPT when a script fails and it is informed of the failure, it then justifies how it went wrong, what it did to solve the problem… even if the justification and solution are also completely wrong. It can also be worse when ChatGPT includes a phrase similar to “100% confirmed and tested in InDesign” when this is totally false.

Want to sample a script written with Omata Mate?

To demonstrate what sort of scripts can be written with this plug-in, I’ve used it to create a user interface that can be used to create a timeline of events – a graphic that shows a series of events in chronological order so that the reader can determine the exact order of events at a glance. It certainly wasn’t made with one query, but well over 100 queries and lots of testing!

So here is the UI before entering any of my information. It prompts the user for page and margin sizes; a suggested headline; a text file that contains the dates, events and picture links; some general options such as how to display the date and in what order; whether to include an image with each event; and time divisions in the background.

Here is the UI after I’ve entered my information. I’ve made it quite wide as it is a long timeline, but I don’t have any images to insert.

Here is the timeline generated by the script. Obviously it isn’t the best looking timeline around, but the formatting can easily be adjusted using the object and paragraph styles in the file.

There is a portion of the timeline where many events happened in quick succession, so rather than try to format these manually, I’ll generate another timeline but just of these particular dates so that they’re not so close together, and once it’s created I’ll format it so that it looks nice.

Here is the final timeline created with running the script twice – once with a full set of dates, and one with fewer dates – and then combined together into one file and touched up with some formatting adjustments.

If you would like a copy of this script, please get in touch via my contact page, specifically requesting the timeline script. I’ve updated it since taking the screen captures for this article and there is also an option to make the timeline go across a page or down a page.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.