S Anand · Talks
Day 3 · 9 Sep 2026 · SUTD 日本語 All five days Transcript
SUTD DAI Signature Master Class · Expert Industry Series · Day 3 of 5

Make It Prove Itself

By Wednesday, everyone in the room could build. The required midweek checkpoint asked a colder question: if the agent can build it and break it, can the agent also test it, survey it, and defend it — without you standing over its shoulder? Three live demos said mostly yes, and a student's blunt question said maybe that's the problem.

Remote · required checkpoint · Wednesday 9 September 2026
Anand S, Head of Innovation at Straive · read the full transcript

🎧
Listen to the full 90-minute checkpoint
Recorded live · remote · SUTD
Day 3, in panels
A comic summarising Day 3's arc: it's easy to build an app but harder to know it works, so the class teaches an agent to test a stranger's site like a real visitor and turn that into a reusable, non-AI test suite. A second thread hires cheap sub-agents to role-play three personas and run a market survey overnight. A student asks whether trusting AI suggestions you don't understand is a dangerous black box, and the teacher answers with a story about not knowing how his car engine works. The day closes with peer feedback recorded on video and a live demo of learning Rust in one minute, with the lesson that mistakes made on camera are the most useful feedback of all.

The whole checkpoint, drawn. Testing an app like a stranger would, hiring AI personas to run market research overnight, and the argument about whether any of this counts as understanding what you built. Open it full size ↗

Scene one

Teach it to test itself

Wednesday was the required checkpoint — the one day nobody could skip — and Anand opened with the same problem everyone had already lived through: you tell the agent to fix a bug, it fixes the bug, and a week later something that used to work has quietly stopped working. Building is fast now. Trusting what got built is not.

"It's easy to build an application, AI can help us create the product, but what's trickier is to make sure that it's useful and make sure that it's usable."

— Anand

The specific fear he named is the one anyone who has iterated with an agent for more than a day recognizes on sight:

"You'll find that something you wanted in the first place is no longer working. Meaning, it adds new mistakes as we go along, which we don't want."

— Anand

So the question for the session was blunt: can ChatGPT or Claude test an application the way a person would — clicking here, pressing that — reliably, repeatably, and without burning tokens every time? Rather than explain the answer, Anand picked two apps at random from the pile students had already shared, opened ChatGPT Desktop, and asked it to find out for itself. He explained the choice of desktop app in passing: "if it can use my computer, maybe it can also use my browser, which may require some of these sites to be logged in, and I have a little more control." The instruction he typed was almost a spec in itself:

"What I'll do is go through this site like a real user, find out what it does, and test it. Then, create an automated set of test cases that I can rerun anytime without needing any AI application. […] Also, create a small document explaining what exactly you're testing so that if I need to change something in the future, I will know. Make sure it's easy for me to add new tests in the future by just telling you."

— Anand, prompting ChatGPT to test a stranger's app

The two sites in play were City, By You — Mayu's single-page quiz that turns eight small answers into an imagined city — and, a few minutes later, Pawlog, a pet health diary. Anand picked City, By You to demonstrate live, and a parallel Codex session did exactly what he'd asked, unattended, while the class kept talking.

Mayu · City, By You — the live app
city-by-you-mayusuzuki-20260908.mayu-s-feb-27.chatgpt.site

"If you could build a city, what kind of city would you create?" Answer eight small questions and it hands back your own corner of the world. Open in its own tab ↗

What the agent came back with wasn't just "it works." It read the source, mapped every selector, and flagged real behaviour worth locking down before it quietly changes: eight forced-choice questions feeding a deterministic city archetype, state that lives only in page memory, and — because it actually read the code rather than only clicking through it — three genuine product defects it chose to preserve as known, expected failures rather than paper over:

Three real bugs, kept visible on purpose
  1. Both restart buttons return to the intro screen but leave the age and atmosphere fields filled in.
  2. Restarting after a custom "Other idea" answer leaks that old text into the next run — the reset clears the main state but not a second, separate array.
  3. Custom text is inserted as raw HTML in parts of the result, not always as plain text — a real, if minor, injection surface.

