ACAW study materials
ACAW study resources

An Analytic App That Breaks on Certain Inputs

ACAW · Put your knowledge to work in context.

All case studies

An Analytic App That Breaks on Certain Inputs

A team publishes an Analytic App that lets users pick a region from a dropdown, choose a date range, and optionally upload a CSV of overrides. The app runs a workflow and outputs a PDF. Users report three problems: (1) picking "All Regions" produces an error; (2) leaving the override upload blank crashes the run; (3) the date range picker lets users pick an end date before the start date, producing empty output with no message. The dropdown is populated by a static list; the date fields are free-form text inputs. The app is used by ~40 people, most non-technical.

1. For each of the three problems, describe the interface-design fix and where in the app configuration it belongs.

Read the worked answer

All three are input-validation and interface-design issues, fixable in the app's Interface tools rather than in the workflow logic.

1. "All Regions" errors. The dropdown likely passes a literal value that the downstream filter can't handle (e.g., it tries to match the string "All Regions" against region codes and finds nothing, or a Select tool chokes). Fix at the interface/workflow boundary: when the user picks "All Regions," the action should bypass the filter (e.g., an Action tool that disables the Filter, or a Formula that treats the sentinel value as "match everything"). Better: use a List Box or a dropdown whose "All" option is handled explicitly in the filter expression: IF [Region] = "All Regions" THEN 1 ELSE [Region] = [Selected] ENDIF. Don't rely on the sentinel string matching real data.

2. Blank override upload crashes. The optional file input should be genuinely optional. Configure the File Browse/Input so a blank selection is tolerated, and gate the override-merge branch on whether a file was provided (a condition/Action that disables the optional branch when empty). Never let a null file path reach an Input tool-that's the crash. Provide a default or skip path.

3. End date before start date. Free-form text date inputs allow invalid ranges. Replace with Date Interface tools (calendar pickers) that constrain format, and add a validation step: a condition that blocks Run (or shows a message) when end < start. Alteryx apps support an error message via the interface when a condition fails; surface a plain-language message ("End date must be on or after start date") rather than silently producing empty output. For non-technical users, a clear message is the difference between a support ticket and a self-fix.

2. Beyond fixing the three bugs, what would you change to make the app safer for 40 mostly non-technical users?

Read the worked answer

Design for the failure modes of a non-technical audience, not just correctness.

  • Constrain inputs instead of validating after the fact. Use dropdowns, list boxes, and date pickers so invalid values are impossible to enter, rather than free text plus error messages. Every free-text field is a future support ticket.
  • Populate dropdowns from data, not a static list. A hard-coded region list drifts from reality; drive it from the source so new regions appear automatically and "All Regions" is always valid.
  • Fail with a message, not a crash or empty output. For every branch that can produce zero rows, add a check that tells the user why ("No data for this region and date range") rather than handing them an empty PDF they can't interpret.
  • Defaults that work. Pre-select the most common region and a sensible default date range so a user who clicks Run without thinking gets something reasonable.
  • Limit blast radius. If the app writes files, use per-user or timestamped output names so 40 concurrent users don't overwrite each other's PDFs.
  • Test with real users. Have one non-technical person run it cold; watch where they hesitate. That surfaces interface problems no amount of internal testing catches.
  • Version and document. A short in-app instruction (a Text Box on the interface) explaining each field prevents most misuse.