Turn short voice notes into JIRA-ready tickets in under 30 seconds.
- Upload
.wavor.mp3 - Transcribe audio β text (placeholder function)
- Convert text β JIRA ticket fields (title, description, priority) with an LLM (placeholder)
- Copy/paste the ticket into JIRA (direct API push is a future step)
This repo ships with placeholders so you can run it locally without any paid APIs. When ready, swap
transcribe_audio()anddraft_ticket_with_llm()with Whisper/OpenAI/Gemini.
- Python 3.10+
- Streamlit
- pydub, soundfile (optional helpers)
# 1) Create env
python -m venv .venv && source .venv/bin/activate
# 2) Install deps
pip install -r requirements.txt
# 3) (Optional) set environment variables for real APIs later
cp .env.example .env
# then edit .env with your keys
# 4) Run
streamlit run app.pyCreate a .env file:
OPENAI_API_KEY=sk-...
GOOGLE_APPLICATION_CREDENTIALS=/path/to/creds.json
JIRA_BASE_URL=https://your-org.atlassian.net
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=...
src/transcription.pyβ replacetranscribe_audio()with Whisper or GCP Speech-to-Textsrc/ticket_llm.pyβ replacedraft_ticket_with_llm()with OpenAI/Gemini call + promptsrc/jira_format.pyβ adjust output JSON/markdown for your JIRA templatesrc/jira_push.pyβ implement direct JIRA API push (OAuth/API token)
- "Add retry with exponential backoff for payment POST in checkout service. Priority medium. Assign to me."
- "Bug: App crashes when uploading PNG over 10MB on iOS 16. Steps to reproduce... set priority high."
- "Create spike to evaluate PostHog vs Amplitude for product analytics; due next sprint."
- v0.1: Upload β placeholder transcript β placeholder ticket
- v0.2: Whisper + real LLM
- v0.3: JIRA OAuth + push button
- v0.4: Standup mode (split one voice note into multiple tickets)
MIT