Marking these test.fail(...) lets the routine suite stay green while still watching them: fix one, delete its fail line, and Playwright will loudly announce an "unexpected pass" the moment the underlying defect is actually gone.

City, By You · the automated test report, live
26
passed
3
known defects, kept visible
28.4s
full run
0
AI needed to rerun it
test-automation-codex/playwright-report/index.html

The actual, rerunnable output. Open full-screen ↗ · read the full agent session ↗ · read the plain-language test guide ↗

Anand's own reaction, watching the coverage list scroll past, was that it was thorough but unreadable — a list of internal test names, not something a non-engineer could sanity-check at a glance. So he asked for exactly one more thing:

"Can you rewrite the coverage as simple questions that explain what you tested, like: 'Is the text on the landing page okay?' That sort of thing."

— Anand

The rewritten guide reads like a checklist anyone could review, each question traceable straight back to an assertion in the suite:

A sample of the plain-language coverage checklist
Is the text on the landing page correct?
Are the age and atmosphere fields clearly labeled?
Does it reject ages below 8 and above 120?
Are all eight city-building questions shown in order?
Is the Next button disabled until a choice is made?
Does the Back button remember its answer?
Does every atmosphere produce the correct kind of city?
Do both restart buttons clear the previous profile?
Are punctuation and quotation marks carried through safely?
Can a visitor finish without the site calling an API?

It names the exact principle behind the request:

"The agent is doing the work; we have to verify. Usually, that means that we end up doing a lot of verification work, and that's painful. I like to make it easy for me to verify. So I tell the agent, 'Give it to me in a way that I can understand. Make my job easier.'"

— Anand

And once the suite exists, verifying a future change stops being a chore at all — it becomes one more thing to delegate: "I might say, 'I've changed the site; run the tests again and see if it works, and tell me what's changed.'" Twenty-five minutes had produced something more durable than a demo: a rerunnable contract for what "still works" means, that costs nothing to check again.

Scene two

The app that couldn't leave the sandbox

Nine minutes in, Johan raised a problem that had nothing to do with testing yet, and everything to do with why testing an app in place, as an artifact, is only half the battle: the AI he'd put inside his app was the exact thing stopping him from shipping it.

"I've been trying to implement the AI itself inside the artifact, but that hinders the artifact from being shareable. Is there a workaround around that, or how else should I implement the AI inside the product that I'm making?"

— Johan

This was Johan's Stock Ticker app, deployed on Cloudflare — a different shape of problem than the Lentera Bursa tracker from Tuesday, and one Anand couldn't just answer from memory. So, true to Day 2's method, he didn't try:

"Part of the reason I'm doing this rather than sharing an answer with you is: A, I'm not sure if I know the best answer. B, even if I did, knowing the answer and telling you is not the important point. What I want to say is that you could try different ways of asking AI yourself and learn. It's that approach to how you might learn that would help."

— Anand

He typed the question into ChatGPT almost verbatim as Johan had posed it, and watched the answer arrive live.

The mental model underneath the answer is the one worth keeping, more than the specific Cloudflare plumbing:

"A public AI app needs only two things: a webpage and a tiny private function that makes the LLM call."

— ChatGPT, answering Anand's question live

Anand was candid that it wasn't the answer he'd have given himself — he'd have reached for a hand-rolled API key and a Cloudflare Worker — and that the gap was itself the point:

"This is not the solution I had thought of. This is a good solution, and it's probably an inexpensive solution as well… Some people know exactly what it's talking about; some people have no clue what it's talking about, and it doesn't matter. Because what you could do is take this entire thing, put it back into your original chat, and say, 'Look, ChatGPT said this. Do it.' And if it works, great; if not, you wasted some time. Big deal."

— Anand

It's a small moment with a large implication: the class had just watched a teacher ask a question he didn't know the answer to, get a better answer than his own instinct, and hand it off without needing to fully understand the Cloudflare Workers AI binding underneath it. That's a preview of the argument the very next student was about to force into the open.

