AIAI EngineerJul 7, 2026· 25:53

Build AI Systems for Discernment, Not Approval - Angel Ortmann Lee, Duolingo

Angel Ortmann Lee, a Software Engineer at the Duolingo English Test, argues that human-in-the-loop AI systems often fail because humans cognitively surrender—adopting AI output with minimal scrutiny, as seen in a Wharton study where 80% accepted wrong AI answers. At Duolingo, an experiment with fake AI cheating alerts showed skilled proctors flagged legitimate sessions 50% of the time due to automation bias. A simple guideline change emphasizing independent evidence boosted accurate rejections by 21%, proving the fix lies in engineering the interaction, not better models or oversight. Lee outlines design principles: engineer reasoning patterns (e.g., frame humans as investigators), match friction to stakes (add review gates for high-stakes decisions), treat every interaction as a label (capture diffs when humans override AI), and proactively define success metrics to structure interactions that yield high-quality data. The flywheel of intentional design yields a virtuous cycle of better data, models, and human judgment.

  1. 0:00Intro
  2. 2:04Cognitive Surrender
  3. 3:32DET Overview
  4. 5:21Experiment
  5. 7:39Solution
  6. 8:52The Flywheel
  7. 11:57Headphone Example
  8. 13:23Writing Tutor
  9. 15:36Coding Agent
  10. 18:51Design Principles
  11. 25:15Closing

Powered by PodHood

Transcript

Intro0:00

Angel Ortmann Lee0:01

Hello, my name is Angel Ortmann Lee, and I'm a Software Engineer at Duolingo. I work on security for the Duolingo English Test. Today's talk is "The human-in-your-loop isn't thinking: build AI systems for discernment, not approval." So let's get started with some background.

What is human-in-the-loop AI? Human-in-the-loop AI is a framework where a system or process is actively involving a human who is participating in the operation, supervision, or decision-making for an automated system. Humans are involved because they're able to ensure the accuracy, safety, or ethical decision-making for that system.

They are a piece of that decision-making where AI normally falls short. You can kind of think of this as a linear process where a model provides some sort of output, and a human sees that and makes the decision.

Now, in the age of AI, trust is a big part of the conversation. Recently, as technology has developed, a lot of things that used to be manual cognitive tasks are now part of technology. So no one really memorizes phone numbers anymore; they're just sitting in our contacts list on our smartphones.

When you're driving over somewhere, you just put the directions into your GPS and you don't really think about the details of that route. Instead, you just trust the GPS to come up with the optimal way for you. When you're searching something in a search engine, you used to look at the top results, and now, as AI is becoming more increasingly integrated into our day-to-day life, you might be seeing some AI summaries at the top instead.

Here's an example of googling COVID-19 symptoms, and you see that Gemini summary at the top. And instead of looking at the CDC website or the WHO website, you might actually look to that as your final answer to the question that you were asking to the search engine.

And as these pieces of AI are becoming more integrated into your day-to-day life, in these atomic little things like searching for an answer or getting a result from an app, your trust of AI systems will increase and caution will decrease.

And this is something that's happening across all of society. A study at Wharton was looking at exactly that: how is AI reshaping human reasoning, and what does it mean for us as we continue to use it day to day?

Cognitive Surrender2:04

Angel Ortmann Lee2:17

They've observed an interesting phenomenon called cognitive surrender: when a human forgoes deliberation and adopts AI output as their own with minimal scrutiny. They saw this in a study where humans were asked to look at reasoning exams, and they were given AI resources to answer those questions.

They realized that AI can either supplement or supplant a human's thinking, and the human might not even know it's happening. For example, for questions where the AI wasright, the human performance increased by 25 percentage points, whereas when the AI was wrong, it decreased by 15.

This suggests that the humans were taking in that AI cognition and not really thinking critically about what that answer is, and instead using those answers as part of their own reasoning, together with their human instinct and deliberate reasoning, amplifying those results.

Most interestingly, they saw that 80% of participants were accepting those AI answers even when it was wrong. So they were lowering that barrier to entry and just trusting the AI, even if they weren't really critically examining the correctness of that result.

