← Back to Work

Automation system

03 / 08

Designing a Scalable Automation System

How a sentence-based Automation builder became a structured system for new integrations, reusable workflow data, and failure handling

At a glance

ProblemProduct plans and customer requests required new integrations, but every addition to the sentence-based model needed another custom design and implementation.

My contributionI owned requirements, information structure, interaction design, prototyping, internal review, technical alignment, Data Reference, integration-specific Inputs, and error states.

Shipped scopeThe work shipped as two tasks: the new Automation structure first, followed by Data Reference. The project record does not include adoption or task-success metrics.

Structured Automation configuration cover.
The structured Automation builder separates App, Event, Account, and Inputs so new integrations can extend the system.

Context & scope

A readable sentence had become a system constraint

Internal users with Template editing permission created Automation. The original builder used a natural-language structure: When … Then … Do …. It was easy to read while actions were simple and predefined.

Product plans and customer requests introduced new integrations. Each addition required a new sentence pattern, design support, and special-case implementation. The format was readable, but the system behind it was not structured for expansion.

The scope became too large for one delivery, so the team split it into two tasks. The first rebuilt Automation configuration. The second introduced Data Reference so later actions could reuse information created earlier in a workflow.

The original Automation interface combined When and Then into a sentence, with the do this action menu open.
The original sentence was easy to scan, but every new capability required another custom pattern.

Evidence & alignment

Product and Engineering aligned the rules before implementation

Product plans and customer requests defined the need to support more integrations. I brought the two tasks through internal review with the PM and Engineering team to align the configuration rules, conditional Account behavior, integration-specific Inputs, Data Reference, and failure states.

This alignment established the baseline for the redesign. It did not test usability with customers or measure post-launch performance.

Task 01 · Automation structure

Define stable rules before adding more integrations

I first tried to preserve the sentence model and place new configuration inside When / Then / Do. Once app-specific fields and Account were added, the sentence kept branching and still required custom design for every capability, so I moved away from that direction.

I reframed configuration as three parts: App & Event → Account → Inputs.

App & Event defines what should run. The selected Automation App determines whether Account appears. Inputs holds the information needed to execute the event.

The goal was not to make every configuration identical. It was to define stable rules so Engineering could add future Automation types without requiring a new design for each one.

Before and after comparison of Automation changing from a When and Then sentence into a separate App and Event configuration.
The default state starts with App selection. The system only shows Account after it knows whether the selected App requires a connection.
The three-step QuickBooks Create Invoice configuration: App and Event, Account, and Inputs.
One QuickBooks example moves through App & Event, Account, and Inputs while keeping the current step visible.

Task 02 · Data Reference

Reuse information already created in the workflow

After the new Automation structure was defined, the second task addressed workflow data. Later actions increasingly depended on outputs from earlier actions: titles, dates, attachments, submitted files, and signed documents.

Data Reference lets an Input point to an existing output instead of asking users to recreate it. Text inputs can reference compatible text values; file inputs can reference attachments or generated documents.

This changed Automation from isolated rules into a way to pass information through a workflow.

A text Input opens Insert Data and references title and description values produced by earlier Workflow steps.
Text Inputs show compatible text data and keep selected values visible as identifiable variables.
A file Input uses Autofill to select QuickBooks PDF files produced by an earlier step.
File Inputs follow the same pattern but only show attachments and files created by earlier steps.

Variation & failure

Keep the rules stable without forcing every Input into one pattern

Moxo-native Automation could use defined Input fields. Integration Automation needed a different Input presentation because the content returned by each integration could not be known in advance. Both followed the same high-level configuration rules without pretending their Inputs were identical.

External accounts and workflow data also introduced more ways to fail. I designed the end-to-end error experience and organized it around when the problem happens: before execution, during execution, or after an Automation fails to complete.

The message should answer three questions: what went wrong, where it happened, and what the user needs to fix.

Moxo-native Automation uses predefined Input fields; Integration Automation renders Inputs dynamically from data returned by the Integration.
Moxo-native Automation uses predefined Input fields; Integration Automation renders Inputs dynamically from data returned by the Integration.
Inputs remain locked when the Account connection fails and unlock after the connection is restored.
Inputs remain locked when the Account connection fails and become available after the connection is restored.
Automation Preview shown in default, read-only notice, successful execution, and failed execution states.
Preview covers read-only guidance, successful execution, and failure in the same place where users confirm the result.

Result

A structured framework Engineering could extend

The redesign replaced sentence-specific patterns with a structured configuration model. Once the rules were defined, Engineering could add supported Automation types without returning to Design for a new pattern each time.

The new Automation structure shipped first. Data Reference, text and file references, integration-specific Inputs, Moxo-native events, third-party integrations, and Error handling followed.

The project record does not include adoption, completion, error-rate, or time-on-task data, so the effect after launch remains unproven.

Next Project

Evolving Teamind from a Personal Whiteboard to Team Collaboration

Three releases reshaped product structure, collaboration context, and the path to repeatable work

View Project 04 →