Scene three

"Is this a black box? Is this dangerous?"

While the City, By You test suite kept running in the background, KK — who'd opened Tuesday's session with the news-summariser that impressed his parents and then didn't — asked the question underneath every demo so far, and asked it without softening it.

"Sorry for always asking questions, but I feel that one thing — doing my process of trial and erroring — I feel that is this really the right thing to do? Because if you don't even know what you're doing and then you're just throwing whatever the suggestion is into Codex or whatever, then it's building whatever based on an AI suggestion, but we don't really know what the heck is going on. So it's a black box. Is this really right? Are we like — is this actually more of a dangerous thought?"

— KK

Anand's first word was "Possibly." Not a deflection — an actual concession that the worry is sometimes justified. He reached for a story instead of a rule:

"I drive a vehicle, a car. I have no idea how the engine works. If it breaks down, I can't even change the tires. Is that a bad thing? It is, because there have been a couple of occasions when I was stuck and I needed to just at least change the tire or know that the engine was heated. […] The total time that I spent on this was half a day. The amount of time that I might have taken to learn about engines and changing a spare tire, etc., would probably have been a couple of days."

— Anand

KK pushed back, and the pushback was sharper than the analogy could absorb cleanly:

"I understand the perspective that you're learning a kind of niche skill, you know, car repair, for occasional three times' use. But since we're undergrads and students, isn't this technically more important because we're potentially delivering it to our bosses and stuff? […] I will most likely encounter more bugs and issues and stuff that would be more crucial for me to know rather than car repair. So how?"

— KK

Anand's answer didn't concede the car analogy — it reframed the entire question of what's worth learning around demand and supply, using a story from his own workplace rather than another car story. He tells interns at Straive to record a call with the CEO, transcribe it, and hand the transcript straight to Claude or ChatGPT:

"Do not try and understand what the CEO is saying. You won't understand it. Don't try and interpret the output; it may not make sense to you. Feed it back to him and let him figure it out."

— Anand

Then he ran the thought experiment one step further — what does the intern actually learn if the agent's first draft is already right?

"Suppose Ankur, who's the CEO of Straive, sees the output and says, 'Yeah, this is what I want. Great.' Then there was nothing for the intern to learn. […] But if he had said, 'You know what, the interface isn't quite like what I want. […] the fonts have to be a little larger, it's got to look a little more like a slide deck,' — now Pavan has picked up something. He's learned that there are a few things that he should tell the agent even when not asked for."

— Anand

That's the whole answer to KK's "is this dangerous" compressed into a rule of thumb: the correction is the curriculum. Everything the agent already gets right on the first try isn't worth anyone's learning time — it's the narrow gap between what the agent hands back and what a real person actually wanted where the useful skill lives.

"It's worth learning what there is a demand for and what there is a supply gap for. If the agent already does it, there's no point learning it. If the human doesn't ask for it, there's no point learning it. By delegating as much as possible, we get to find out what the gap is and focus our learning on that."

— Anand

He turned it back on the room's own frustration — the fact that everyone's app was still hitting a wall wasn't evidence they were doing it wrong, it was the whole method working as designed:

"You're already hitting that barrier so easily because your apps don't work perfectly. […] And if you find that you're perfectly happy with the outcome, you're not ambitious enough. […] A lot of the things that we've been taught so far are things that agents can do. […] What it can't do is what you should be learning."

— Anand

And, characteristically, he refused to let the answer harden into dogma before the segment even closed: "Is that always true? No, but here's the thing — I'm just one teacher amongst several dozen. The others will tell you what you should be learning; I'm just telling you what you shouldn't be learning." KK's black-box worry didn't get resolved so much as relocated — from can I trust this to where, specifically, is my judgment still the scarce ingredient.

Scene four

Hire three personas overnight

Testing verifies that an app does what it's supposed to do. It says nothing about whether anyone wants it to do that. So Anand turned to the second kind of verification — one that looks a lot more like a market survey than a QA pass, and does not require finding real people at all.

