AIRSPACE · INTERNAL PLATFORM

Scaling pricing to charge for diverse requirements

Airspace services and configurable charge builder interface

At Airspace, I led design efforts to scale our pricing system, enabling it to be adaptable and flexible to charge for unique customer and business requirements. This approach led to more accurate upfront quotes and invoicing for customers, which improved internal operational and financial efficiency.

Impact

In one instance of applying the new pricing system, the accuracy of charging for a specific service increased, resulting in a 23% overall reduction of unintended charges.

Core Team

3 Designers, 1 UX Strategist, 1 Design Manager, 3 Developers, 1 Product Manager

Role

End-to-end Product Designer

Duration

~4.5 months (spread throughout 2021 Q2 and 2022 Q1)

Note: Certain details are left out and images are intentionally blurry / cannot be viewed in higher resolution to adhere to an NDA. To learn more about this project, please contact me directly.

Overview


The Context

What is Airspace?

Airspace is a time-critical logistics company that specializes in shipping goods across various industries like aerospace and hospital/health systems.

For each order, customers are provided an instant quote based on parameters like the package information (such as its weight) or route information (such as the miles driven between pickup and drop-off). This quote is based on pre-agreed rates, which are configured on each customer's account by Airspace's customer success and/or finance members.

Initial Business Problem

While the initial request focused on supporting pricing for European expansion, preliminary research shifted our objective toward scalability

A fellow product designer and I had conducted the following activities to gain more context on what "European pricing" meant:

Audited our current pricing system (which was built for our U.S. pricing model) to understand how it could support the new model
Interviewed 5 stakeholders about the current process to support quoting (as we were already shipping with customers in Europe), the logic to support the different rates, and their overall vision of pricing
Worked with developers to understand the project scope with the new logic required
An audit comparing existing vs. expected rate logic revealed that over half of current rates could not support European customer pricing, as indicated in red.

We concluded that our system needed to handle more than just "European rates," as there were already plans to expand our business beyond Europe. While unclear what exactly that pricing model looked like, we reframed our project to look at the underlying problem of system scale for future business expansion.

Refined Business Problem

Airspace's global expansion and complex, unique shipping requirements increasingly exposed our pricing system's limitations

The volume of incoming requests to integrate new rate updates into upfront quotes exceeded R&D's capacity to implement them.

This created several ripple effects:

Financial and operational efficiency declined

Our operational and finance teams were creating workarounds to manually price customers for numerous charges that weren't supported by the existing rate sheets.
When an international customer required pricing upfront, this would be generated using a spreadsheet calculator and entered as a single “special rate.” This reduced customer transparency and hindered finance and analytics teams from accurately assessing margins on individual rates.
4 finance members spent over 10 hours each week looking through an exception report to find and manually adjust orders due to unique customer pricing agreements that the system couldn't automate.

Customers experienced reduced transparency and decreased trust

Instant quoting could no longer be a selling point for new customers if the initial quote was not accurate. When there were errors on our invoices that went unnoticed (due to resource strain from our own internal team not being able to address all of them) or they took too long to get addressed, that put us at risk of losing business with our customers.

These inefficiencies ultimately hindered our revenue growth and profit margin.

The Challenge

How might our pricing system accommodate an assortment of complex customer and business needs?

Vision Setting


Defining the Vision

The challenge of addressing new customer requirements extended across multiple departments

When Airspace introduced new services like global shipments, we would often build one-off solutions to address complex needs. However, this approach led to inefficiencies across the company, creating hurdles for internal teams and a disjointed experience for customers.

Summarized version of our research findings

As a result, the project then evolved even further to be part of an overarching product strategy to address broader organizational challenges affecting our internal teams, customers, and product.

Brainstorm

Design facilitated cross-functional brainstorm sessions to define six ideas to scale

One of the results from brainstorming around pricing features

We parsed these solutions down into six major concepts across the different areas of our business. These concepts were centered around the theme of scalability and self-service, as we wanted to create a new system that could empower our internal teams to quickly support new services, without R&D involvement.

For the bulk of this case study, I will focus on two of them:

Services icon

Services

  • Internal users could define "services," or units of work which were triggered by order form inputs or data (such as a "print docs" service to request drivers to print docs for an order)
  • Services could be tagged (i.e., an "order level service" or a "piece level service") to dictate how/when it could be used
  • When requested, services would have any applicable charges calculated in the order quote
Rate sheets icon

Customizable Rate Sheets/Charges

  • Internal Airspace users could create new charges for a service on a company's set of rates to determine how exactly to charge for it
  • When creating a new charge, users could define how to charge by configuring its "charge type" (such as "charge X dollars per package lb") and when to charge through "constraints" (such as "charge only if the package is over X lbs")

Paper Prototyping

My team used a low-cost approach to assess how participants interpreted the language and behavior of this new system to validate our solutions

