←Back
←Back
Mastering Tough Talks
AI Role-Playing Partner illustration
How to navigate difficult conversations with confidence.

Feel more confident in the moments that matter. Explore tough conversations safely with our AI Role-Playing Partner.

⚠️ Audio Not Supported This bot currently does not support audio playback or voice input. Please use text to communicate only.
Mastering Tough Talks
AI Role-Playing Partner illustration
How to navigate difficult conversations with confidence.

Feel more confident in the moments that matter. Explore tough conversations safely with our AI Role-Playing Partner.

⚠️ Audio Not Supported This bot currently does not support audio playback or voice input. Please use text to communicate only.
Mastering Tough Talks
AI Role-Playing Partner illustration
How to navigate difficult conversations with confidence.

Feel more confident in the moments that matter. Explore tough conversations safely with our AI Role-Playing Partner.

⚠️ Audio Not Supported This bot currently does not support audio playback or voice input. Please use text to communicate only.

Web app · ASU

ASU Learning Engineering Institute

Tough Talks

Tough Talks

Tough Talks lets education students and practicing educators at ASU’s Mary Lou Fulton Teachers College practice difficult conversations with an AI role-play bot. A third party built the bot. In September 2025 I designed and shipped the site around it in under 48 hours, with ASU sign-in, and left the bot’s own interface untouched.

TEAM

Solo, for a non-technical client

TIMELINE

Sep 2025, under 48 hours

TOOLS

FigJam · Figma · v0 · Vercel

A working bot with nothing around it.

When I joined, the client’s chatbot worked but sat alone on a single page. It had no navigation, no onboarding, no way to find conversation types and no way to collect feedback.

The client’s Educator Difficult Conversations Role-Play Bot, a single chat window with its own New Chat control
The client’s Educator Difficult Conversations Role-Play Bot, a single chat window with its own New Chat control

Figure 1. The client’s bot as it looked before I designed the product around it.

The bot’s interface was locked. It shipped with its own navigation bar and its own controls (New Chat and a collapsible menu). A standard app shell on top would have given people two navigation bars and no clear sense of where they were.

Two layers, each with its own navigation.

I split the product into a shell and a chat page. The shell owns the main navigation and the structure of the site. The chat page has a minimal navbar of its own, so the embedded bot keeps its built-in controls and nothing appears twice.

A hub that grows with the client

Conversation types live in a Conversations hub. Each type opens a chat page with the same embedded bot, so a new type is one new hub entry. The client supplied the first three types: students, K-12 parents, colleagues.

FAQ and survey

The FAQ page covers privacy, scope, session length and how the bot guides a conversation. The survey page collected feedback without any change to the bot. The client later took the survey down, because they wanted responses only from IRB-certified members.

I mapped the structure first.

Before building anything, I mapped the site in FigJam. Home leads to the conversations hub, and each conversation type opens its own chat page. The FAQ and the survey hang off the main navigation.

FigJam site map: Home, Conversations Hub, Chat Page, About and FAQ, Survey
FigJam site map: Home, Conversations Hub, Chat Page, About and FAQ, Survey

Figure 2. The site map I drew in FigJam before any code existed.

Building it in under 48 hours.

The timeline was short, so I built the site with AI tools. I wrote one detailed prompt covering pages, routes, navigation and the ASU color palette, then gave it to Replit, Lovable, Bolt and v0. v0 produced the cleanest foundation.

Build a public GitHub repo called tough-talks. Tech stack: Next.js 14 (App Router) with TypeScript, Tailwind CSS, React-icons, shadcn/ui. Pages & routes: / Home, hero (H1: Mastering Tough Talks), two CTA buttons (Start Now, Learn more / FAQ), illustration placeholder. /chat, full-width iframe that loads BOT_IFRAME_URL env var, inside a card component with heading “Educator Conversational Role-Play Bot”. /faq, accordion list with four sample questions + answers. /survey, centered text, one CTA button to SURVEY_URL env var. Navigation bar: ASU logo left, links (Home | Chat | FAQ | Survey) right, underline active link. Tailwind color palette: primary #8C1D40 (ASU maroon) and neutral grays. Add ESLint + Prettier config, Tailwind base/styles/utilities, and a README that includes local dev steps (pnpm dev). Output a complete repo I can download or push public.

Figure 3. The prompt I gave all four tools, lightly reformatted for reading.

From there I shaped it by hand. I designed the visuals in Figma and matched them in code. I set up routing for each page, put every protected route behind ASU single sign-on and embedded the bot in an iframe so its interface stayed separate. Then I deployed it to Vercel through GitHub.

What the client ended up with.

In under 48 hours the client’s single chat page became a site people can move around in, with a conversations hub and an FAQ behind ASU sign-in. The bot itself runs exactly as its builder delivered it.

Most of the work was deciding what surrounds the bot and where each piece of navigation belongs.

Next case study

DIAL, an inclusion assessment library

Read the case study →

DIAL landing page, the next case study

Create a free website with Framer, the website builder loved by startups, designers and agencies.