I am developing an (web)application in which a user can upload data (for example excel, csv), apply some filters and export this data in several other formats.

The user can continuously upload more data, apply more filters, and export data and there is no 'fixed' order in which the user has to do this.

Now I want the user to be able to create a daily repeating set of steps. These steps are then executed each day in the order that is given.

For example:

  • reset all
  • upload a1-5.csv
  • upload a6-10.csv
  • add a column to all rows with the current date
  • export all as a_plus_date.csv

I have a concept of 'actions' in my application, so that each step becomes an action. This builds an action-log. But not all actions are useful to be in the daily steps.

I looked at how photoshop implements actions, but that seems to difficult for my average user.

What would be the best/easiers/simplest way for a user to construct such a daily step list? Are there common patterns to do this?

2 Answers 2


I've got a reference from the postal branche that might be of use. In college I delivered packages for the postal service. You had this scanner with you that showed you all the addresses in a particular order. This particular order was necessary to give people a timeframe in which they could expect me to deliver the package. The order and timeframe were based on previous experience. They knew a package could be delivered every X minutes and the order was formed dynamically based on the route the driver took.

When your route expanded new data had to be added, but the system didn't know what route the I would take and in what order to show the addresses. But I just had to drive the route and the system would learn from it.

The same might go for your application. I think you should learn from the users. Watch them go through the steps manually first and base the automated steps on that. Even go as far as: "this action the user only uses on a Friday" and add it to the list every Friday. It would take a while before you could form an accurate set of daily actions.

But be sure to give people control over it. People will like it if you anticipate their moves and think with them, but deploying certain actions automatically can be dangerous. You could give them a list of the daily actions you think they will want to do. Give them the possibility to easily remove or add actions and give them one big button to execute the list of actions.

  • 1
    +1. I like the idea of watching and learning from the user very much. Much more friendly than making the user teach you explicitly! May 13, 2014 at 9:23
  • Thanks Paul for your answer. I like the automated construction of the list, and how it helps the users. However, I need the users to be able to control it from the start (i.e. if they performed an action once, they should be able to add it to the list right away). The "Give them the possibility to easily remove or add actions" is the part that I am most curious about, are there default patterns for that type of interaction? May 13, 2014 at 9:35
  • You'll want an easy way for the user to 'check' the action as a daily action. You'll also want a section with all the daily actions in a list or something with easy controls for the user to remove actions. The how and where should depend on your design. May 13, 2014 at 12:25

Essentially you are allowing the user to create and run small programs that consist of a series of predefined actions. The general term for this type of interaction is a Domain Specific Language (DSL). It doesn't have to be represented with code, and it certainly doesn't have to look complicated.

I have some experience making a rules engine that was designed to be used by a non-technical business user (not a programmer but competent in creating Excel formulas). It is really important to get the abstraction correct at the design stage, i.e. what can be defined as an action, what are inputs (filenames, column names?).

If you want a really nice interface for non technical users, I would suggest keeping everything graphical where possible. Provide some kind of canvas for the user to build / edit their program steps, with templates for each type of step, and drag and drop to build and reorder.

If the above seems somewhat over the top for what you had in mind, you could do something text based, more along the lines of a very simple scripting language. If you go this route, try providing some buttons or other help to get new users started with simple functionality (these should be templates for the action types). I have in mind something similar to the markdown editing help in the Q/A text boxes on this site.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.