Using paper cutouts to represent concepts, inputs, and actions, participants interacted with the system while we simulated its reactions, enforcing rules, providing context, and adding cutouts where appropriate.

Overall, users understood the general concepts; the only considerable change was renaming "constraints" to "conditions." Given the scale of work involved, the different concepts were to be distributed into different projects across various product teams.

Design Process


Scoping the Project

To deliver immediate value, we scoped the project to remove dependencies on the other concepts being built

From aligning with my product team, we determined that the various service and charge configurations would still require significant development. Additionally, other product teams that would develop the other features were not yet ready to start designing and developing.

Instead, we decided to model one service to use to build the new features. Over time, we could iterate and expand by adding in more configuration options and retrofitting existing rates, providing us with a clear, future roadmap.

Additional Research

The “Dangerous Goods” service was used as the first model, as there was more nuance to its pricing than the system currently could handle

Through support tickets, documentation, 3 interviews, and 2 shadowing sessions, I discovered that the finance team reactively zeroed out dangerous goods rates only after customer complaints. While the system charged solely based on a "Yes" banner response during order entry, the business also desired to determine whether or not to apply a charge based on the specific category of item (such as an aircraft part or tire) that was being shipped.

Since the logic to charge was straightforward to, widely applicable, and independent of other features, we used dangerous goods as the first case to launch the new pricing system.

Feature Prioritization

I worked with my team to cut scope on ideas from initial brainstorming, but tested as dead weight

For example, we concluded that the different "types" of service ultimately did not have any clear user and business value, so we scoped out developing several of those options.

User Flows

I mapped 6 user flows across multiple user groups, which led to a reassessment of the prioritized features

Upon assessing the flows with my team, the strategist, and design manager, we realized:

Some features were redundant, like separately adding services to company profiles and defining charges on rate sheets. To reduce cognitive load, I consolidated to add services within rate sheets.
It was unclear if some of the original prioritized features were actually desirable/addressing our overarching user goals, like understanding how much visibility and control our operations team might need into the services being used on a given order.

I then re-prioritized what features would be built, shelving the ambiguous ones as opportunities for future iterations.

Usability Testing

Two different concepts for customizable rates were tested across 7 users to determine a preferred solution

After narrowing down two concepts to test from four different variations (two were dropped due to technical constraints and usability concerns), I observed any user misclicks and discussed their preference to get a direction of which UI to implement.

The first variation utilized individual popovers for editing charge names and costs, while isolating condition configuration within a separate dialog.
The second variation utilized a dropdown section to display all the editable properties for charge, while isolating condition configuration within a separate dialog.

Testing results indicated a stronger preference for the second variation, as users indicated they preferred being able to access all the editable properties at once.

Refining Customizable Charges

Scalability also had to be factored into the UI, so the design went through another round of ideation

More display space was needed to accommodate conditions that could expand into long text statements.

From ideating solutions with the design team, I finalized a design that stored the form to create/edit charges in a side panel. This provided a clearer information architecture and would be more suited for scaling conditions.

Conclusion


Final Designs

What shipped: A services library and configurable charge builder

Services Library

Internal users could create services to define customer or business needs. Services could also be used in other system concepts:

Define how a service will be charged
Define what steps our ops team need to follow when a given service is requested
Tracking how well our business is servicing a given service

Customizable Rate Sheets/Charges

Our finance team could add services onto rate sheets. This segmented any unique services and its pricing to a given customer's rate sheet.

Charges could be configured for a service. How it is charged is defined by the charge type chosen, such as charging it as a flat rate, per piece weight, etc.

Conditions would encompass a variety of order data over time, so that the finance team could be exact in how to charge for a service. In addition, surfacing this logic in the UI would remove any confusion around the logic for a charge, which was a common user challenge I had found early on through interviewing users.

Results & Impact

Billing errors for dangerous goods were cut by 23% with zero manual financial intervention to adjust its charges

Post Release Challenges

Over time, the new pricing system was not adopted as expected due to a number of factors

Full feature deployment relied on interdependent components, several of which remained underdeveloped due to technical obstacles and/or changing organizational priorities. This ultimately constrained the application of services and customizable rate sheets.
As our team continued to iterate, it became evident that the flexibility with conditions was still complex for devs to implement and debug, which would lead to slower releases.

As a result, additional iterations from our team was deprioritized.

Reflection

Constant collaboration kept the work moving, but it couldn't guarantee the vision stayed connected across teams

While proactively raising risks and running alignment exercises created the impression of a shared vision across teams, the true challenge emerged during the actual build phase. As implementation progressed, new constraints and shifting priorities altered how we could execute that vision. In hindsight, rather than assuming early buy-in would hold through implementation, I would design the initial system to better accommodate a partial rollout from the start.

Next Steps

The spirit of scalability and flexibility was carried onto another project

The adoption gaps directly shaped a follow-up project to simplify the system. The complexity that slowed adoption here, particularly around conditions and interdependent rollout, were factored into a later initiative.