Two teams, no designer, and competing visions for the same Slack app
The AI team wanted conversational task completion — employees could chat naturally to resolve expenses. The Task Management team wanted a notification-driven dashboard that eliminated the need to log into Brex at all. Both had prototyped overlapping experiences with no reconciliation plan, and we had three weeks to ship for major enterprise launches.
The problem wasn't choosing between their visions. It was figuring out that both were right, and that the real brief was finding how they fit together.
Filling in the brief
I started by mapping every piece of required functionality across both prototypes to understand the full surface. What emerged was that the two visions were addressing different moments in the same workflow. I just needed to consolidate.
To move faster and get both teams aligned, I formed four design principles that would guide every decision:
Native Slack
Users should be able to complete tasks however they naturally used Slack (e.g. responding to notifications, or chatting with an agent). No single entry point.
Stay on task(s)
I pushed back on incorporating more of Brex's features into the app. Keeping scope focused on tasks emphasized quick resolution for policy compliance.
Content before UI
I created copy templates so it was clear when messages required action. This matched the language in Brex. Without our components, copy was doing the branding.
Infuse AI
The AI team had been working in a silo. Rather than keep it separate, we wove smaller touches into every workflow. Suggested expense memos were the first example.
The principles made the three-week timeline feel more achievable. With a clear frame for every decision, I could move quickly in Figma and stress-test each workflow against its Brex equivalent — and by the time Slack shipped, MS Teams workflows were also designed and ready.
Building in Slack, not around it
Slack's component constraints turned out to be an asset. With limited UI options, there was no temptation to recreate Brex inside Slack, and the platform forced a conversation-native approach from the start.
Rather than designing in Figma and handing off, I worked directly with engineers in Slack's block builder to prototype in real time. This changed the dynamic entirely. We could see immediately what worked inside an actual Slack interface, what the components could and couldn't do, and where we needed to make tradeoffs. It was faster than traditional design iterations and kept the team aligned on what was actually buildable — critical when every day of the three weeks counted.
The constraints also pushed better decisions. When the block builder couldn't support something we'd planned, we had to find a Slack-native solution rather than forcing a Brex pattern somewhere it didn't belong. Most of the time, the Slack-native solution was better.
Three workflows, no redundancy
The shipped experience gave users three complementary paths to complete tasks, each designed around a different way people naturally used Slack:
1
Direct messages
Notifications from Brex arrived with immediate action buttons. Users could add a memo or receipt directly in a modal.
AI was integrated to suggest memos to speed up the process even further.
2
App home tab
A dashboard showing all outstanding tasks, mirroring the Brex Tasks IA. By keeping the scope focused on tasks rather than expanding into a broader Brex dashboard, the tab stayed fast and purposeful — making it more likely something employees would actually engage with.
3
AI assistant
Users could chat with the Brex app to manage expenses and ask questions. Letting users naturally type in Slack was the clearest way to eliminate any education on expense management.
The three-week timeline delivered. Customers like DoorDash, Roblox, and SeatGeek — whose employees already lived in Slack — could adopt without friction. The app felt native because we'd let Slack be Slack.
Incremental releases and incremental learning
6 months after shipping...
Enterprise deals unlocked
for customers like DoorDash, Roblox, and SeatGeek
Positive NPS responses cited the Slack integration directly — "makes it very easy to add receipts" and "the dashboard actions on the website work great". Adding expense documentation and viewing expense details became the two most common actions across both messaging and home tab.
Constraints unlock clarity
Slack's limited components forced a conversation-native approach that a blank canvas never would have. The temptation with integrations is always to recreate the full product experience, but the better instinct is to ask what the platform does well and design toward that instead.
The bigger lesson was about compounding work. Recognizing that the Tasks IA I'd just shipped could be directly applied to the home tab changed the timeline from impossible to achievable. Consistency across surfaces isn't just a design principle, it's a practical accelerant. The best design decision on this project was recognising what I'd already solved.