Hello Invert!

Here are a few things I would like to share with you.

My Design Principles

Design for behavior

Great design shouldn't feel designed—it should feel inevitable. I simplify complexity by deeply understanding user needs, ensuring interactions happen naturally, instinctively, and without conscious thought. Every element should feel like it belongs, eliminating friction and allowing users to focus on their goals rather than the interface itself. Achieving this requires attention to context and user behavior and removing unnecessary steps, ensuring that the best path forward is always the most obvious.

Design with rigor

Strong design decisions don't happen by chance—they are the result of structured thinking and disciplined execution. My approach is methodical and driven by clearly defined, measurable outcomes. I rely on data, user research, and iterative refinement to make informed decisions, ensuring that every design choice is intentional and defensible. Transparency is key—clear documentation and collaboration keep alignment strong across teams. Consistency in execution builds trust, while continuous testing and validation ensure that designs deliver real, tangible benefits for users and businesses. Good design is about aesthetics and solving the right problems effectively and efficiently.

Design for everyone

The best designs don't just serve users—they elevate them. Design should enhance capability, enabling users to accomplish more with less effort, regardless of their knowledge, skill level, or experience. Thoughtful design choices remove barriers, streamline workflows, and provide the right level of guidance at the right time. Accessibility is a key part of this—ensuring that solutions work for all users, regardless of ability. By understanding user behaviors, motivations, and constraints, I create experiences that extend their capabilities—whether through automation, intuitive workflows, or reducing unnecessary complexity. The best designs don't just meet user needs; they unlock new potential for everyone.

Design with a purpose

Progress isn't about making big leaps—it's about taking the right steps in the right direction. I combine strategic vision with incremental improvements. Each step forward is intentional and meaningful and contributes directly to the ultimate user experience. A strong vision provides direction, ensuring even the smallest improvements build toward a cohesive, long-term goal. Iteration allows adaptability, learning from real-world usage, and feedback to refine and evolve designs over time. Rather than chasing perfection, I focus on continuous progress, delivering value at every stage while keeping the bigger picture in mind.

A framework on measuring the user experience:

A handpicked case-study just for you:

You Are What You Measure: From Generic UX Metrics to Metrics That Move the Needle.

A research-driven framework for understanding and quantifying developer productivity, satisfaction, and system usability—based on industry best practices and real-world insights.

Case Study

Unifying Automation at GitLab:
A Decentralized Rule Engine

Case Study Summary
Role Team Result
Lead Designer 1 Staff Engineer 15% more automations created in alpha vs legacy

28% fewer failed automations

Situation

At GitLab, automation was quietly fractured. Over time, more than 23 entry points and 16 different functions had evolved to include some form of conditional logic—triggering actions based on user-defined inputs—but they had been built in silos by independent product teams. There was no shared framework, no consistent UX, and no unified vision. Debugging was painful. Visibility was limited. Race conditions were common.

One day, I caught wind of an engineer exploring a new automation feature in isolation. I immediately recalled prior research—AppSec JTBDs, contextual inquiries, and journey mapping—that made it clear this was a recurring, systemic pain point. There was no PM, no roadmap, no plan, but I knew this was the opportunity to address it. I reached out, and we teamed up.

Task

Seize an early opportunity to solve a long-standing, cross-cutting problem:

Unify automation into a scalable, coherent system that could be adopted across the product—without a PM, formal team, or initial roadmap.

Action

I began by conducting a product-wide audit, identifying all the fragmented touchpoints where automation already lived. Each of them had evolved to solve a narrow use case, but together they painted a picture of hidden complexity and user burden.

From that insight came a core design principle:

Instead of centralizing ownership, we’d decentralize it—giving each product team the ability to manage their own logic using a shared framework of components, templates, and logic handling.

We designed a flexible system grounded in cascading inheritance—write-down, read-up—allowing group-level logic to flow down to projects while supporting overrides and respecting permissions. This inverted GitLab’s legacy model, which often started at the project level and added complexity as it scaled up.

To avoid overwhelming users, I introduced a library of customizable prebuilt automation templates. This drastically reduced friction and avoided the “paradox of choice” often seen in power-user features.

Since no formal team existed, I partnered with a Staff Engineer and later brought in a PM from a related group, who acted as a liaison while still supporting their area. Together, we planned the project across three strategic phases:

  • Minimal (alpha): Project planning automation

  • Internal and Private beta: Source control and code review automation

  • Viable (public beta): Security, compliance, and operational automation.

Testing

To validate the system, I ran structured A/B and B/A usability testing with 12 participants aligned to four primary personas. Each participant completed two tasks using both the legacy and new experience. We observed their flows, captured success rates, time on task, reliance on documentation, and gathered qualitative feedback. Based on the results, we refined the interface and clarified how users received feedback during automation creation.

Refinement

To validate the system, I ran structured A/B and B/A usability testing with 12 participants aligned to four primary personas. Each participant completed two tasks using both the legacy and new experience. We observed their flows, captured success rates, time on task, reliance on documentation, and gathered qualitative feedback. Based on the results, we refined the interface and clarified how users received feedback during automation creation.

Result

With early data and a shared vision in hand, we aligned with the VP of Product and three senior PMs overseeing six disparate teams. Despite initial skepticism from some teams—concerned that their users wouldn’t be able to manage the logic—we demonstrated that our system not only worked but dramatically outperformed the status quo.

Within three months, we shipped an internal and closed beta. After 30 days, we saw:

  • 15% increase in usage

  • 37% increase in automation run rate

  • 28% reduction in errors compared to legacy automation

Despite our success, GitLab underwent company-wide layoffs in 2021. The Special Engineering Group was disbanded, and without a formal team to carry the work forward, the project—still in closed beta—was eventually deprecated. But the problem remained solved in principle, and the foundation we laid proved that scalable, decentralized automation at GitLab was not only possible—but necessary.

Thanks for stopping by

After watching your platform walkthrough, I picked this case study because it reminded me of problems I’ve worked through before—ones that require systems thinking, coordination, and a lot of care to get right.

I put this together to give you a real sense of how I work, not just what I work on. I hope it resonates!