Note: This topic is featured in the "Build a Quality Inspection App" section of Tulip University.

Some companies employ quality specialists to track and fix defects over the course of the day. These specialists are usually equipped with a piece of paper to track common defects on the production floor. It would look something like this:

In the first column, there is a series of choices for the part number. Then, an operator must add a tally to indicate the issue that they experienced with a certain part number.

Tulip does not have a spreadsheet interface. Instead, you should use a “Form Step” so that each individual employee can easily report defects and indicate whether a part needs rework or should be scrapped. This allows you to track common defects in real-time.

A “Rejects Report” app should have two steps:

  1. Select the part with a defect
  2. Choose the type of defect from a predefined list

Here's what that might look like:

Tulip will store the defect in a database as soon as someone uses the app. Then, you can view a real-time chart of defects in a Dashboard.

Here’s how to build the rejects report app.


In order to understand this tutorial, you must complete Tulip Basics, the short tour of the Tulip App Builder.

Step 1- Select The Part

This step will show a series of images with their part names/numbers, and ask the operator to choose the part with a defect. 

Here's the part of the spreadsheet we are covering:

When the operator chooses a part, you will use Triggers to advance to the next step and update a variable named “part_id” with the specific part. This will allow you to later analyze the frequency of defects by part.

After you are using a variable to track the part ID, you can build an Analysis that shows common defective parts.

Building It In Tulip

Here’s an example of the part selection screen:

In order to allow the operator to select a part, you need to place an invisible button on top of each image/text combination.

Here’s an example of the button over the part on the far right.

At the bottom of the Widget tab in the Context Pane, you can see that the “Button Color” is set to transparent. There is also no text in the button. This enables to build logic based on the image that the operator will press at their workbench.

Now, you must use Triggers and Variables to store the name of the defective part.

Add a Trigger to the button and name it something like "Save Part ID - Part x".

Then, create a variable named “partID” and update it with the name of the part. After that, proceed to the next step.

Here is how to build that in the Trigger Editor:

And here is the "Then" statement from above:

In this case, your part is called “myPartID”. That’s pretty boring, but you get the idea. It could be a serial number or an internal name. To save this as text, make sure to put it in quotations as above ("").

You can create the variable partID in this screen by selecting the “New variable” option next to the dropdown named “location”.

You must select these options first:

Then you can create the variable by clicking the "New Variable" option in the following field called "location":

After you have updated the variable, send the operator to the next step by adding the "Go To Step", "Next" statement.

Combining This Step With Other Steps 

In some cases, you may not want to send operators to the next step automatically. You may want to create dynamic paths through the app based on the part that they selected. In order to do this, just select the specific step in the dropdown next to “Go To Step” for each part.

Analytics Possibilities

You can use data from this step to see which parts are commonly defective.

Use the “One Operation” Analysis and then select the “part_ID” variable for the X axis. Show the frequency on the Y Axis.

Further Reading

Step 2- Select the Defect

Once you know the part, you need to allow the operator to select the defect. 

Here's the part of the spreadsheet we are covering:

You can accomplish this with a “Form Step”. Since Tulip will automatically track the date and time of the app completion, you only need two fields:

  • The type of defect from a pre-selected list
  • An image of the defect (if necessary) 

Building It In Tulip

Here’s what it might look like:

You need two fields, a Dropdown and a Photo. 

First, create a new Form Step. Then, add a dropdown using the Toolbar.

In the Dropdown step, click the “+” next to the Variable name to create a new variable that tracks the operator’s choice in that specific field. Then, rename it to “Type of Defect” or “defect_type”.

Make all options in the dropdown available as buttons, then add the options using the "+" symbol.

Finally, change the “Next” button to a “Complete” button, since this is the last step of the app.

Combining This Step With Other Steps 

In some cases, you may want to create multiple Form Steps with different dropdown options based on the part that was reported in Step 1.

If that is the case, make sure you use the same variable to track user input from the dropdown in each Form Step so that you can eventually create an Analysis. An operator will only be filling out one form per app completion.

For example, if you have three different Form Steps that the operator can use to report a specific defect, make sure all the dropdowns update the same variable called “defect_type”.

Analytics Possibilities

You can use the “One Operation” Analysis to see which defects are most common overall. Just choose the variable “defect_type” for the X axis.

Or, you can combine the data about defects with the name of the part to discover which part/defect combinations are most common. Use the “Compare Variables” Analysis to see all combinations in one graph.

Further Reading

Did you find what you were looking for?

You can also head to to post your question or see if others have faced a similar question!

Did this answer your question?