
Human-Centred Design
Software for the generative age: Designing for non-determinism
In our first article, Software for the generative age: From precision to probability, we explored how generative AI is moving software from deterministic systems to probabilistic ones. For the second piece in our series, our Director of Software Development Steve Ly interviews Jacqueline Antalik, our Director of UX and Service Design, about what this shift means for designers.
Jacqueline, let’s start with the basics. How do you begin to wrap your head around this concept of non-determinism in software?
I think the best way to understand it is through a theatre metaphor. Traditional, or deterministic design, is like directing a scripted play. You have complete control over the user journey. Every aspect of the play is designed and orchestrated. You create these predictable, task-based experiences where every actor follows predetermined pathways such as who speaks, when, where they stand, and what they wear. In most cases, every audience member gets an identical experience.
It’s like designing an improv show. You can’t predict what the actors will say or do, but you can create a stage that supports any performance while maintaining coherence.
Non-deterministic design is more like directing an improv show. You can’t predict what the actors will say or do, but you can establish the setting and some ground rules. The actors have room to improvise, and the performance can unfold differently each time, even though you’re still guiding its general direction.
The same idea applies to software. A non-deterministic system can produce different outputs from the same input. That means designing for responses that may vary depending on the interaction, while still helping users accomplish what they came to do.

That’s a dramatic shift from traditional design. What does that mean for designers who built their careers on predictability and control?
It’s a very big change. For those of us who’ve been producing detailed user flows, design specifications, and wireframes for years, this transition demands a shift in mindset. The control that we once wielded is shifting, and that can be uncomfortable at first.
What I’ve found is that we're moving from what I call “process to intent.” We've always considered what users are trying to accomplish, but with generative AI, there's less emphasis on defining every step they’ll take to get there.
Instead of obsessing over every screen transition and the exact placement of static elements, we’re stepping back to ask much bigger questions: What does the user actually need to accomplish? What outcomes are they seeking?
We’re building frameworks that can handle the unexpected, not scripts that break the moment users go off-path.
The craft isn’t disappearing, though. We’re still designing interactions, but we also need to consider how a system responds when someone does something we haven’t anticipated. That means thinking beyond individual screens and planning for a wider range of possible interactions.
So, how do you actually design around components that are inherently unpredictable?
That’s one of the harder questions when designing AI systems. I would still start with user intent and context, rather than the technology itself. Before asking what AI can do, we need to understand what the user is trying to achieve.
Instead of mapping rigid user flows, we’re now designing “intent paths” that accommodate the many ways a user might express the same underlying need.
The tax deadline example from our previous article is perfect here. The intent is simple: figure out when to file taxes. Whether the system says “The deadline is April 30,” or “You have until April 30 to file your return,” or “Tax returns are due by April 30, but you can request an extension,” it still fulfills that intent.
Traditionally, I would have crafted one perfect answer for developers to implement. But generative systems can provide multiple correct answers. A consistent experience doesn’t require identical outputs. It requires consistent intent fulfillment.
So, we don’t control the output specifically. How do we ensure that those outputs stay within the user’s intent?
That’s a great question and it’s where the design complexity for these systems lies. We focus on three key areas: guiding system behaviour, containing risk, and creating adaptive systems.
To guide behaviour, we can use constraints such as prompt engineering rules, input validation, and output filtering. These help us define what the system should and shouldn’t produce.
We also need to plan for situations where the system can’t provide a reliable answer. That could mean escalating a question to human support, or using content moderation to prevent inappropriate responses.
For adaptive behaviour, we look at how the system uses context, including a user’s question and previous interactions. That might influence which path someone takes through the service or how the system responds. Feedback from users can then help us identify where those responses need improvement.
The key is building systems that can improvise successfully within boundaries we’ve thoughtfully designed.
You’ve mentioned that different outputs can all be correct for these systems. When does that variability actually become an advantage for users?
I think AI really shines in two key areas: personalization and creative exploration.
For personalization, these systems can adapt to individual preferences in ways deterministic systems simply cannot. Dynamic recommendations can vary based on past behaviour and context, keeping engagement high. Conversational style can shift from more formal for business contexts to casual for creative projects. This transforms AI from a static tool into a responsive partner that tailors to the user rather than deliver mass-produced interactions.
For creative exploration, variability becomes a feature. For content creation, instead of struggling with a blank page, AI offers varied approaches users can refine and iterate on quickly. Brainstorming becomes instant. Need workshop ideas for 10 people in 90 minutes? Get 10 options instantly. Don’t like them? Refine the constraints and get five more.
The key advantage is rapid iteration and exploration of possibilities. Though I should add that while AI excels at generating diverse options, it shouldn’t replace human collaboration entirely. The best results still come from combining AI’s generative power with human insight and lived experience.
Are there any principles or guidelines that you can recommend for designing these non-deterministic systems?
You know, when project teams come to me with “we want to use AI for X,” I always call for a strategic pause. As designers and strategists, we have to guide conversations away from technology-first thinking toward problem-first solutions.
The first thing I ask is: “what’s the actual problem?” Before diving into any AI implementation, step back and define what processes genuinely need improvement. I see teams fall into the “let’s digitize it” trap all the time without considering how to actually improve the underlying process.
AI for AI’s sake rarely delivers meaningful value and honestly, it can inflict unnecessary learning curves on users who didn’t ask for them.
Then I apply what I call the “right tool test.” Not every problem needs a non-deterministic solution. Many processes still require consistent, repeatable outcomes. If you submit the same permit application twice, you should get identical results. That’s a deterministic process where AI’s variability becomes a liability, not an asset.
I look at whether there’s a real need, what the risks are if the system gets something wrong, and how accurate it needs to be. Sometimes a response that’s useful but imperfect is enough. In other situations, even a small mistake could have serious consequences. That distinction matters when deciding where to introduce AI.

