Inspiration
My daily workflow was exhausting. Constantly switching between Jira to create tickets, GitHub to track issues, and Slack to notify the team - it felt like I was spending more time on tooling than actual work.
I thought: What if I could just speak what I need and let an AI agent handle the rest?
That's when I decided to build VoiceOps Agent - a context-driven AI agent powered by Elasticsearch that transforms voice commands into real actions. Now I speak, and everything works in seconds.
What it does
VoiceOps Agent lets you speak naturally to automate operations tasks:
"Create a high-priority ticket for the login page freezing on Safari, assign to backend, and notify Slack"
The agent then:
- Extracts intent - Identifies the action, priority, team, and details
- Retrieves context - Searches Elasticsearch for similar tickets and past commands
- Reasons about the best action - Chooses the right project, assignee, and tools based on historical data
- Requests confirmation - Shows its reasoning and asks for approval before executing
- Executes and logs - Creates the Jira ticket, sends Slack notification, and logs everything to Elasticsearch
The result? What used to take 3+ minutes now takes 8 seconds.
How I built it
Backend (FastAPI + Python):
- Elasticsearch for storing tickets, commands, and audit logs
- ES|QL queries for real-time analytics
- Groq LLaMA 3.3 70B for intent extraction and reasoning
- Jira REST API and Slack Webhooks for real integrations
Frontend (React + TypeScript):
- Voice recording with Web Audio API
- Real-time pipeline visualization showing agent reasoning
- ES|QL Explorer for live query execution
- Impact dashboard showing time saved
Elasticsearch Agent Builder:
- Multi-step workflows with tool orchestration
- Context retrieval using semantic search
- Full audit logging for compliance
Challenges I ran into
1. Balancing autonomy with safety I didn't want the agent to blindly execute actions. I implemented a confirmation flow where users review the agent's reasoning before approving execution.
2. Handling voice transcription errors Speech-to-text isn't perfect. I built fuzzy matching and context-aware intent extraction to handle variations and errors gracefully.
3. ES|QL syntax learning curve Some ES|QL functions work differently than expected. For example, DATE_FORMAT vs DATE_TRUNC for time-series grouping required debugging.
Accomplishments that I'm proud of
- 22x faster ticket creation (3 minutes → 8 seconds)
- Real integrations - actual Jira tickets and Slack notifications
- ES|QL Explorer - live queries against Elasticsearch
- Full audit trail - every action logged with reasoning
- Context-driven decisions - agent uses historical data, not just prompts
What I learned
- ES|QL is incredibly powerful for real-time analytics
- Multi-step agents need transparency - showing reasoning builds trust
- Elasticsearch's search relevance works surprisingly well out-of-the-box
- Voice interfaces need confirmation flows for safety
What's next for VoiceOps Agent
- GitLab integration - create issues and link to merge requests
- Multi-agent architecture - separate planning, execution, and review agents
- Mobile app - voice commands on the go
Built With
- api
- elasticsearch
- es|ql
- fastapi
- groq
- jira
- llama
- lucide
- python
- react
- render
- slack
- typescript
- vite
Log in or sign up for Devpost to join the conversation.