top of page

Designing No-Code Policy Management for Citizen Developers

Reducing complexity and enabling cross-functional collaboration through intuitive UX, visual design, and user-led validation

IndyKite Cover.png

The problem

IndyKite’s services are powerful but complex, designed for expert developers. As the industry shifts toward citizen developers, we needed to bridge the gap between technical users and business stakeholders who want to engage with the platform.

 

Working closely with a Product Manager, we identified the core needs for an MVP of the authorization service. Through user testing, interviews, and ethnographic research, we validated our early hypotheses and refined the direction for policy management.

The solution

We designed a no-code policy builder with an interactive UI that lets users create and configure rules without writing code. By using visual graphs to represent policies, we helped users understand complex logic at a glance.

 

This approach lowered the learning curve and opened the service to a wider audience, including non-technical users involved in policy creation and management.

Research

To inform the design of a more inclusive policy-building experience, we set three primary research goals:

How to leverage no-code solutions to support less technical users?

How to help users manage complex authorization logic more effectively?

How to ensure a no-code approach can be as powerful as code-based solutions?

Screenshot 2024-02-20 at 12.42 2.png

Ethnographic research

Observing developers build policies revealed heavy reliance on pen-and-paper workflows and external references, signs of complexity and poor discoverability. 

Screenshot 2024-02-20 at 12.41 1.png

User testing and interviews

Iterative sessions with sales engineers and target users highlighted key challenges, such as difficulty writing conditions and onboarding delays due to learning Cypher.

​

Screenshot 2024-02-20 at 12.39 1.png

SWOT and competitor analysis

Helped benchmark functionality and identify gaps in usability across the market.

​

​

​

Key insights 

These findings shaped the foundation for a no-code, visual-first policy builder, a tool designed to reduce friction, improve clarity, and expand access to policy creation across a broader range of users.

Users found writing policy conditions the hardest part.

Many lacked confidence in navigating Cypher or technical syntax.

A strong need emerged for visual tools and guided input to reduce the learning curve.

Defining the problem

Users responsible for building authorization policies were blocked by the need to learn Cypher, a complex query language. This created friction, delayed onboarding, and excluded non-technical contributors from participating in policy creation.

 

We needed to design a no-code solution that simplified this process, while still supporting complex logic and relationships. Our goal was to lower the learning curve and make policy creation more inclusive and intuitive.

Screenshot 2025-07-23 at 19.37.10.png

User Persona

I created personas based on research findings to keep our focus on user pain points and motivations.

 

The persona helped align stakeholders and guided our design decisions throughout the project.

Screenshot 2024-02-20 at 12.26 3.png

Ideation & Exploration

Collaborated with PM to define product requirements.

​

Conducted a mood board audit of other rule builders and no-code tools.

​

Explored design conventions for visual logic and policy creation.

Screenshot 2024-02-20 at 12.25 2.png

Wireframing & Feedback

To validate our approach early, I facilitated a low-fidelity wireframe workshop with the broader product team.

​

Key Outcomes:

 

  • Exposed technical feasibility issues early

  • Strengthened team buy-in for a no-code direction

  • Revealed gaps in our shared understanding of policies

  • Increased overall project transparency

Ideation

With research insights in hand, I collaborated with the Product Manager to define initial task flows and product requirements. We focused on simplifying complex logic into manageable steps while maintaining flexibility for advanced use cases.

 

To explore potential UI patterns, I conducted a mood board analysis of rule builders and no-code platforms—drawing on familiar interaction models to reduce cognitive friction for new users.

Task Flows

I mapped out detailed task flows to understand how users would navigate from exploring existing policies to building new ones. These diagrams helped us:

 

  • Visualize system entry points and touchpoints

  • Plan for draft creation and iterative building

  • Identify where users might need extra support or guidance

Screenshot 2024-02-20 at 13.50 2.png

Low-Fidelity Wireframes

Using the task flows, I created a set of low-fidelity wireframes to shape the experience. Key design steps included:

​

 

  • Step 1: Policy Overview

    Users can name their policy, assign categories, and add a description—laying the foundation for easy organisation and future edits.

  • Step 2: Statement & Conditions

    This screen allows users to define the policy logic using a no-code interface with clearly grouped inputs. A visual graph helps illustrate how rules and data points connect.

  • Step 3: Policy Summary

    Before finalizing, users are presented with a summary view to validate their logic and avoid errors—improving clarity and confidence.

Frame 95486.png

Feedback & Iteration

I facilitated a wireframe review workshop with the agile team to collect cross-functional feedback early in the process. These sessions surfaced:

 

  • Technical feasibility concerns

  • Opportunities to clarify logic flows

  • Increased internal alignment and project transparency

  • Gaps in my own understanding of policy logic, which I later addressed in subsequent iterations

 

This feedback loop was instrumental in shaping a more usable, realistic MVP design.

Screenshot 2024-02-20 at 14.03 3.png

User Test

I ran moderated usability tests with 5 participants, including sales engineers and developers, to evaluate early wireframes.

Group 39.png

Goal One

Will user understand policy definition?

Goal Two

How will users experience creating a policy triple (Subject, Action, Resource)?

Goal Three

Can users easily add conditions?

Goal Four

How will users experience the saving flow?

Key Feedback

User feedback revealed a strong need for clarity, control, and confidence during policy creation.

​

