A week or two after I signed on with Rev Supply Co. as Digital Marketing Director, I flew out to the company’s headquarters in Santa Ana to meet with the team I inherited. Leading to that point, creative had been the responsibility of two junior-grade graphic designers working onsite. I met with these two first and asked them to walk me through their daily routines, most of which involved creating product assets like diagrams, banners, thumbnails, and more.
Right away, I could tell these designers were hard workers. But I could also plainly see that their methods were a bottleneck to the team’s output. Before I could demonstrate any real improvements to the marketing department under my leadership, this limitation had to be addressed.
Note: The goal of this project was to systemize production of these assets. The assets desperately needed a graphical redesign too, which came not long after with //Ulrich. But that could wait for the time being. First, we needed order.
Since I wanted to get an accurate reading of their everyday productivity, I made sure not to put any undue pressure on my new subordinates. To begin, I simply asked them to demonstrate the creation of a common graphic while I watched, so that I could understand the process. As one designer went through the motions to build what he called a “Cars and trucks banner” (pictured above), he and his partner outlined the steps for me:
Keep in mind that these were the steps for just one graphic. One of thousands required for thousands of products.
With the “Cars and trucks banner” done, I continued to sit and converse with the designers while they made additional elements for SKU 70K648, a typical M14x1.5 lug nut kit. They didn’t know it, but I was keeping track with the stopwatch on my phone. The table below provides a breakdown.
Asset Name | Time to Complete |
---|---|
“Cars and trucks banner” | ~ 1:18:00 |
“Measurements images for A+” | ~ 0:32:00 |
“Measurements infographic” | ~ 0:52:00 |
“Lug seat infographic” | ~ 0:37:00 |
Total | ~ 3:19:00 |
By the time the assets were ready, 3 hours and 19 minutes had gone by. That kind of time is excessive, especially for such simple designs. And the waste doesn’t end there, because construction is supposed to be one stage of an asset’s lifecycle. How would this team have handled a sweeping revision, such as a color change or textual update for the whole catalog?
With their methods, incremental improvement was out of the question, since even small changes would cost a fortune.
My first step was to collect and audit every type of graphic in circulation, and then hold whiteboarding sessions with the creative team. The goal was to document their storytelling methodologies, the purposes behind those methods, and how well the current assets served those purposes.
In doing so, I discovered two root causes of inefficiency. On one side, the creative team’s narrow-minded practices left no path toward scale. On the other, the product data they were expected to work with was underdeveloped. SKUs existed only for sellable items like kits or bulk packs, meaning the company had no way to reference an individual nut. So, designers were left guessing which nut belonged in which diagram. That explained some of the head-scratching, not to mention why no one bothered to organize relevant resources.
To solve this, I introduced a new layer of structure:
Piece Index:
A unique identifier for the single nut or piece (e.g., 08##48BLK). This gave creatives and engineers a common language for the smallest unit of product representation.Kit Index:
A parallel identifier for kits. While a SKU refers to a specific sellable item (e.g., 08K648BLK), the Kit Index (08K#48BLK) denotes the general kit type, regardless of the quantity contained.Natural Parent:
A logical grouping based on product lineage. This connects a nut back to its natural grouping as presented in the catalog. For instance, color variants are parented to the standard chrome-colored SKU.Mechanical Parent:
A functional grouping based on vehicle fitment. This ensures that when a product appears in a diagram, it’s contextualized correctly within its practical use case.These attributes did not exist in the product database, which, at the time, was managed in a spreadsheet. I worked with the product team to formally institute them as part of the company’s data model. I also modified the schema for existing attributes, including Category
and Series
, to better support creative workflows.
That effort laid the groundwork for our later adoption of a full Product Information Management (PIM) software (project //Roller), but even in the interim, it gave us a controlled vocabulary with zero ambiguity.
Below, you can see a small batch of SKUs with their attribute assignments. Next, I’ll explain how I employed these attributes to set up a true Creative Operations Framework (COF).
SKU | Category | Series | Piece Index | Kit Index | Natural Parent | Mechanical Parent | “InfoGraphic__Only-For” Layout | “InfoGraphic__Only-For” Scope | “InfoGraphic__Maker-ET-Caution” Layout | “InfoGraphic__Maker-ET-Caution” Scope | “InfoGraphic__Large-Lock-Seat” Layout | “InfoGraphic__Large-Lock-Seat” Scope | “InfoGraphic__Small-Recess” Layout | “InfoGraphic__Small-Recess” Scope | “InfoGraphic__Check-Before-Purchase” Layout | “InfoGraphic__Check-Before-Purchase” Scope | “InfoGraphic__Climate” Layout | “InfoGraphic__Climate” Scope | “InfoGraphic__Check-Lug-Seat” Layout | “InfoGraphic__Check-Lug-Seat” Scope | “InfoGraphic__Product-Features” Layout | “InfoGraphic__Product-Features” Scope | “InfoGraphic__Extended-Thread” Layout | “InfoGraphic__Extended-Thread” Scope | “InfoGraphic__Safe-Installation” Layout | “InfoGraphic__Safe-Installation” Scope | “DetailHead” Layout | “DetailHead” Scope | “RetroSpec” Layout | “RetroSpec” Scope | “RetroCons” Layout | “RetroCons” Scope | “RetroKsps” Layout | “RetroKsps” Scope |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
081148 | NUTS | 08-NUTS | 08##48 | 08K#48 | 081148 | 081148 | Factory | Series | ET-Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Why | Generic | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
081148BLK | NUTS | 08-NUTS | 08##48BLK | 08K#48BLK | 081148 | 081148 | Factory | Series | ET-Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Why | Generic | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
08K648 | NUTS | 08-NUTS | 08##48 | 08K#48 | 081148 | 08K648 | Factory | Series | ET-Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Why | Generic | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
08K648BLK | NUTS | 08-NUTS | 08##48BLK | 08K#48BLK | 081148 | 08K648 | Factory | Series | ET-Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Why | Generic | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
091144 | NUTS | 09-NUTS | 09##44 | 09K#45 | 091144 | 091144 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
091145 | NUTS | 09-NUTS | 09##45 | 09K#45 | 091145 | 091145 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
091145BLK | NUTS | 09-NUTS | 09##45BLK | 09K#45BLK | 091145 | 091145 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
09K544 | NUTS | 09-NUTS | 09##44 | 09K#44 | 091144 | 09K544 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
09K545 | NUTS | 09-NUTS | 09##45 | 09K#45 | 091145 | 09K545 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
131148 | NUTS | 13-NUTS | 13##48 | 13K#48 | 131148 | 131148 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
131148BLK | NUTS | 13-NUTS | 13##48BLK | 13K#48BLK | 131148 | 131148 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
131148XL | NUTS | 13-NUTS | 13##48XL | 13K#48XL | 131148XL | 131148XL | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
131167 | NUTS | 13-NUTS | 13##67 | 13K#67 | 131167 | 131167 | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
131167XL | NUTS | 13-NUTS | 13##67XL | 13K#67XL | 131167 | 131167XL | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||||||
231144 | NUTS | 23-NUTS | 23##44 | 23K#44 | 231144 | 231144 | Aftermarket | Series | Nissan | Generic | Standard | Generic | ET-Acorn-Seat | Generic | Standard | Kit Index | Why | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
231144BLK | NUTS | 23-NUTS | 23##44BLK | 23K#44BLK | 231144 | 231144 | Aftermarket | Series | Nissan | Generic | Standard | Generic | ET-Acorn-Seat | Generic | Standard | Kit Index | Why | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
231148 | NUTS | 23-NUTS | 23##48 | 23K#48 | 231148 | 231148 | Aftermarket | Series | Toyota | Generic | Standard | Generic | ET-Acorn-Seat | Generic | Standard | Kit Index | Why | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
231148BLK | NUTS | 23-NUTS | 23##48BLK | 23K#48BLK | 231148 | 231148 | Aftermarket | Series | Toyota | Generic | Standard | Generic | ET-Acorn-Seat | Generic | Standard | Kit Index | Why | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
601148 | NUTS | 60-NUTS | 60##48 | 60K#48 | 601148 | 601148 | Aftermarket | Series | Standard | Series | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index | ||||||||
601148BLK | NUTS | 60-NUTS | 60##48BLK | 60K#48BLK | 601148 | 601148 | Aftermarket | Series | Standard | Series | Acorn-Seat | Generic | Standard | Piece Index | Standard | Piece Index | Standard | Generic | Standard | Mechanical Parent | Standard | Piece Index | Standard | Piece Index | Standard | Piece Index |
Now, product data was structured in such a way that lines between different products, as well as between products and their constituents, were clearly drawn. And since I had met with both my team and executive leadership to nail down existing concepts as well as storyboard new ones, I knew how to turn those clearly drawn connections into concrete expectations within a smarter creative workflow.
But concrete expectations would only go so far if I let my people keep naming their files “Truck banner thing final.psd.” I needed them to follow a formula, starting with an actual naming convention. The convention I selected was the one set forth in the Atlas Method, a file management philosophy I developed personally in 2021. Feel free to read up on //Atlas. I won’t go into detail about the entire method here, but it’s worth noting that the naming convention is only a part of it. This project borrowed other ideas from it as well.
At this juncture, //Roller, our PIM implementation project, had begun and was running concurrently. I knew it would be some time before Roller was fully deployed, but I also knew Opheim depended on it. The controlled vocabulary I had just defined needed to live in the PIM’s schema, where it could be enforced against every SKU. For that reason, one of the very first structures I implemented in Roller was a system of asset mappings.
These mappings defined how each product should connect to its required creative deliverables. For every SKU in the database, I established a set of asset types, each paired with two directives — Layout and Scope.
From just those two attributes, a procedural filename could be generated. Each filename carried a dual role:
This approach eliminated ambiguity and guesswork, replacing “Truck banner thing final.psd” with deterministic, machine-readable identifiers. In the table below, you can see the generated filenames for the same SKUs listed in the earlier table. Every file became both a directive and a data point, making the creative workflow inseparable from the product database.
SKU | Required Graphics (Procedurally Generated) |
---|---|
081148 | InfoGraphic__Only-For_Factory__08-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__08##48.jpg; InfoGraphic__Check-Lug-Seat__08##48.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__081148.jpg; RetroSpec__08##48.jpg; RetroCons__08##48.jpg; RetroKsps__08##48.jpg |
081148BLK | InfoGraphic__Only-For_Factory__08-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__08##48BLK.jpg; InfoGraphic__Check-Lug-Seat__08##48BLK.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__081148.jpg; RetroSpec__08##48BLK.jpg; RetroCons__08##48BLK.jpg; RetroKsps__08##48BLK.jpg |
08K648 | InfoGraphic__Only-For_Factory__08-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__08##48.jpg; InfoGraphic__Check-Lug-Seat__08##48.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__08K648.jpg; RetroSpec__08##48.jpg; RetroCons__08##48.jpg; RetroKsps__08##48.jpg |
08K648BLK | InfoGraphic__Only-For_Factory__08-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__08##48BLK.jpg; InfoGraphic__Check-Lug-Seat__08##48BLK.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__08K648.jpg; RetroSpec__08##48BLK.jpg; RetroCons__08##48BLK.jpg; RetroKsps__08##48BLK.jpg |
091144 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__09##44.jpg; InfoGraphic__Check-Lug-Seat__09##44.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__091144.jpg; RetroSpec__09##44.jpg; RetroCons__09##44.jpg; RetroKsps__09##44.jpg |
091145 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__09##45.jpg; InfoGraphic__Check-Lug-Seat__09##45.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__091145.jpg; RetroSpec__09##45.jpg; RetroCons__09##45.jpg; RetroKsps__09##45.jpg |
091145BLK | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__09##45BLK.jpg; InfoGraphic__Check-Lug-Seat__09##45BLK.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__091145.jpg; RetroSpec__09##45BLK.jpg; RetroCons__09##45BLK.jpg; RetroKsps__09##45BLK.jpg |
09K544 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__09##44.jpg; InfoGraphic__Check-Lug-Seat__09##44.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__09K544.jpg; RetroSpec__09##44.jpg; RetroCons__09##44.jpg; RetroKsps__09##44.jpg |
09K545 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__09##45.jpg; InfoGraphic__Check-Lug-Seat__09##45.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__09K545.jpg; RetroSpec__09##45.jpg; RetroCons__09##45.jpg; RetroKsps__09##45.jpg |
131148 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__13##48.jpg; InfoGraphic__Check-Lug-Seat__13##48.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__131148.jpg; RetroSpec__13##48.jpg; RetroCons__13##48.jpg; RetroKsps__13##48.jpg |
131148BLK | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__13##48BLK.jpg; InfoGraphic__Check-Lug-Seat__13##48BLK.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__131148.jpg; RetroSpec__13##48BLK.jpg; RetroCons__13##48BLK.jpg; RetroKsps__13##48BLK.jpg |
131148XL | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__13##48XL.jpg; InfoGraphic__Check-Lug-Seat__13##48XL.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__131148XL.jpg; RetroSpec__13##48XL.jpg; RetroCons__13##48XL.jpg; RetroKsps__13##48XL.jpg |
131167 | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__13##67.jpg; InfoGraphic__Check-Lug-Seat__13##67.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__131167.jpg; RetroSpec__13##67.jpg; RetroCons__13##67.jpg; RetroKsps__13##67.jpg |
131167XL | InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Product-Features__13##67XL.jpg; InfoGraphic__Check-Lug-Seat__13##67XL.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__131167XL.jpg; RetroSpec__13##67XL.jpg; RetroCons__13##67XL.jpg; RetroKsps__13##67XL.jpg |
231144 | InfoGraphic__Only-For_Aftermarket__23-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Maker-ET-Caution_Nissan__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__GENERIC.jpg; InfoGraphic__Product-Features__23K#44.jpg; DetailHead__231144.jpg; RetroSpec__23##44.jpg; RetroCons__23##44.jpg; RetroKsps__23##44.jpg |
231144BLK | InfoGraphic__Only-For_Aftermarket__23-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Maker-ET-Caution_Nissan__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__GENERIC.jpg; InfoGraphic__Product-Features__23K#44BLK.jpg; DetailHead__231144.jpg; RetroSpec__23##44BLK.jpg; RetroCons__23##44BLK.jpg; RetroKsps__23##44BLK.jpg |
231148 | InfoGraphic__Only-For_Aftermarket__23-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Maker-ET-Caution_Toyota__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__GENERIC.jpg; InfoGraphic__Product-Features__23K#48.jpg; DetailHead__231148.jpg; RetroSpec__23##48.jpg; RetroCons__23##48.jpg; RetroKsps__23##48.jpg |
231148BLK | InfoGraphic__Only-For_Aftermarket__23-NUTS.jpg; InfoGraphic__Extended-Thread_Why__GENERIC.jpg; InfoGraphic__Maker-ET-Caution_Toyota__GENERIC.jpg; InfoGraphic__Check-Before-Purchase_ET-Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__GENERIC.jpg; InfoGraphic__Product-Features__23K#48BLK.jpg; DetailHead__231148.jpg; RetroSpec__23##48BLK.jpg; RetroCons__23##48BLK.jpg; RetroKsps__23##48BLK.jpg |
601148 | InfoGraphic__Only-For_Aftermarket__60-NUTS.jpg; InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__60-NUTS.jpg; InfoGraphic__Product-Features__60##48.jpg; InfoGraphic__Check-Lug-Seat__60##48.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__601148.jpg; RetroSpec__60##48.jpg; RetroCons__60##48.jpg; RetroKsps__60##48.jpg |
601148BLK | InfoGraphic__Only-For_Aftermarket__60-NUTS.jpg; InfoGraphic__Check-Before-Purchase_Acorn-Seat__GENERIC.jpg; InfoGraphic__Small-Recess__60-NUTS.jpg; InfoGraphic__Product-Features__60##48BLK.jpg; InfoGraphic__Check-Lug-Seat__60##48BLK.jpg; InfoGraphic__Safe-Installation__GENERIC.jpg; DetailHead__601148.jpg; RetroSpec__60##48BLK.jpg; RetroCons__60##48BLK.jpg; RetroKsps__60##48BLK.jpg |
With mappings defined and filenames procedurally generated, the next challenge was where to anchor the work. It wasn’t enough to define assets in the PIM; those assets needed a production environment that could hold them together, enforce consistency, and make large-scale updates effortless. For Opheim, that environment was Adobe InDesign.
InDesign excelled here because so much could be centralized inside the file itself. A single .INDD file wasn’t just a canvas—it was a container of rules.
This meant assets were no longer maintained one by one; they were managed as systems. Change a type hierarchy, and thousands of product diagrams updated. Adjust a swatch or object style, and entire series of assets shifted instantly.
Just as important was the day-to-day speed this unlocked for designers. In stark contrast to the old clunky Photoshop-based workflow, InDesign templates turned repetitive work into a seamless flow. A designer could keep a file manager open on one screen and InDesign on the other, dragging new images directly into predefined frames. Instantly, those images became linked files and had all required styles applied. Aside from a little refitting here and there, the template did the rest.
The final step was to bridge production with delivery. With assets corralled inside InDesign, consistent naming enforced by the Atlas Method, and mappings established in the PIM, the last piece was to automate output. For this, I turned to Adobe ExtendScript.
ExtendScript gave me direct programmatic control over InDesign’s export functions. Instead of designers manually exporting things one by one, guessing at filenames, and saving to arbitrary folders, a single script could do all of this in a deterministic, repeatable, sensible way.
The script pulled data directly from the PIM mappings, ensuring that every exported rendition carried the correct filename, complete with Scope, Layout, etc. Output destinations were also automated. This meant designers didn’t even need to think about filenames or folder hierarchies; the system handled it. All of it.
The impact was twofold:
By combining InDesign’s centralization with scripted output, Opheim delivered a workflow that was faster, cleaner, and virtually immune to human error.
By the time Opheim reached steady state, the combined effect of Atlas naming, PIM-driven mappings, InDesign centralization, and scripted output was clear: production speed had transformed. What once required tedious manual setup in Photoshop was now reduced to a streamlined sequence in InDesign, backed by automation and enforced consistency.
The table below shows a sample set of assets produced under the new framework. Each figure represents the average time it took to prepare and export a finished rendition, compared with the prior process.
Asset Name | Before Systemization | After Systemization | Time Reduction | Output Gain |
---|---|---|---|---|
DetailHead | ~ 1:18:00 | ~ 0:11:00 | 86% | 609% |
RetroSpec | ~ 0:32:00 | ~ 0:14:00 | 56% | 129% |
InfoGraphic__Product-Features | ~ 0:52:00 | ~ 0:24:00 | 54% | 117% |
InfoGraphic__Check-Lug-Seat | ~ 0:37:00 | ~ 0:04:00 | 89% | 825% |
Total | ~ 3:19:00 | ~ 0:53:00 | 73% | 276% |
These numbers tell the story: output time was cut by nearly three-quarters across a representative workload. Assets that previously consumed half an hour or more could be completed in minutes, while simpler graphics dropped to almost negligible times.
The improvement wasn’t just speed. Accuracy rose in parallel, since filenames were generated systematically and assets flowed into the right destinations automatically. Designers spent their energy on creative choices, not repetitive prep, and the organization gained confidence that production would scale predictably with demand.
Opheim’s 73% improvement was not an incremental gain but a step change — proof that a disciplined operations framework, when coupled with the right technical implementation, can redefine what’s possible for a creative team.