"When you ask different people, you are effectively getting user reactions, like how does a person react to it, how do they feel about it. That's more like a market survey. […] It's possible to have agents run that kind of a market survey themselves, and I'll show you how."

— Anand

The target this time was Study Walker [スタディウォーカー] — Yuri's Japanese-language app that turns a vague learning goal into one tiny, doable step for today, via a three-question wizard. Anand dictated the brief to ChatGPT, then handed the whole thing to Claude, and the instruction is worth reading in full because it's really three delegations stacked on top of each other:

"I want you to run the equivalent of a market survey on this site. Go through the site briefly and understand who are the top three personas that this could be a product for. And then create sub-agents using a lightweight model like Haiku, and pass them the persona for each of the audiences. Tell them to act like those personas and browse and test the application and share feedback exactly like they would in a market survey. […] To be frank, I don't know much about market research, but you are the expert, so you tell me how a good product market research should be conducted and actually conduct it that way. After these three sub-agents have finished, I'd like you to consolidate the feedback and give it to me in the form of a simple report where you start by sharing the most important feature that is easiest to action first, and then the second most, and so on."

— Anand, dictating the brief live

He named exactly what made this different from the previous scene's delegation: "I'm delegating not just the market research, but even the structuring of the market research." Claude took the instruction and, without being told the specific personas, read the app's own four example goals and five "stuck state" options and built three people out of them.

Yuri · Study Walker (スタディウォーカー) — the live app
yuriciv.github.io/study-walker

Turns "I want to start ___" into one tiny step for today, via a three-question wizard. Open in its own tab ↗

Three Haiku sub-agents then actually drove a browser against the live site above, in character, in Japanese, end to end:

PersonaGoalStuck state
Kenji, 34 (Osaka)Build a personal websiteChoice paralysis — too many tutorials, no start
Aiko, 27 (Tokyo)Everyday English conversationSerial quitter — restarted many times, wants a trigger
Daisuke, 42 (Nagoya)Pass the 簿記3級 bookkeeping examKnows the basics, unsure of the highest-leverage next step

The result Anand read out to the class landed almost exactly where he'd hoped: the core idea — "take one small step today instead of learning X" — worked for all three invented people, and the agent had converged on one clear, cheap, highest-leverage fix.

"It identified three personas: a Choice-Paralyzed Beginner, a Serial Habit Quitter, and an Exam-Driven Pragmatist. […] The core idea — 'take one small step today instead of learning X' — it really worked well for all three people. But the main gap is that the sessions don't have memory between the visits."

— Anand, reading the report to the class

What the transcript of the research session shows, and what Anand didn't have time to walk the class through live, is the part that makes this more than a cute trick: two of the three personas independently reported what looked like a serious bug — the app silently swapping their goal for someone else's mid-session. A weaker process would have shipped that straight to the top of the report as a "critical trust-breaking bug." Instead, the consolidating agent flagged both claims as suspicious because two different personas hit the same odd failure, re-opened the live app itself, inspected the raw localStorage, and found the real cause: three test sessions racing on one shared, un-namespaced browser-storage key — an artifact of the test setup, not something a real single user would ever encounter.

Verify before you believe — even your own sub-agents

"Without verification, the report would have led with 'fix a data-loss bug' as the #1 action item, when the real, actionable issue is a much cheaper missing confirmation message." — from the report's own transparency note ↗

That single downgrade rewrote the whole priority list: instead of an emergency data-loss fix, the top item became something almost embarrassingly cheap — a suggestion template that tells a user to "recall an expression you already learned" while showing a brand-new example sentence, a one-line mismatch that Aiko's persona flagged the moment she hit it. Anand's framing for the whole exercise doubled as a cost argument, and he was explicit about why the choice of Haiku mattered:

"Market research with a model like Haiku — and I specifically chose Haiku because it's an inexpensive model — can be done very efficiently. […] It's at 29% of usage; I started the session with about 12%, so it consumed roughly 17% of my five-hour limit, which is nothing."

— Anand