So at the Duolingo English Test, we wanted to look at the same thing, and we published some research titled "When Machines Mislead." It was a case study on the English exam, specifically in AI-human interaction. So, for context, what is the DET?

DET Overview3:32

Angel Ortmann Lee3:48

The DET is a high-stakes exam that measures your English proficiency, and it's fully online and remotely proctored. You can take it on your own machine in the comfort of your home, and it still provides high-quality results that 6,000 programs worldwide are trusting day to day.

As you can imagine, with a fully online assessment, there are some interesting things that, from a technological standpoint, have to happen to ensure good quality security. This includes identity verification, a locked-down testing environment, as well as a variety of ways in which AI-assisted monitoring is happening to predict different types of cheating.

Lastly, we have a final round of scrutiny where we have human proctors review all of the video footage of the exam, as well as all of those AI results. Specifically for the study, we wanted to target one of our AI cheating detection systems, which is copy-typing.

Copy-typing is a form of cheating where you're writing down information that you're reading currently and it's supposed to something that you're thinkingright now, at this moment. So, as you can imagine, your typing patterns differ when you're transcribing versus composing.

And this is something that our custom model is measuring. It's looking at anomalies in keystroke patterns, and it's flagging them for sessions that are unusual. So our model is highly conservative, and so we're prioritizing fairness for our test takers.

So this is not a very common flag. However, when humans are human proctors are taking a look at these, they're well-trained to properly examine those segments and see if this is a flag. So, for our experiment, we wanted to answer the question: would a skilled reviewer catch a false alarm, or would they just rubber-stamp it?

Experiment5:21

Angel Ortmann Lee5:41

So we know that our proctors are highly accurate at detecting various forms of cheating. We wanted to see, specifically, if we give them a fake signal, how well would they be able to discern that this is a totally legit session.

The way we did that is by selecting sessions that had no cheating whatsoever. They were totally okay, and we made it look like they have this AI signal that says, "Hey, check if there's copy-typing behaviors present at a specific moment."

We presented them to the proctors as part of their normal workflow. They thought it was just another session that they were taking a look at, and this did not impact our test takers in any way. Their results were quite interesting.

So we found that despite the fact that our human reviewers are consistently scoring above 90% on their accuracy calibration metrics, they actually accepted 50% of these fake signals, meaning they were falsely accusing people of cheating half the time.

And this coin-flip rate is something that is a strong suggestion of automation bias. This means that they're deferring their judgment to AI without giving a second thought to whether or not there's evidence to corroborate this and if this is a true cheating session.

Again, to reiterate, these were not sessions that were actually going to our test takers; these were historical sessions, so there was no impact to our customers. However, this is something that was definitely very alarming to the team, because in a high-stakes exam where these results are going to influence college admissions and visa decisions, this is not something that we can take, we can just accept.

We knew that the problem was not the model. Our model has a 1% false positive rate, and also these were sessions that were negatively predicted. We knew that our problem was not the people; our people are highly skilled and very experienced with detecting cheating.

So we wanted to take a look at the interface, and that's where we targeted our solution. So we decided to take a look at the human-AI interaction loop. Specifically, our proctors are given a series of guidelines about how to interact with the system that they have, and we wanted to just update that proctoring guideline to emphasize two things.

Solution7:39

Angel Ortmann Lee8:00

First, the AI signal is just a preliminary alert; they are the final decision-maker. And second, when they're making that decision, they must find independent evidence in the video footage before upholding a flag. This simple copy change led a 21% increase in rejection rates, meaning that from 50%, only half of sessions that were rejected, the majority, 71, were now determined to be totally okay.

And this is really good because it is more closely matching sessions in production. And for an engineer, this means that we didn't have to tweak the model, and we didn't have to tweak the UI in some way. We simply had to take a look at the copy change, and this really changed the way that people were interfacing with that AI result.