The other key element is designing for user trust and involvement from day one. Users need to understand when they’re interacting with AI, why outputs might vary, and how decisions are made. You have to build in mechanisms for users to challenge or refine responses. And those same users should be involved in vetting, testing, and ongoing evaluation. This is about maintaining trust in systems that behave unpredictably by design.
Whatever technology we’re using, we still need to understand the people we’re designing for.
That’s helpful guidance for when to use it. But let’s flip that around—where should we not introduce non-determinism?
With the current state of generative AI, there are definitely scenarios where introducing this variability creates more problems than it solves.
When consistency is non-negotiable, you need to be careful about introducing AI variability.
When consistency is non-negotiable, you need to be careful about introducing AI variability. Think about financial transactions, legal documents, or permit approvals. The rules and requirements need to be applied consistently. I might use AI to explore retirement planning scenarios, but I wouldn’t want it deciding how much money to transfer between my accounts. The consequences of getting something wrong are very different.
High-impact decisions affecting safety, finances, or well-being aren’t good candidates either. Areas subject to bias like hiring, lending, and law enforcement require careful human oversight, and variable AI outputs just complicate that.
Mental health applications are particularly complex. While barriers to support are real, AI tools show promise mainly for mild to moderate symptoms. For more severe cases, the unpredictability becomes genuinely dangerous.
Trust is another consideration. Think about someone going through a divorce who needs to find the correct forms. They want to know they’re getting accurate information. A conversational interface might help them find what they need, but the answer can’t depend on how creatively the system interprets their question.
I hear that feedback is a critical part of AI design. How central is that to making these systems work and how do you design for it?
I would agree with that. Feedback isn’t optional in non-deterministic design. It’s absolutely the foundation that makes these systems viable. Unlike traditional interfaces where you can predict user behaviour, AI-powered systems require continuous learning and adjustment.

You need feedback at every level. Usage analytics track acceptance rates, abandonment patterns, feature utilization. In-app feedback captures immediate reactions with prompts like “This response was helpful/unhelpful.” And qualitative research reveals the “why” behind user behaviours.
Traditional UX research methods really struggle here because these systems introduce what Jakob Nielsen calls “a new independent variable outside our control.” So, we shift from measuring whether users can complete “task X” to understanding interaction patterns.
We need to think about feedback when designing the interface, rather than adding it later. Users should have ways to tell us when a response is inaccurate, irrelevant, or difficult to understand. That might be a simple thumbs up or down, or an opportunity to provide more detailed feedback.
We won’t get everything right from the beginning. What matters is that we’re paying attention to where people struggle and using what we learn to improve the experience. Feedback has always been part of user research, but with these systems, it also needs to be part of how we maintain and improve the product.
Looking ahead, where do you see the biggest opportunities for designers working with non-determinism?
I’m particularly excited about personalized learning. As a parent of a child with ADHD and dyslexia, I’ve seen firsthand how our public education system faces resource constraints. Getting adequate support meant hiring tutors and seeking specialized resources.
Adaptive learning platforms have the potential to tailor experiences to individual students, taking into account more than their grade level. Every student with dyslexia experiences different challenges. Some struggle with letter recognition, while others may need more time to process information or have difficulties with working memory.
AI that adapts in real-time can adjust reading complexity, switch from text to audio when a student feels fatigued, and break down complex concepts into smaller chunks. The human educator remains crucial. This isn’t about replacing humans with AI, but expanding options available to students.
When we get it right, we’re not just building better software. We’re creating systems that can genuinely adapt to human needs in ways we never could before.
This kind of adaptive, personalized experience is really what excites me most about non-deterministic design. When we get it right, we’re not just building better software. We’re creating systems that can genuinely adapt to human needs in ways we never could before.
That’s really a wonderful example of the potential of this technology. Any final thoughts or advice to your fellow design practitioners on this shift to non-determinism?
You know, as designers, we have to understand AI’s capabilities and limitations, but we’re not navigating it alone. This transformation goes way beyond our professional roles. Our friends, family, and society at large are all experimenting with AI tools in their daily lives.
Technology is evolving so quickly, and honestly, even experts are learning along the way. I think one of the things designers will have to get better at is recognizing when variability is useful and when people need something more predictable. We also need to make sure people understand what these systems are doing and have some control over their experience. There’s still a lot for us to figure out.
If you haven't read the first article in our series, start here: Software for the generative age: From precision to probability. If you have, continue on with part three: Software for the generative age: Building around non-deterministic systems.