
Feature Versioning
Designing for Capital One’s Machine Learning Feature Platform
What’s a machine learning (ML) feature?
A feature is a computation based on a data set.
The current user experience wasn’t designed for the feature producer or consumer user base, and didn’t have their needs accounted for
Project Profile
Position: Design Team Lead
Design team size: 5
Users: Data scientists, engineers, and product managers in the machine learning group
Value: Over $1B in potential revenue generation
KPI: Number of features reused
Stakeholders: SVPs in Product and Tech
Time: 3 months
Teamwork Processes
Research revealed another crucial persona
Design used journey maps like this to visualize the users’ complex processes to our partners
I directed my team to pivot to a systems thinking approach to the two personas
How do the actions of a producer affect the consumer, and vice-versa?
Feature producers
Need to create and maintain multiple versions of a feature
Are limited in how many versions they can maintain at once
Encouraged to deprecate (eliminate) versions to save compute power and space
No means of communicating with feature consumers
Feature consumers
Base business operations on a re-used feature version
Need to understand when and how a feature is changed
Must adopt features before deprecation to avoid business disruption
Receive no notice that features are changing
To avoid these problems, feature consumers actively avoided feature reuse, the KPI of the business.
Instead, they wasted time creating their own features even when the one they wanted already existed.
How might we allow for feature versioning from producers while addressing the needs of feature consumers?
We designed for automation, standardization, and better communication
Better Communication
Create pathways for producer-consumer communication.
Advise the producer while working with features.
Automation+Standardization
Feature consumers get notifications that help them monitor features and take action.
Standardize feature metadata.
How I set my teams up for success
Results
The monthly sharing KPI increased 11% in the first month, and continued to increase between 9-32% in the next three months.
The change log was the most requested feature, allowing for greater feature reuse because consumers could now understand what new versions had to offer.
The feature details page was revised to display information aligned with users’ needs.
A guided Feature Registration experience made it easier for Producers and provided standardized information for Consumers.
Feature Metadata was made available at the request of the Consumers, who use the information to select what features they want to consume.
The deprecation confirmation popup warned producers before execution, preventing accidental deletions and unintended consequences for consumers.
If the system detected that a shared feature was in use, a deprecation warning was sent to producers to prevent any disruption caused by deprecation.
A deprecation notice was sent to feature consumers automatically
Once the feature was deprecated, it was reflected on the feature lifecycle page.
Results
The change log gave consumers precise descriptions of each feature version, allowing them to understand if a feature no longer fit their needs, or seeing if it did, encouraging their reuse.
A new feature details page allowed consumers to browse for features so they could avoid building their own.
A new user flow for producers changing the state of their feature walked them through the process, providing guardrails via modals and sending automated messages to consumers when changes were made.
The change log was the most requested feature, allowing for greater feature reuse.
Feature Registration
The deprecation confirmation popup warned producers before execution.
A deprecation notice was sent to feature consumers automatically
The feature details page was revised to display information aligned with users’ needs.
Feature Metadata
The deprecation warning was sent to producers to minimize disruption caused by deprecation.
Once the feature was deprecated, it was reflected on the feature lifecycle page.