So what are the implications of this? As an AI engineer, your interaction loop determines how effective your AI system is, and also what you can learn from it. The way that you measure efficacy and the way that you can and the data that you collect from that to then drive your next iteration are really important.

The Flywheel8:52

Angel Ortmann Lee9:14

Earlier we talked about the human-in-the-loop AI as a linear interaction where a model goes to a human, goes to a decision. However, in reality, that process isn't linear; it's cyclical. Models provide some sort of output that goes into an interaction, that goes into a human behavior, which yields data for your evals, and then later on your model.

You can't really change the way a human behaves unless you are that human, but what you can do is tweak that interaction such that it can elicit different results from that human behavior. And that data is golden. It leads to better analytics, model improvements, and future iterations, including the next generation of your model, or maybe some different product.

Now, zeroing in on that interaction portion, we can look at how to evaluate your system. Ask yourself the question: how can I measure and improve the efficacy of my AI system? Looking at structured interactions that were designed intentionally, you can see that those interactions yield good data that are labeled signals that can then become training data and evals for a better model.

And that is a flywheel that compounds. As you have the better model, you can have better data that then has better interactions with your human, which then continues to cycle. Think of your structured interactions as a system property that specifically yields high-quality data.

That high-quality data is unlocking meaningful insights and quicker development iterations. You're not going to be spending days cleaning your data or trying to find useful insights. Instead, you're going to have structured data that is directly impacting your next iteration loop.

And this is a compounding effect, and it's cyclical. If you are not being intentional with that design, you can get stuck in a vicious cycle where your model is making confident calls, and because your interface is not actually eliciting that deliberation from a human, they just end up rubber-stamping it.

And that positive signal is logged as truth, so over time your model becomes more confident, and the human is not encouraged to think further. So they continue to defer to the AI, and the AI becomes the person in the driving scene.

Instead, what you want is a virtuous cycle. If you have an interface that forces independent judgment, this allows the human to really think critically about the decisions they're making and have real disagreements surface. That means that you have true positive and negative labels that are honest and get logged to then continue to have model improvements that are targeting exactly where the model goes wrong.

So let's take a look at some examples. For example, we have other cheating flags that are driven by AI. As an example, we have headphone detection. On the left, you can see a bad pattern that we had where we were saying, "Hey, the model detected headphones at this moment, can you flag it here?"

Headphone Example11:57

Angel Ortmann Lee12:16

And it was just asking a simple yes-or-no question. We realized that there's actually two questions hidden in this single

CTA. One, we're asking, "Headphones were detected. Is that true or false? Did the model correctly predict that at this video segment there is some set of pixels that look like headphones?" And secondly, are we applying a flag that this person had a violation for not correctly using headphones at this moment?

Why is this important? For example, if there's somebody who has a hearing aid, that means that the model correctly predicted that there are headphones or earbuds detected. That is a true signal. However, we don't actually want to penalize this person for wearing hearing aids, so we don't want to flag them for a violation.

Previously, as to not falsely accuse somebody of cheating, we would select no, but that would be a bad signal to give to our model. So breaking this up into two pieces is really important because we actually get more data and it's better quality, and we're not harming the model in the long run.

Writing Tutor13:23

Angel Ortmann Lee13:23

Another example is a quality tutor. On the left here, you see a pattern where the interaction is overwhelming, and on theright, delightful. So this is an example of me talking to an LLM. I asked it to act as a writing tutor and provide feedback for a passage that I wrote.

The passage was specifically written as if it was an English-language learner, so it had a few mistakes or awkward sentences. It was a relatively brief paragraph, and instead, this LLM decided to give me 400 lines of text, and it was very overwhelming and hard to parse.

First, it decided to praise me, then give some sort of feedback, and then completely rewrite my passage, even though I never asked it to. The feedback was not direct. It was hard to tie the feedback to specific parts of the input, and it was so large that it would be difficult to actually improve your writing through this sort of interaction.

And most importantly, this did not feel natural. If you were to send an email to your friend saying, "Hey, can you take a look at this thing that I wrote?" you would not expect them to send you an essay double the length, telling you all the things that you didright and wrong, and also give you a whole new version.

