Inspiration

In one of our honors seminars focused on diverse perspectives, we were assigned a reading about Shine Theory. Most readings blur together over the semester, but this one stayed with us.

The article described how women on Obama’s staff dealt with a problem that felt painfully familiar: their ideas would sometimes get ignored in the room, then show up again later when repeated by someone else. Their solution wasn’t to fight for attention louder. It was amplification. When a woman made a point, other women deliberately repeated it, credited her by name, and brought it back into the conversation so it couldn’t be brushed past.

What stuck with us was how practical and human that was. It wasn’t about calling people out. It wasn’t even about proving someone was doing something “wrong.” It was a strategy for making sure good ideas—and the people behind them—didn’t get lost in the flow of a meeting.

As students heading into corporate environments, we kept thinking: why does it take so much effort to simply be heard? And how many people—especially women, interns, and quieter contributors—stop speaking up because they don’t feel space will be made for them?

That’s why we built Shine. We wanted a tool that supports the amplification mindset in real time: noticing when ideas might be getting dropped, when voices might be getting talked over, and helping teams reflect afterward on who was heard, who was credited, and what could be done differently next time.

What it does

Shine is a live meeting companion focused on voice equity.

During a meeting, each participant enables their microphone and joins a shared session. Shine transcribes what each person says and associates it with their name, creating a real-time conversation timeline.

Instead of summarizing action items or generating generic meeting notes, Shine looks at how the conversation is unfolding. It detects moments of overlapping speech that may indicate interruptions. It identifies ideas that were introduced but never revisited. It tracks participation patterns and highlights recognition or amplification moments.

After the meeting ends, Shine generates a structured reflection report. This report surfaces voices to revisit, idea ownership patterns, overlap insights, and overall participation balance. The goal is not to rank or judge contributors. It is to help teams see patterns they might otherwise miss.

Shine acts as a mirror for meetings. It makes conversational dynamics visible so teams can be more intentional about who gets heard, who gets credited, and how ideas move through the room.

Because the point is not just to talk. It is to be heard.

How we built it

We built Shine using Next.js with TypeScript for the frontend and Supabase for session management and real-time updates. The system follows an event-driven architecture, meaning transcript segments, live prompts, and reflection insights are stored and synchronized across all participants in a session.

For transcription, we integrated Deepgram, a speech-to-text AI model that converts microphone audio into text in near real time. This produces a live transcript that serves as the foundation for conversation analysis.

To identify potential interruptions or overlooked ideas, we analyze transcript segments using the OpenAI API. Our prompts are structured to detect patterns such as:

Ideas that appear to be cut off mid-thought

Abrupt topic switches that leave a point unfinished

Contributions that are introduced but not acknowledged before the conversation moves on

When one of these patterns is detected, Shine surfaces a short, supportive prompt during the meeting. These prompts gently suggest revisiting a thread or recognizing a contribution that may have been dropped. They are intentionally framed in neutral, collaborative language.

At the end of the meeting, the full transcript is processed again to generate a structured Shine Reflection Report. This report highlights idea flow, participation patterns, recognition moments, and opportunities to amplify voices in future conversations.

Throughout development, we focused on building something reflective rather than evaluative. Shine is designed to make conversational dynamics visible so teams can be more intentional about how they collaborate.

Challenges we ran into

One of our biggest challenges was speaker attribution.

Initially, we captured only the host’s tab audio and relied on Deepgram’s diarization feature to separate speakers automatically. In theory, diarization should label different voices within a single mixed audio stream. In practice, it was not reliable enough for our use case. Because the audio was coming from one tab and already mixed, the model struggled to consistently distinguish between different speakers.

This created a core problem for us. Shine depends on knowing who said what in order to analyze idea ownership and conversational flow. If speaker attribution is inaccurate, the insights lose meaning.

We pivoted our architecture. Instead of relying on one mixed stream, each participant in the session enables their own microphone. Their audio is transcribed individually, and transcript segments are associated directly with their identity. We then merge these segments using timestamps to construct a unified conversation timeline.

This shift significantly improved reliability, but it required rethinking parts of our system and redesigning how sessions work.

Another challenge was scope. It is easy to overextend when building something that touches social dynamics. We had to narrow our focus and prioritize core functionality over adding more features.

Finally, we spent a lot of time thinking about tone. Because Shine surfaces sensitive conversational patterns, the language had to feel supportive rather than accusatory. That balance was harder than we expected.

Accomplishments that we're proud of

We are especially proud of solving speaker attribution in a way that feels reliable and intentional. Being able to accurately associate what someone says with their identity and generate a clean transcript for analysis was a major technical hurdle. That foundation made everything else possible.

We are also proud of:

Building a real-time, multi-participant transcription system

Designing structured prompts that detect cut-off ideas and conversational shifts

Creating a reflection report that focuses on idea ownership and amplification instead of generic summaries

Designing language that feels supportive rather than evaluative

Building a working end-to-end prototype within the time constraints of a hackathon

Beyond the technical aspects, we are proud that Shine is rooted in lived experience and academic inspiration. We took a theory we encountered in class and turned it into something tangible and interactive.

What we learned

We learned that building something around conversation dynamics is harder than it sounds. It is one thing to say, “let’s detect interruptions.” It is another thing to actually define what that means in a way that feels fair and not accusatory. We had to constantly ask ourselves: would we feel comfortable using this in our own meetings?

We also learned that tone matters a lot. A notification that says “you interrupted someone” feels completely different from “possible overlap detected.” We didn’t want Shine to feel like it was policing people. We wanted it to feel like a gentle mirror.

Technically, we learned that real-time systems are messy. Getting multiple people’s audio, merging transcripts by timestamp, and making sure speaker attribution makes sense was not straightforward. Things that seemed simple in theory became much more complicated once we started building.

But maybe the biggest thing we learned is that meeting dynamics are often invisible until you slow down and look at them. Once we started paying attention, we noticed these patterns everywhere — in class discussions, group projects, even casual conversations. That made the project feel more real to us.

What's next for Shine

Next, we want to refine the accuracy and depth of our conversation analysis. That includes improving real-time idea tracking, making speaker attribution even more seamless, and strengthening how we detect when contributions are overlooked.

We also want to expand the dashboard to show trends across multiple meetings. Instead of just reflecting on a single session, teams could see how participation and idea flow evolve over time.

Another major step would be direct integration with platforms like Zoom or Google Meet so Shine could plug into existing workflows without requiring separate setup.

Long term, we see Shine becoming a tool that supports leadership development and team culture. Not just highlighting interruptions, but helping teams build habits of amplification and recognition.

Shine started as a reflection tool inspired by Shine Theory. Next, we want to help teams actively practice it

Built With

Share this project:

Updates