YAML Generator for Funnel YAML Files: Streamlining the Mobile Data Workflow Process
16 September 2021 / Global
At Uber, real-time mobile analytics events—generated by button taps, page views, and more—form the backbone of the mobile data workflow process.
To process these events, our Mobile Data Platform Team designed and developed the Fontana library, which converts the nearly-one-million-QPS (queries per second) volume of events into easily digestible and useful analytics for Uber engineers. As part of this process, funnel YAML files are key config files that are used to define sequences of events for analysis. To this end, our team has also designed and developed the SuperFlurry application, which aids in creating and managing these files.
However, SuperFlurry still required users to create and modify funnel YAML files by editing raw YAML files directly. This was a significant pain point for Uber engineers and PMs aiming to set up their own funnels, especially for those unfamiliar with the format or the specific structure of funnel YAML files, as subtle syntactical errors are easy to make and switching back and forth between file creation and documentation is time-consuming. To remedy this issue, we designed and developed YAML Generator, an application that provides a comprehensive set of options for creating a funnel YAML file alongside a clean and intuitive UI.
The newly developed YAML Generator application builds onto the SuperFlurry application, streamlining the creation of these funnel YAML files. Through the development of this application, the importance of simplifying user-side input and the importance of continuous feedback are highlighted.
Background
The Fontana Library
The Fontana library is a framework that allows for the processing of large numbers of mobile analytic events. These events are emitted from all Uber Apps in real time, and are converted through funnel YAML files into specific analytics, one of the most important being conversion rate (e.g., percentage of users that purchase a product). Using these analytics, engineers are able to make informed decisions that improve the flow of their applications.
Funnel YAML files
Funnel YAML files describe the specific steps that users take as part of a flow. For example, in order to obtain an Uber Pass, a user might be shown a page offering the pass (Landing Page), tap a button to get the pass (Get Pass), get sent to a purchase screen (Purchase Screen), tap a button to purchase the pass (Purchase), then be shown a screen indicating that the pass was successfully purchased (Purchase Success). Passing this sequence of events as a funnel YAML file into the Fontana library, an engineer could see the conversion rate throughout the entire flow.

In addition to simple sequences of steps like the one above, these funnel YAML files can potentially describe more complicated, nested step structures, which might include sequences of steps that are optional or repeated.
SuperFlurry
SuperFlurry is the one-stop shop for creating and managing funnel YAML files, allowing engineers to create new files, as well as update existing files in production. The application also includes several quality-of-life features, such as the ability to look up mobile analytics event names on demand, as well as linking to the funnels dashboard, which displays the various funnels that exist across teams. YAML Generator builds upon the SuperFlurry application to provide engineers an alternative to writing funnel YAML files in raw YAML.
Why YAML Generator?
Reduction of Complexity
YAML Generator provides engineers with a discrete and comprehensive set of options as they build their funnel YAML files. This contrasts with writing raw YAML files, where there is no set list of options.
Reduction of Human Error
YAML Generator guarantees that a semantically and functionally correct funnel YAML file will be generated. In addition, it features built-in validation that catches invalid inputs as they occur. This contrasts with raw YAML files, where it’s very easy to write an invalid funnel YAML file and mistakes may be difficult to catch.
Increase in Productivity
YAML Generator streamlines the process through an easy-to-understand UI and provides the user with all the options and info needed to create a funnel, reducing the need to flip back and forth between writing a funnel YAML file and looking at the guide on how to create one. In addition, features such as the clear separation and organization of steps reduce cognitive load for engineers, leading to greater efficiency.
With YAML Generator, engineers can spend less time writing funnel YAML files and more time analyzing the data.
YAML Generator Architecture
Frontend: Fusion.js/Apollo
We use Fusion.js, Uber’s open source, universal web framework, to create the application UI and Apollo to handle API calls through a GraphQL server. In addition, we use Base Web, Uber’s open source framework for React web components, to style the UI and provide consistency with other Uber applications.