Instead, you would probably want it to look something like this. Here you have a screenshot of a Duolingo-style writing tutor where the text is directly marked up. The green is signifying that this is something that was good, and also providing some sort of feedback when you hover over it.

Yellow signifying something is awkward or a little bit off, and red being direct mistakes. When you hover over all of these markups, you can get direct actionable feedback that's concise, and you can accept the suggestions in line. Most importantly, all the feedback is directly tied to a portion of text.

This is more closely mimicking human behavior. Specifically, like in an academic setting, if you're handing your essay to a classmate, you would expect feedback in line as they mark up your text, rather than an essay back. This is useful because over time, if you get these sorts of feedback points, you can improve in incremental steps in your writing.

And this is really important for surfacing the exact same AI output. Lastly, and probably most applicable to an engineering audience, is a coding agent. Now, there are a lot of coding agents out there, and there's a lot of different UIs.

Coding Agent15:36

Angel Ortmann Lee15:51

People have their personal preferences, but I've seen that there's two patterns that a lot of out-of-the-box coding agents are falling into. So one pattern is that if you ask it to do something, it's going to touch a lot of files and give you a giant diff, basically doing the thing that you requested all in one go.

This leads you probably to approve all the changes and then take a look at them, maybe on GitHub, so that you can see all the things that it did. Another approach is that it will ping you a notification every single time it's changing some sort of file or function, and you have to keep clicking yes, yes, yes, just so that you can get to the result.

Either way, in both of these cases, you're just becoming a rubber stamp. You're accepting all of the changes, and then you're taking a look at them all in one go and debugging later. Anything that went wrong is your responsibility to then identify, fix, reprompt, or do manually.

And it's not a very delightful experience. Instead, you probably want a coding agent that acts like a junior developer. You wouldn't want a junior developer to come onto your team and just be like, "Oh, sure, I can do that," and disappear for a day, and then give you a thousand-line PR.

You also probably don't want a junior dev who's asking you a question every five minutes at your desk. Instead, you want someone who's able to plan, ask good questions, and document those design decisions, giving you a good spec and breaking up their PRs in meaningful and reviewable ways.

This means that it's delightful for you as a mentor, or in this case, a developer who's partnering with a coding agent, to experience things in a way that is easily reviewable. You can highlight assumptions and maybe answer questions about them, and you can easily see a plan and the things that the decisions that it's making before things go wrong.

Also, the steps are manageable, and you're not being pinged too many times. And then going a little bit into the data side of this, if you have an agentic coder and it's leading an interaction where a developer is encouraged to just quickly skim everything and not really discern, this means that you're just collecting these binary signals of accepted and rejected, usually skewing towards accepted.

And that doesn't really give you that much information because it's just on some coding block. Instead, if an agent is acting as a partner with a developer steering, you can get rich data because it's structured specifically around different parts of the development cycle, and it's capturing nuanced and structured decisions about the different parts of the tasks that it's doing.

For example, you can look at assumptions that were bad, the trade-offs that it made, stylistic preferences, and approaches that the developer is taking. And all of those pieces of data can then continue to make your experience as a like, as your AI system, coding system, better.

Design Principles18:51

Angel Ortmann Lee18:51

So let's look at some design principles. First, you can engineer the reasoning. Think about what reasoning pattern do you want to elicit from a human, and how does your interface challenge that? So if you have a system that is specifically optimizing for independent judgment, reframe your system to think of the human as an investigator, not just a validator.

Don't just give a, "Hey, is this looking good?" but instead have it be a more thoughtful, engaged effort. Surfacing assumptions is something that's very valuable when you care a lot about the quality of a long-running task. If the model is stating them earlier on and asking for a sign-off, you can prevent any future miscommunication or having to go back and fix certain assumptions.

Weighing trade-offs is also very important because very often an LLM might give you some sort of option, and it thinks it's best without having to actually weigh the different