And, echoing the line that closed Tuesday's session almost exactly, he was careful not to oversell what this replaces: "This won't necessarily replace human response… but it certainly provides useful additional feedback at very low cost. […] If there are certain kinds of people that I can't reach out to — for instance, a football coach, and we didn't have one — I'd take that site and say, 'Imagine you're a football coach.'" A market survey you can't afford to run with real people becomes a market survey you can run three times before lunch. Read the full consolidated report ↗ · or the raw agent session log ↗.

Scene five

Breaking the "simplify" feedback loop

While students filled in a shared peer-feedback spreadsheet, Dora typed a question into the chat that named a frustration almost everyone in the room had felt but hadn't put into words yet:

"For context, I'm building a root mapping tool to customize their journey. While simplifying my experiment and deploying the website, the agent adds extra steps, making it more complicated to deploy. Then it turns into a cycle of me telling it to simplify the process with varying success. How do I break out of this feedback loop?"

— Dora

Anand's response followed the pattern from Scene Two almost exactly — ask a capable model first, then add his own view on top. This time the model was Claude, specifically "Fable", at medium effort.

Before reading out what the model said, Anand gave his own answer — one he'd clearly arrived at the hard way, across many students' stuck deployments before this one:

Four moves for an app that's gone in circles
  1. Ask a smarter model to make the correction. "If I'm working with Sonnet; midway through, I would switch to Opus or Fable — at least one level higher and with a higher level of thinking."
  2. Start a completely new chat. "Say, 'Look, take a look at this application. It's becoming too complicated. I'd like you to rewrite the whole thing and make it extremely simple.'"
  3. Don't let the new chat see the code at all. "Now look at the browser; don't look at the code. See what the application does. […] Build it again from scratch, but don't add extra steps."
  4. Ask for three disposable versions, not one. "Don't give me one version. Give me three different versions, each of which is very easy to test and each of which is very easy to deploy."

The move underneath all four: "Throwing away something for which it did the work — you didn't spend that much time and effort — is easy." Attachment to a broken version is the thing actually costing you time, not the rewrite.

Then he read Claude's answer, and it converged on the same diagnosis from a different angle — the vagueness of the word itself:

"'Simplify' is vague, and the agent doesn't know what 'simple' means, so it guesses. […] Stop asking it to simplify and tell it exactly what the end state looks like. […] One command, one HTML file, one JavaScript file, no build step."

— Claude, in the shared chat

Two more concrete moves came out of that same reply: naming a fresh session as one real option ("starting a fresh session is something that I mentioned a short while ago"), and asking for deletion rather than simplification — "remove this functionality, remove that functionality" — because deleting is a concrete, checkable action, where "simplify" is a judgment call, and the agent's judgment is exactly what produced the mess in the first place. Anand's closing line to Dora doubled as permission for the whole room: "Don't hesitate to start from scratch; nothing wrong with that."

Scene six

Record yourself getting confused

The third kind of verification needed neither an automated suite nor a sub-agent — it needed a real, confused human, on camera, using someone else's app for the first time. Anand set up a shared spreadsheet — "FT AI Products peer-to-peer feedback" — where every student would volunteer their name against two classmates' apps, then record themselves giving feedback on video. Before asking anyone else to do it, he did one himself, live, choosing Study Walker — the same app three AI personas had just tested overnight — as his subject.

First, the practical question of how to even record a screen-plus-camera video without installing anything. He asked Google AI Mode directly, on stage:

Then he actually recorded it: opened Study Walker translated into English, typed a real goal — "learn Rust programming language" — and narrated his reactions exactly as they happened, unscripted, mistakes included.

"First step to start doing what you want today. […] What do you want to be able to become? […] I tried it but it was difficult. […] I didn't quite understand it, so I'm not sure what to do, but I'll try."

— Anand, narrating live, in character as a confused first-time user

The recording captured a real, small, useful moment of discovery: the app pointed him at "Learn Rust in 1 minute," he decided that was more ambitious than one minute really allowed, but tried the Rust Playground it linked to anyway — typed println!, watched "Hello World" print, then broke his own toy example on purpose (1 + 2 as a printable string) and let the compiler's own error message teach him the fix.

