Inspiration
Every PM we talked to described the same weekly ritual: hours of listening to call recordings, reading support emails, copying
notes into Jira, deciding what was urgent enough to escalate. Engineers waited. Roadmaps went stale. Churn risks sat in inboxes
over weekends. The information existed — it just wasn't moving fast enough. We built Signal to make that loop instant and
automatic.
## What it does
Signal is an autonomous agent that listens to customer signals — emails and recorded calls — and takes engineering action across your entire toolstack without any human in the loop.
- A customer emails about a bug → Jira ticket created, Slack alerted, auto-reply drafted and sent
- A call recording is uploaded → transcribed, classified, cross-referenced against every past signal, actions routed by urgency
and frequency
- Five customers mention the same missing feature → Notion roadmap item promoted to P1 automatically
- A churn risk detected → #cs-team pinged immediately, CEO digest flagged
- Every morning the CEO gets a digest: top signals, patterns, actions taken — no meeting required
## How we built it
Backend (Python / FastAPI)
- Gemini 2.5 Flash for multimodal processing — transcribes audio and classifies the signal in a single call, eliminating the Whisper + GPT-4o round trip
- GPT-4o as fallback classifier and for drafting customer reply emails
- Railtracks for agent orchestration — every pipeline stage is a function node wired into a typed DAG
- Senso.ai as the memory and knowledge layer — every processed signal is ingested, enabling semantic search for frequency
detection and CEO digest generation
- Gmail IMAP poller watches the inbox every 30 seconds and feeds emails directly into the pipeline
- Jira, Notion, Slack integrations with real API calls and deduplication logic
Frontend (Next.js / assistant-ui)
- Two-panel layout: left panel is a chat interface for natural language questions answered from the Senso knowledge base, right panel is a live activity feed
- SSE stream pushes every pipeline stage event to the frontend in real time — you watch the agent think and act
Auth: Unkey API key verification middleware on all routes
## Challenges we ran into
- Senso has no REST API — it only works via the
@senso-ai/clinpm package. We had to build a subprocess wrapper in Python to call the CLI from the backend, handle async output, and parse results reliably. - Email encoding — real-world Gmail headers arrive in
unknown-8bitencoding that Python's email library refuses to decode. We had to write a custom header decoder with graceful fallback to get reliable parsing across all senders. - Gemini multimodal integration — threading raw audio bytes through a base64 pipeline into the Gemini 2.5 Flash API in a
single call, while maintaining fallback to the two-step Whisper + GPT-4o path, required careful conditional routing in the
pipeline. - SSE + async coordination — wiring a synchronous
broadcast()callback through an async FastAPI SSE stream without
blocking the pipeline required an asyncio queue pattern we had to get right under time pressure.
## Accomplishments that we're proud of
- End-to-end autonomy is real — upload one audio file and a Jira ticket actually appears, a Slack message actually lands, a Notion page actually updates. No mock data in the demo.
- Gemini 2.5 Flash in a single multimodal call — replacing two sequential API calls with one dramatically cut latency and
simplified the pipeline
- Gmail inbox → pipeline — the email poller runs live, pulling real unread emails and processing them automatically every 30
seconds
- Frequency intelligence — Signal doesn't just process individual signals in isolation; it searches memory and boosts
urgency when multiple customers report the same thing, which is the core insight that makes the routing decisions feel
intelligent
## What we learned
- Multimodal models collapse complexity that used to require multiple specialist models and coordination logic — the Gemini
single-call approach was a genuine architectural simplification, not just a performance win - Memory is what separates a classifier from an agent — without Senso, every signal is treated as if it's the first; with it,
the system knows "this is the fifth customer this month" - Real integrations reveal edge cases that mocks hide completely — email encodings, API auth quirks, Jira's nested Atlassian
Document Format all only appeared when hitting real systems
## What's next for Signal
- Linear and GitHub Issues support alongside Jira
- Bi-directional memory — when a Jira ticket is closed, Signal ingests the resolution and uses it to auto-reply future
customers with the same issue
- Proactive outreach — identify churn risks before they email you, based on usage pattern signals
- Multi-tenant SaaS — one Signal instance per company, isolated knowledge bases, per-seat pricing via Unkey
- Voice-first CEO digest — generate a 60-second audio summary delivered to your phone every morning
Github link - https://github.com/Hackathon-28March/signal
Shipables link - https://codeables.dev/skills/bmk15897/signal
Built With
- 2.5
- api
- app
- assistant-ui
- digitalocean
- events
- fastapi
- flash
- gemini
- gmail
- gpt-4o
- imap/smtp
- jira
- next.js
- notion
- platform
- python
- railtracks
- senso.ai
- server-sent
- slack
- typescript
- unkey
- webhooks
- whisper
Log in or sign up for Devpost to join the conversation.