Communicating a shared credit system
- Defined the terminology and mental model for a shared Workspace-level AI credit system
- Argued for and shipped a change to usage indicator logic to match the interaction model to how the system actually works
- Delivered consistent, role-aware messaging across four states: admin and non-admin users, at warning and at limit
Problem
Webflow’s AI features run on a credit system. Credits are a Workspace-level resource; that is, every user in a Workspace draws from a shared pool rather than a personal one. This behavior can create a mismatch between what users do and what they might see in the product. Users could hit a limit through no action of their own because any teammate’s usage counts against the same bucket of credits.
Admins can purchase additional credits for their Workspace, while non-admins have no way to add more credits on their own. My job was to explain all of this clearly and concisely without turning the limit into a confusing or alarming experience.
Key challenges
The language had to navigate multiple constraints. “AI credits” was fixed terminology I’d proposed replacing earlier in the project. Since AI credits are a Workspace-level resource, the language couldn’t imply personal fault or suggest the user did something to trigger the state. And, because admins could add credits while non-admins could only ask their admins to take action, the copy needed to fork for each experience while remaining consistent overall.
Goal
Define language for AI credit usage and depletion that’s accurate without being technically overwhelming, actionable without implying permissions users don’t have, and consistent enough to scale as the credit system evolves.
Process
Before writing any copy, I mapped my constraints, then developed three language directions and weighed the UI implications for each.
Arguing against “credits”
At the earliest stage of the project, I proposed dropping “credits” in favor of a different unit of usage. Competitors used the same term and I had evidence that customers found it confusing and opaque. Webflow also had a legacy term that competitors didn’t have to balance — “account credits” previously referred to discounts or billing corrections applied at the account level. I brought a full analysis to stakeholders, but that proposal didn’t move forward, so everything downstream had to account for “credits” as a fixed term.
Naming the state
- “Your Workspace is out of AI credits” — plain and accurate regardless of who hit the Workspace limit. The warning-to-exhaustion progression (“almost out” to “out of”) leads users naturally to the next step: add credits or wait for them to reset.
- “Your Workspace needs more AI credits” — friendlier but less accurate. It reads more as a suggestion than a boundary. As a user, I might ask: Needs more credits for what? Needs more credits when?
- “Your Workspace reached its monthly AI credit limit” — accurate, and contextualizes the limit as cyclical, but borrows a financial term that already carries meaning for users, adding complexity without clarity.
Rethinking the interaction model
The original usage indicator counted upward to the limit, following the pattern established for Webflow’s bandwidth usage. Since users can’t exceed their AI credit allowance the way they can exceed site bandwidth, counting up to a hard stop misrepresented how the system actually works. I argued for a depletion model instead, counting down from the limit to zero.
Results
I brought the full analysis to stakeholders, recommending the depletion model and the “Your Workspace is out of AI credits” framing. Both were approved as written. The final system covered four states — admin and non-admin, at warning and at limit — each with distinct available actions, but consistent framing throughout.
Reflections & learnings
Deciding what not to explain was harder than deciding what language to use. When money is involved, there’s pressure to surface every nuance so the product feels trustworthy. In this case, prioritizing transparency would have come at the cost of clarity and confidence.
I also learned when to break from precedent or opt “against” best practices. I typically prioritize consistency with established patterns, but the established pattern here misrepresented how the system works, so it was necessary to diverge in order to clarify the interaction model.