"What I noticed was the error messages are more useful than I thought. […] So in a minute or so, I was actually able to take one step: Hello World. […] That really did help me. It managed to make me move forward on something that I wanted to do."

— Anand

Two rules closed the segment, and both cut against the instinct to perform a clean take rather than a true one:

"Please feel free to speak in any language you're comfortable in, because translators these days can do an excellent job. […] The more you share how you feel in a way that's easy for you to express, the easier it is for the audience to understand. […] And please don't try and record multiple times to get the feedback right. Mistakes when giving feedback — that is probably the most useful feedback. […] Just record it one shot; that is the best feedback."

— Anand

Three sources of verification, stacked on top of each other by the end of the hour: an automated test suite that never gets bored, an AI-run market survey that costs a fraction of a real one, and a peer's honest, unedited, on-camera confusion. None of them replace the others; each catches something the other two structurally can't.

Deliverables before Friday

Anand closed the required checkpoint with an explicit list — the first time the series had spelled out exactly what "done" needed to include, rather than leaving it to instinct.

  1. The agent research — publish the market-survey log somewhere shareable, the way the Study Walker report above was published as an artifact.
  2. Two feedback links — record video feedback on two classmates' apps, in any language, in one uninterrupted take.
  3. Improvements to the application — informed by all three sources of feedback, but not obligated to act on all of it: "you don't have to take all the feedback."
  4. Automated tests — optional for tomorrow, required the day after.

Feedback was due before Thursday's optional session if at all possible, "because that will give the other person time to improve the application." Anand also flagged that Friday's in-person session will ask for a short video, not a live pitch — a two-minute walkthrough of the app and what was done, in any language, that becomes part of each student's portfolio. Questions in the meantime go to [email protected].

What got tested, surveyed, or shown live

Three ways to verify, one afternoon

Things from Day 3

Wednesday 9 September 2026 · SUTD · 90 minutes, remote, required

01
Building fast created a new problem: trusting it.
Fixing a bug can quietly break something that used to work. "It adds new mistakes as we go along, which we don't want" — the reason a rerunnable, non-AI test suite is worth the twenty-five minutes it costs.
02
Ask the agent to test like a stranger, then translate the results for you.
"Go through this site like a real user" produced 26 rerunnable tests and three real bugs kept visible on purpose. "Give it to me in a way that I can understand" turned an engineer's checklist into plain questions anyone could review.
03
AI-in-the-loop apps are more powerful, and harder to ship.
Putting an LLM inside the product itself is what made Johan's artifact unshareable. The fix — "a webpage and a tiny private function that makes the LLM call" — came from a question Anand didn't know the answer to himself.
04
"Is this a black box?" deserves a real answer, not reassurance.
Anand's own: "if the agent already does it, there's no point learning it. If the human doesn't ask for it, there's no point learning it." Learn the narrow gap between what the agent hands back and what was actually wanted — that gap is the whole curriculum.
05
Delegate the market research — and the design of the research.
Three cheap sub-agents role-played three personas overnight and found the app's real gap: no memory between visits. "I'm delegating not just the market research, but even the structuring of the market research."
06
Verify the verifier before you trust its scariest claim.
Two personas independently reported a "critical bug." It was a shared-browser storage collision from running three tests at once. Re-check the alarming finding before it reshapes your whole priority list.
07
"Simplify" is too vague for an agent to act on.
It guesses at what "simple" means, and each guess adds a step you then argue against. Say the end state exactly — "one command, one HTML file, no build step" — or ask it to delete, not simplify.
08
Throwing away the agent's work is cheap. Use that.
"You didn't spend that much time and effort" building it, so a stuck app is never a sunk cost worth defending. Ask for three disposable versions instead of protecting one broken one.
09
Record feedback once, in one take, mistakes included.
"Don't try and record multiple times to get the feedback right. Mistakes when giving feedback — that is probably the most useful feedback." A clean take hides exactly what a confused first-time user actually experiences.