💡 Inspiration

We built Social Rehearsal for young people (especially college student), who want to handle hard conversations better.

A lot of conversation bots can simulate dialogue, but they often struggle with conflict and negative emotion, which makes practice feel unrealistic. We realized this during Hackathon week when we try to express negative emotion like anger and depression to AI. It could give advice but was poor at conflict conversation and reflection. So we wanted to build a space for more realistic rehearsal.


🪄 What it does

Social Rehearsal helps users practice difficult real-world conversations. When someone especially young people meets a hard situation, like requesting roommate to be quieter, negociating grades with TA, or deal with a confrontation, he or she can practice first.

Users set up:

  • the situation
  • the other person
  • their personality
  • the difficulty level
  • the goal of the conversation

Then the app walks them through:

  1. scenario setup
  2. conversation map
  3. live simulation
  4. debrief based on simulation

🔨 How we built it

We built Social Rehearsal in Python with Streamlit as the frontend and the OpenAI Responses API as the core AI layer.

We split the project into separate files by responsibility:

  • app.py for the user flow and interface
  • llm.py for model calls
  • prompts.py for stage-specific prompting
  • schemas.py for structured outputs

This helped us keep the system modular as we built a multi-step pipeline:

setup -> map -> simulate -> evaluate -> debrief

Instead of using one prompt for everything, each stage has its own logic and output format. That made the system easier to control, easier to debug, and more consistent.

A major part of the project was prompt design. We wrote prompts that pushed the AI away from generic “helpful assistant” behavior and toward more realistic roleplay in conflict-heavy situations. Although we did not build a fully separate multi-agent system, we added an end-condition layer that lets the AI monitor the conversation state itself, improving both the realism of the simulation and the accuracy of the final debrief.

We also used session state in Streamlit to save progress across pages and keep the whole rehearsal flow connected from setup to final debrief.


🚧 Challenges we ran into

  1. Realism and tension control
    We wanted the AI to feel difficult, but still believable. We used prompt tuning, personality setup, difficulty settings, and tension tracking to avoid responses that felt too soft or too extreme.

  2. End conditions and conversation tracking
    Hard conversations do not end cleanly. We added per-turn evaluation and an end-condition layer to judge whether the conversation was improving, stalling, or breaking down.

  3. System consistency
    With multiple stages in the product flow, keeping context consistent was a challenge. We solved this with a modular backend structure, stage-specific prompts, and Streamlit session state.


✨ Accomplishments that we're proud of

We are proud that Social Rehearsal feels more personal than a normal AI chat tool. The personality setup makes the roleplay feel closer to a real friend, roommate, or coworker.

We are also proud that we built a full flow(setup, map, simulation, and debrief). Since this was our first hackathon, we are glad that we were able to turn the idea into a working product that helps young people.


📚 What we learned

  1. We learned that for this kind of product, believable reactions matter more than polished AI language.

  2. We learned that it is important to have a clean structure, breaking the experience into setup, simulation, and debrief worked much better than a single open chat.

  3. As first-time hackathon participants, we learned that even a strong idea needs a clear and usable product flow.


🚀 What's next for Social Rehearsal

Next, we want to improve:

  • state tracking and end-of-conversation evaluation
  • a more explicit multi-agent system
  • moving the frontend to React + Next.js that is easier to customize

We also want to polish the UI and make the experience smoother and more complete.

Long term, we want Social Rehearsal to become a practical tool for young people practicing conflict, boundaries, feedback, and other hard conversations.

Built With

Share this project:

Updates