Three AI agents in one OMI app: Active Listening Coach, Commitment Tracker, and Fact Checker, to make you better in meetings and conversations.
| Agent | Trigger | Action |
|---|---|---|
| Active Listening Coach | Real-time transcript | Sends proactive nudges when you talk too much or don't ask questions |
| Commitment Tracker | Memory created (meeting ended) | Sends a summary of commitments you made |
| Fact Checker | Real-time transcript + memory | Sends a direct notification when someone makes a verifiable claim (also runs on full transcript when memory is created) |
Notes: OMI normalizes transcripts (e.g. filler words like "um", "ah" may be omitted). Fact-check runs both in real time and when a memory is created, so you can get a fact-check notification after the meeting if a claim was made.
- Python 3.9+
- OMI app with a connected device
- Gemini API key (required)
- Optional: Perplexity API key for fact-checking (Gemini is used if not set)
cd D:\omi\omi-hackathon
pip install -r requirements.txtCreate a .env file in the project root:
GEMINI_API_KEY=your_gemini_api_key_here
OMI_APP_ID=your_omi_app_id
OMI_APP_SECRET=your_omi_app_secretOptional:
PERPLEXITY_API_KEY=your_perplexity_api_keyuvicorn server:app --reload --port 8000ngrok http 8000Copy the https://xxxxx.ngrok.io URL.
- Open the OMI app on your phone.
- Go to Settings (gear icon).
- Scroll down and turn on Developer Mode.
- Tap Developer Settings.
- Go to the Explore tab (or find Create an App in Developer Settings).
- Tap Create an App.
- Fill in:
- Name: Meeting Intelligence Suite
- Description: Real-time coaching, commitment tracking, and fact-checking for better meetings.
- Category: Productivity (or similar).
External integration (real-time transcript)
- Enable External Integration.
- Set trigger to transcript_processed (real-time transcript).
- Webhook URL:
https://your-ngrok-url.ngrok.io/webhook/realtime
Proactive notification
- Enable Proactive Notification.
- Request scopes: user_name, user_facts, user_context.
Memory creation (commitment tracker)
- In Developer Settings, find Memory Creation Webhook.
- Set URL:
https://your-ngrok-url.ngrok.io/webhook/memory
- Install your app on your account.
- Grant the requested permissions when prompted.
A full meeting simulation script that triggers all three agents (false claim, commitments, listening) is in docs/DEMO_TRANSCRIPT.md. It includes an optional Listening Coach–focused block so you can reliably test that agent. Use it to test end-to-end.
We send notification content only: for direct notifications we send message, and for proactive ones we return a prompt template so Omi can generate the text. The OMI notification API does not expose a parameter for a custom URL, deep link, or “open in app to full view.”
So:
- What we control: The text (direct) or the prompt (proactive).
- What the OMI app controls: Whether tapping a notification opens the app, shows a full view, or only a preview. That’s client behavior.
To see notifications in full when you tap them:
- Check Omi app → Settings (or notification settings) for options like “Open in app” or “Expand in app.”
- Check the Omi developer docs for any “notification tap action” or “deep link” support in newer API versions.
- If you need a dedicated “open in app to full notification” flow, ask Omi support or their developer channel; they may offer it on the client or via a future API.
Listening Coach
- Have a conversation where you talk a lot and avoid asking questions.
- You should get a proactive nudge like: “Consider asking what they think about…”
Fact Checker
- Say something like: “Studies show that 90% of startups fail in the first year.”
- You should get a direct notification with a short fact-check.
Commitment Tracker
- Say things like: “I’ll send you the report by Friday” or “Let me get back to you by tomorrow.”
- End the conversation (so a memory is created).
- You should get a notification listing your commitments.
omi-hackathon/
├── server.py # FastAPI app and webhook routes
├── config.py # Settings and env vars
├── models.py # Pydantic models
├── agents/
│ ├── listening_coach.py
│ ├── commitment.py
│ └── fact_checker.py
├── llm/
│ ├── gemini.py # Gemini API
│ └── perplexity.py # Optional Perplexity API
├── requirements.txt
├── app.py # CLI for direct notifications
└── README.md
| Method | Path | Purpose |
|---|---|---|
| POST | /webhook/realtime |
OMI real-time transcript → Listening Coach + Fact Checker |
| POST | /webhook/memory |
OMI memory created → Commitment Tracker |
| GET | /health |
Health check |
OMI allows one proactive notification per user per app every 30 seconds. The server enforces this and prioritizes: Fact Check → Listening Coach.
Use and modify as needed for the hackathon.