trade-offs and design decisions that it's making in the background. Presenting those options and the reasoning for why allows the user to continue to be in control over the output, and they can opine earlier on so that they can get the thing that they actually want.

Lastly, for sustained attention, you want to build in friction exactly where the stakes are high. If you want the person to slow down and think deliberately, friction is your friend. Which leads us to the next principle, to match the friction to the stakes.

In a high-stakes example like ours, where the Duolingo English Test really matters for people and their livelihood, we want our human reviewers to be deliberately slow and very thoughtful with the decisions that they make. This means that we want to be adding review gates that are well-structured and friction so they can slow down and think about these things so that they can never become a rubber stamp.

You want the people to slow down, and you want the output to remain high quality. You don't want noise, and you want clarity. So this means that you have to be actively thinking about what friction, like, what speed bumps do you want to put along the road, and what checkpoints.

For systems where you have low oversight, for example, something delightful where you're just chatting with an AI, you want to make sure that it's relatively frictionless. Your design has to optimize for someone who's happy with that output and doesn't really feel like there's a lot of stopping points or scenarios where it's kind of difficult to interact with the system.

Instead, you want it to be absolutely seamless.

Next principle is every interaction is already a label. Instead of having to select a portion of your data and have human annotators get you a better, cleaner data set, you can kind of already start thinking about that specific interaction piece as already providing you labels and signals for your next iteration.

So if the agent plan was approved or a suggestion was accepted, this means that you did somethingright, and your output matched the intent of the user. However, if the output was modified or a recommendation was overridden, that probably signifies something bad.

However, a lot of systems don't really capture that diff, and the model falls short because what you get on that decision is a yes or no, and the human clicked yes, then manually went in and changed something or erased it completely.

If you don't capture that diff, which could be something the AI falling short or maybe completely being wrong, you actually capture a false signal that then can pollute your data sets. Instead, think about how can you measure that diff.

Lastly, there are also questions that a human might be asking, for example, explanations or follow-ups. And this could mean that the human has a low trust in the system, or there was something wrong with the AI. So take a look at the kind of questions that are being asked and what sentiment they have.

Another principle is to stop asking how to evaluate the model. Instead of building your system and then being like, "Hey, what kind of data can I capture to see if this is good?" proactively think about what defines success for your AI system.

Think about how you can be measuring that with concrete metrics, and what data will you need to improve the system from the start. Those decisions will be informing the way you design that interaction such that you can ensure that you have the hard evidence for that next step.

Every interaction should be helping the user to teach them how to improve the system and be a partner with the AI.

This leads me to my final point, which is all of those things are leading you to engineer that interaction. There are different ways to engineer that interaction, which I've covered briefly, but some of the principles are this. First, you can have structured inputs and outputs.

That way, you don't just have vibes or giant walls of text. Instead, you have specifics. You can think of this in terms of forms that the user is filling out, structured output in forms of tables, markup UIs, for example, that writing tutor, or maybe it's a design thing where you can highlight specific elements.

All of those ways are having targeted interactions between the human and the AI, ensuring a better result. Next, highlighting those assumptions. If you are having assumptions being made by the model, if you surface them proactively and ask if it's legit, that's going to save you some tokens down the line so that the human is not having to fix or argue or correct the model output.

Instead, it's being proactive and having those things that are core pieces of information that are going to inform later decisions. Next is building in friction and review gates. That deliberate slowing down so that you can have good quality thought required for good quality decision-making and good quality data is all important because if you're bringing in that friction and review gates, people are going to start thinking clearly as if it's really their own thing rather than just something that AI is supplanting.

Lastly, collecting explicit feedback is really important because, as we've covered, every one of those interactions is a piece of data. So all of those signals are going into your next generation of the model, and collecting explicit feedback, not just a thumbs-up, thumbs-down, but instead feedback at the correct touchpoint with the correct amount of nuance is something that can really drive improvements directly.

Closing25:15

Angel Ortmann Lee25:41

So yes, you should be designing for discernment. Sometimes the fix is not a better model or more oversight. It's just engineering the interaction itself. Thank you.