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:

  1. Extracts intent - Identifies the action, priority, team, and details
  2. Retrieves context - Searches Elasticsearch for similar tickets and past commands
  3. Reasons about the best action - Chooses the right project, assignee, and tools based on historical data
  4. Requests confirmation - Shows its reasoning and asks for approval before executing
  5. 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

Share this project:

Updates