🔒

This case study is protected by NDA

Enter the password to access

👁️
Incorrect password. Please try again.
PROJECT

Providing accurate cost tracking and Fin-ops through key value tags

ORGANIZATION

HashiCorp

WHEN

Q2 2024

ROLE

Lead Product Designer, Researcher

TOOLS

Figma, Snowflake, CommandAI

SOLUTION PREVIEW
PROBLEM

The current implementation of workspace tags within HCP Terraform doesn’t match the mental model of our large customers.

Terraform Cloud supports “Tags” both in the product and as an object in the Terraform configuration's cloud block. Tags were introduced to help users organize, correlate, and filter Workspaces, the core resource in Terraform Cloud. But single-value tags only go so far. They work for basic filtering, which app developers appreciate, but they don't meet the needs of platform engineers managing infrastructure at scale.

Phase one

Phase two

Phase three

Phase four

User has defined multiple resources and needs a way to organize it

User finds workspace tags, but cannot tag projects

User creates workspace tags for every project, and reuses them in every workspace within project

User has to recreate multiple tags of the same type to be able to filter effectively

  • Users can use internal tools to be able to correlate metadata to their terraform resources
  • Often this is kept in CSV's
  • Users can't tag projects
  • Can tag workspaces, but tags are not as robust, and often overwhelming when considering long lists
  • Here a user will start using a key value notation eg. "Env : Prod"
  • Users will add the tag to every resource in a project
  • Since there are no key value tags in the product, users will resort to creating multiple tags with the same prefix to filter, which is prone to user error.

"We are power users of Terraform Cloud and have thousands of resources on the platform"

"I need to be able to organize my resources using metadata labels, or tags at a project level"

"Some of the tags that I use don't match the standard that we use at a cloud provider level, and I don't want them fundamentally changeable"

"I need a certain set of tags on each new workspace thats created."

CURRENT BEHAVIOR

Current usage of workspace tags suggest desire for key value schema and inheritance down the resource hierarchy.

Tags generally fall into two categories: user-defined (added by app developers) and administrative (added by platform engineers). Administrative tags often use key-value pairs to organize resources more effectively. However, Terraform Cloud didn’t natively support key-value tagging, leading users to hack around it by embedding delimiters like ":" or "=" in single-value tags. In fact, 36% of all tags contained such delimiters, highlighting the clear need for proper support.

Commonly used tags

autoapply : on contact : billy hasDeprecatedModule localexecution env : prod new tfversion1.8

Arbitrary tags (often single value)

costcenter : rnd env : prod BillingID : 128413 service : CloudFeed Owner : ishaan project : tf-new-compute

Administrative tags (often k/v)

All tags
36% Key value tags
RESEARCH

Our user research was lean and effective in identifying a problem statement to work with.

We knew there was demand and that users were hacking around the current implementation. What we didn’t know was how they set up tags inside their organizations.

My PM and I talked to 4 customers who’d asked for this, focused on the platform engineer persona the current model served least.

PROBLEM STATEMENT

Tags as a concept is ineffective in allowing customers to perform more administrative tasks, such as managing billing, audit, and RBAC. The current implementation is too permissive, meaning anyone can add or remove tags, and a tag itself cannot be added at a project level. This causes the customer to have to more manual busy work on their end to maintain a system of record of internal metadata to keep up.

GOAL SETTING

Our long term goal was to increase confidence in resource consumption.

With administrative tags, customers should in theory be able to consume their contract entitlements with greater confidence.

20%

Feature adoption

General goal

Contract consumption

Long-term goal

75%

Workspace tag usage

Migration indicator

CHALLENGES AND SOLUTIONS

Tag Binding

Challenge: We need to provide the affordance of both predefined tags, and arbitrary tagging.

Decision: Use fields with smart suggestions, as testing showed that power-select component biased users towards pre-existing tags.

Tag inheritance & resource hierarchy

Challenge: We do not want to overtly bias users towards overriding tags, but also do not want to not present the affordance of overridability.

Decision: Visually separate inherited tags, but shorten view through grid of tags, as there tends to be many inherited tag per project, and often non-overridable.

Tag filtering and organization

Challenge: We did not store the key and value of all tags in a user's organization, which made traditional tag filtering patterns unusable (dropdowns).

Decision: The metaphor that matched the most was akin to a query, so the design reflected that. A user would search for a tag and then a list of resources that match that tag would return.

Mental model issues with naming

Challenge: We could not fully deprecate old workspace tags without breaking compatibility guarantees, but having two "tags" with different names felt like we were offloading the complexity of our internal implementation to the user.

Decision: Soft deprecate tag type by removing action through UI, ensuring higher adoption of new tag type.

Prototype

The complete end to end journey from tag creation to binding.

IMPACT

Large customers have indicated increased confidence in RUM usage.

Additionally, design patterns have been adopted by other HashiCorp platform design team, and used in 4 new products.

General goal
22%

Feature adoption

Long-term goal
450+

Customers onboarded

Migration indicator
87%

Old workspace tags

CONCLUSION

Perceived "utility features" have large scale implications on how customers structure their organizations, and are absolutely necessary to creating enterprise ready solutions.

Adding tags sounds straightforward, but it became a months-long effort. Tagging had to work across every HashiCorp Cloud product, not just Terraform, which meant complex cross-team alignment. That delayed timelines and cut scope, but produced a stronger solution. The biggest skill I built was navigating the tensions of an EPD structure. The project was at risk, and cutting corners was tempting, but I learned to choose my battles and balance advocacy for the experience against pragmatic delivery.