Comments like “I wasn’t sure if my policy was complete” and “I’m missing the relationship I added” highlighted gaps in visibility and validation.

 

This directly influenced my decision to include a policy summary step, use progressive disclosure to reduce overwhelm, and ensure real-time visual feedback in the graph view. These insights helped me prioritize features that reduce cognitive load and reinforce user trust in the tool.

Sales Engineer

“This helps me a lot. Defining Subject, Action, Resource in a broken-down way makes sense.”

ML Engineer

“This is very useful compared to writing in Cypher.”

BE Engineer

“I’m missing the relationship I added, users expect relationships to be reflected in the graph.”

Product Manager

“I wasn’t sure if my policy was complete, I’d like a clear indicator when everything is set up correctly.”

Data Synthesis

After testing, I processed feedback into a matrix of issues, insights, and actionable design changes.

Interpreting Feedback

After low-fidelity testing with five participants, I synthesized usability issues into actionable insights. This process helped surface friction points in the policy builder experience—particularly around discoverability, flow, and cognitive overload.

 

The table captures recurring user challenges, such as:

 

  • Confusion between low-code and no-code modes

  • Difficulty understanding policy structure (e.g., tuples, condition placement)

  • Unclear visual hierarchy and overwhelming graph interactions

  • Lack of clear entry points and save feedback

Screenshot 2024-02-20 at 14.18 1.png

How Testing Influenced Design

The synthesis of usability feedback directly shaped the next iteration of the policy builder. To reduce confusion between low-code and no-code modes, I prioritised making the toggle more visible and clearly labeled.

 

Users’ struggles with understanding tuple logic and condition placement led me to decouple the policy graph from traditional form inputs, using panels and progressive disclosure to simplify the experience. Interactions within the graph itself were refined by improving node snapping, introducing responsive hover states with contextual “+” icons, and replacing ambiguous colour codes with recognisable icons. These changes were designed to reduce friction, clarify structure, and support a more intuitive no-code authoring experience.

Screenshot 2024-02-20 at 14.19 1.png

Identifying High Priority Design Improvements

laptop.png

Improvement One

Users expressed that they liked the use of graph technology to help them understand their policies.

But... using forms in combination with the graph was overwhelming. As a result I iterated on the page hierarchy, and used a panel solution to chunk the form into digestible sections that will only be triggered once the user interacts with the graph.

Improvement Two

Users wanted a ‘walk-me’ flow through the building process. This posed a challenge for space in the UI.

Instead of using a wizard approach, I experimented with using progressive disclosure.

Improvement Three

Users wanted to be able to drag and drop relationships.

Design Iteration

With insights from user testing and technical feedback, I moved into high-fidelity iterations, focusing on building a usable, scalable interface that balanced power with simplicity.

Screenshot 2024-02-20 at 13.54 1.png

Navigation & Entry Points

I redesigned the policy start screen to let users choose between no-code and code modes up front. This helped reduce uncertainty, especially for less technical users.

 

I also introduced draft-saving functionality from the very first step, enabling users to pause and resume complex policy builds.

​

Screenshot 2024-02-20 at 13.54 2.png

Graph Interactions & Chunking

To reduce cognitive overload, I implemented a panel-based UI. When users interact with a node in the graph, the corresponding configuration panel appears, isolating that logic in a digestible format.

 

This chunking approach emerged directly from testing, where users reported confusion with dense forms and overlapping logic inputs.

Screenshot 2024-02-20 at 13.57 2.png

Node-Level Editing

We added the ability to open nodes and apply filters, enabling precise control of policy conditions without relying on syntax.

 

This addressed a major pain point raised during usability testing, where users struggled to define relationships clearly without writing Cypher queries.

​

Screenshot 2024-02-20 at 13.55 1.png

Finalising & Switching Views

At the final stage of policy creation, users can review their logic, view the generated JSON/Cypher, and toggle between visual and code views.

 

This validation step not only builds user confidence but also supports hybrid users who may want to inspect or copy the raw code.

​

Screenshot 2024-02-20 at 13.57 1.png

Managing Policies

Lastly, the Policy Manager dashboard allows users to find, activate, and manage their newly created policies.

​

Each entry includes metadata, version history, and category tags to support long-term maintenance and collaboration.

Lessons Learnt

Working on this project gave me a deep and hands-on experience in tackling a complex, technical challenge, designing a no-code interface that could empower users with limited engineering experience to confidently build access policies.

Lesson One

One of the most valuable lessons came from collaborating with stakeholders across technical and non-technical roles. I learned how to balance business needs with user expectations, often acting as a bridge between product, sales engineers, and developers.

 

Through this, I became more confident in navigating difficult conversations, finding alignment, and advocating for solutions that supported both usability and scalability.

Lesson Two

Another major area of growth was the refinement of my prototyping and testing process. Creating high-fidelity prototypes that felt real enough for users to engage with allowed me to uncover unexpected usability issues early.

 

These prototypes helped me validate key interactions, especially in areas like graph navigation, rule configuration, and progressive disclosure-ultimately shaping a more accessible and intuitive product.

Lesson Three

This project also pushed me to think holistically about how interface design supports confidence, clarity, and comprehension, particularly in deeply technical domains.

 

I leave this experience with a stronger ability to turn abstract complexity into human-centered design, and a toolkit of collaborative, iterative methods that I’ll carry forward into future challenges.

bottom of page