light.
real-time protection for real conversations.
light. listens to phone calls as they happen — transcribing, analyzing, and advising — so that the person on the line always knows what's really going on. Whether you're a senior being pressured by a scammer, a customer service agent trying to turn a frustrated caller around, or a sales rep feeling out a hesitant prospect, light. puts the right words in your hands at exactly the right time.
No post-call summaries. No "we'll review the tape later." Just quiet, real-time intelligence — delivered the moment you need it.
Why this exists
Phone calls are one of the last truly vulnerable moments in modern communication. There's no paper trail, no time to think, no ability to quickly verify what you're being told. Scammers know this. So do bad managers and aggressive quotas.
In Canada alone, phone fraud costs victims hundreds of millions of dollars every year — and those numbers only capture the cases that get reported. The real toll is quieter: the 70-year-old who spent three days thinking she owed the CRA $4,200. The customer service rep who didn't know how to de-escalate and lost the account anyway. The sales call that ended in awkward silence because nobody knew when to stop pushing.
light. was built to change that calculus. Not by replacing the human on the call, but by standing behind them — invisible, instantaneous, and genuinely useful.
What it does
light. has three modes, each built around a different kind of call:
Scam Protection
light. listens for the patterns that scammers rely on — urgency, authority impersonation, threats, requests for unusual payment. It scores the likelihood that a call is fraudulent in real time, explains exactly why it's suspicious, and hands the user precise questions they can ask to expose the caller or safely end the conversation.
Designed for seniors, caregivers, and anyone who's ever felt pressured on a call.
Customer Service
For agents on the front line, light. monitors customer sentiment throughout the call and scores satisfaction as it rises or falls. It surfaces observations about tone, frustration, and unresolved issues — and suggests empathetic, clear responses to help the agent guide the conversation toward a resolution the customer actually feels good about.
Because the difference between a loyal customer and a cancelled account is often a single sentence.
Sales Rep
light. reads the room. It tracks buying signals, hesitation cues, and annoyance in real time — giving reps a live read on whether the customer is warming up or checking out. The suggested responses are deliberately non-pushy: moves that keep the conversation alive without burning the relationship.
The best sales call is one where the customer forgets they're being sold to.
How it works
Microphone → 4-second audio chunks
→ Whisper (speech-to-text)
→ Accumulated transcript
→ LLM analysis (persona-specific prompt)
→ Live dashboard update
Every four seconds, light. captures a fresh chunk of audio, transcribes it with OpenAI Whisper, appends it to the growing call transcript, and fires it at a large language model with a carefully engineered prompt tuned to the active persona. The result — a score, a call type, a set of reasons, and three suggested responses — arrives in the dashboard within seconds.
The whole thing runs locally. No call audio leaves your machine except to the transcription model. Sessions are isolated per browser tab. Nothing is stored after you reset.
Getting started
1. Install dependencies
pip install -r requirements.txt
flask
flask-session
openai
openai-whisper
2. Set your API key
export OPENAI_API_KEY=your_key_here
3. Run
python app.py
Then open http://localhost:5000 in your browser.
Note: Microphone access requires the page to be served from
localhostor a secure HTTPS origin. Opening it via a local IP address (e.g.192.168.x.x) will cause the browser to block microphone access — uselocalhostduring development.
Project structure
light/
├── app.py # Flask backend — transcription, analysis, session management
├── requirements.txt # Python dependencies
├── README.md # You're reading it
└── templates/
└── index.html # Complete frontend — splash, themes, dashboard, waveform
API endpoints
| Method | Route | Description |
|---|---|---|
GET |
/ |
Serves the frontend |
POST |
/analyze-chunk |
Accepts audio (file) + persona (string), returns analysis |
POST |
/reset |
Clears the session transcript |
GET |
/transcript |
Returns the current transcript (useful for debugging) |
The /analyze-chunk endpoint accepts multipart/form-data with two fields:
audio— a WebM audio blob from the browser's MediaRecorder APIpersona— one ofscam,service, orsales
It returns:
{
"chunk": "...the transcribed text of this audio chunk...",
"full_transcript": "...everything transcribed so far...",
"probability": 87.3,
"type": "CRA Impersonation Scam",
"reasons": ["Caller claims to be from a government agency", "..."],
"questions": ["What is your official employee ID?", "..."],
"urgency": "high",
"persona": "scam"
}
Swapping the transcription model
light. ships with Whisper base, which is fast and runs entirely on CPU. If transcription accuracy matters more than speed in your deployment, you can swap it out in a single line:
# In app.py
whisper_model = whisper.load_model("medium") # more accurate, slower
whisper_model = whisper.load_model("large-v3") # most accurate, GPU recommended
Alternatively, the audio pipeline is intentionally modular — you can replace the Whisper call in analyze_chunk() with any streaming STT service (Deepgram, AssemblyAI, Azure Speech) by swapping roughly 10 lines of code.
Roadmap
These aren't promises — they're directions worth exploring.
- Twilio integration — full real-time phone call interception via Media Streams, so light. works on actual incoming calls without any speaker-phone setup
- Voice biometrics — flag known scammer voice signatures across calls
- Post-call report generation — export a structured summary with key moments, score timeline, and recommended follow-up actions
- SMS & email modes — extend the same intelligence to text-based channels
- Mobile companion app — run light. passively in the background during calls on iOS and Android
A note on privacy
light. processes audio locally via Whisper and sends only the text transcript to the language model for analysis. No raw audio is transmitted to any external service beyond the transcription step. Sessions are stored server-side and scoped to individual browser tabs — they do not persist across server restarts.
For production deployments handling sensitive calls, we recommend reviewing your jurisdiction's consent and recording laws before deploying.
Built with
- Flask — lightweight Python web framework
- OpenAI Whisper — open-source speech recognition
- Flask-Session — server-side session management
- Figtree — the typeface powering the UI
- The MediaRecorder API — browser-native audio capture, no plugins required
light. — because the right words, at the right moment, change everything.
Built at GenAiGenesis · Made with 💡

Log in or sign up for Devpost to join the conversation.