Production-ready Voice-to-Ticket Incident Platform
Japanese Voice Capture โข AI Transcription & Translation โข Smart Ticket Generation โข Deterministic Dev Assignment
Live Demo โข Features โข Quick Start โข Tech Stack
TechFixAI is a production-grade incident management platform that bridges the language gap in Japanese software teams. It captures voice-recorded incident reports in Japanese, transcribes and translates them using Groq Whisper with technical context awareness, and automatically generates structured support tickets โ all in one seamless background pipeline.
The platform goes beyond simple transcription. After a voice report is submitted, TechFixAI deterministically assigns the right developer based on incident type and severity โ no random shuffling, no manual triage. Built on FastAPI with SQLAlchemy and Jinja2-rendered pages, it supports SQLite locally and PostgreSQL in production.
TechFixAI ships production-ready: full auth with Google OAuth, rate limiting, CAPTCHA, security headers, structured logging, Sentry integration, and Prometheus metrics โ all configured and ready to deploy.
- โ Voice upload pipeline โ Audio โ STT โ Translation โ Ticket โ Assignment as a background task
- โ Japanese-to-English translation with technical context awareness
- โ Deterministic developer assignment by incident type and severity
- โ Chat voice helper โ transcribe and translate without creating a ticket
- โ Full auth system โ email/password + Google OAuth + secure session cookies
- โ CAPTCHA support on login and signup (Cloudflare Turnstile style)
- โ Granular rate limiting for global traffic, auth, uploads, and translation
- โ Admin dashboard with aggregated stats, conversations, and developer metrics
- โ Health and Prometheus metrics endpoints
- โ Structured logging with request IDs and sensitive value redaction
- โ Security headers, HTTPS enforcement, CORS validation, brute-force lockout
- โ Optional Sentry integration for error tracking and tracing
- FastAPI โ Core web framework and API routing
- SQLAlchemy โ ORM and database abstraction
- Starlette โ Middleware (request ID, security headers, rate limiting)
- Jinja2 โ Server-rendered HTML templates
- Uvicorn โ ASGI server
- SQLite โ Local development default
- PostgreSQL โ Production via
DATABASE_URL
- Groq Whisper โ Primary speech-to-text transcription
- OpenAI โ Optional fallback
- Gemini โ Optional fallback
- Render โ Deployment target
- Google OAuth 2.0 โ Social login
- Sentry โ Optional error tracking and tracing
- Prometheus โ Optional metrics scraping
TechFixAI/
โโโ app/
โ โโโ main.py # App entry point, route registration
โ โโโ models/ # SQLAlchemy models
โ โโโ routes/
โ โ โโโ auth.py # Login, signup, logout, Google OAuth
โ โ โโโ voice.py # Voice upload, chat-transcribe, status
โ โ โโโ tickets.py # Ticket CRUD and status management
โ โ โโโ admin.py # Dashboard, conversations, developers
โ โ โโโ pages.py # Jinja2 page routes
โ โโโ services/
โ โ โโโ stt.py # Groq Whisper STT integration
โ โ โโโ translation.py # Technical-context translation
โ โ โโโ ticket_generator.py # Ticket structuring logic
โ โ โโโ assignment.py # Deterministic developer assignment
โ โโโ middleware/
โ โ โโโ rate_limit.py # Route-specific rate limiters
โ โ โโโ request_id.py # Request ID injection
โ โ โโโ security.py # Security headers, HTTPS enforcement
โ โโโ templates/ # Jinja2 HTML templates
โ โ โโโ login.html
โ โ โโโ signup.html
โ โ โโโ upload.html
โ โ โโโ dashboard.html
โ โ โโโ tickets.html
โ โ โโโ developers.html
โ โโโ config.py # Settings and env variable validation
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml
โ โโโ secret-hygiene.yml
โ โโโ uptime-checks.yml
โโโ requirements.txt
โโโ README.md
# Clone the repository
git clone https://github.com/LegendarySumit/TechFixAI.git
cd TechFixAI
# Create and activate virtual environment
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the development server
uvicorn app.main:app --reloadOpen โ http://127.0.0.1:8000
SECRET_KEY=your_secret_key
DATABASE_URL=postgresql://...
CORS_ORIGINS=https://your-frontend.vercel.appPUBLIC_DEPLOYMENT=true
FORCE_HTTPS=true
SESSION_COOKIE_SECURE=true
APP_BASE_URL=https://your-backend-domain.onrender.com
ADMIN_EMAILS=[email protected],[email protected]GROQ_API_KEY=your_groq_key # Required
OPENAI_API_KEY=your_openai_key # Optional fallback
GEMINI_API_KEY=your_gemini_key # Optional fallbackGOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REDIRECT_URI=https://your-backend-domain.onrender.com/auth/google/callbackSMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=[email protected]
SMTP_PASSWORD=your_password
FROM_EMAIL=[email protected]
โ ๏ธ APP_BASE_URLmust point to the backend URL.CORS_ORIGINSmust contain frontend origin(s). No trailing slashes.
- Create a Neon Postgres project and copy the pooled connection string.
- In Render, create a new Web Service from this repository.
- Keep these commands:
- Build:
pip install -r requirements.txt - Start:
uvicorn app.main:app --host 0.0.0.0 --port $PORT --proxy-headers --forwarded-allow-ips=*
- Build:
- Set
DATABASE_URLin Render using your Neon connection string. - Set required env vars in Render:
SECRET_KEY,APP_BASE_URL,CORS_ORIGINS,GROQ_API_KEY(plus OAuth/SMTP if used). - Set health check path to
/health.
Example Neon URL format:
DATABASE_URL=postgresql://<user>:<password>@<neon-host>/<db>?sslmode=requireThis repository now includes a Render blueprint at render.yaml for backend-only deployment.
- Sign up or log in at
/signupor/loginโ Google OAuth available - Upload a voice report at
/uploadโ select a Japanese audio file and submit - The pipeline runs in the background: transcription โ translation โ ticket โ assignment
- Track tickets at
/ticketsโ click any ticket for full detail - Chat transcription โ use the voice helper to transcribe without creating a ticket
- Admin dashboard at
/dashboardโ stats, developer workload, conversation logs
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/voice/upload |
Upload audio, start pipeline |
POST |
/api/voice/chat-transcribe |
STT + translation only, no ticket |
GET |
/api/voice/status/{conversation_id} |
Poll processing status |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tickets |
List tickets with filters |
GET |
/api/tickets/{ticket_number} |
Ticket detail |
PATCH |
/api/tickets/{ticket_number}/status |
Update status (admin) |
DELETE |
/api/tickets/{ticket_number} |
Delete ticket (owner or admin) |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/admin/dashboard |
Aggregated stats (auth required) |
GET |
/api/admin/conversations |
Conversation list (auth required) |
GET |
/api/admin/developers |
Developer stats (auth required) |
| Method | Endpoint | Description |
|---|---|---|
GET |
/auth/google |
Initiate Google OAuth |
GET |
/auth/google/callback |
OAuth callback |
GET |
/health |
Health check (200 healthy, 503 degraded) |
GET |
/metrics |
Prometheus metrics (when enabled) |
Assignment is fully rule-based โ no randomness:
- Backend/infrastructure + high or critical โ Backend team
- Frontend/UI incident โ Frontend team
- Database + high or critical โ Backend team
- Fallback โ Least loaded developer
Startup fails during settings load?
- Verify
CORS_ORIGINSis not empty and uses a valid format - Ensure
APP_BASE_URLpoints to the backend domain, not the frontend - Confirm
DATABASE_URLis a valid PostgreSQL connection string
Voice upload not processing?
- Check that
GROQ_API_KEYis set and valid - Poll
/api/voice/status/{conversation_id}for pipeline progress
Google OAuth failing?
- Ensure
GOOGLE_REDIRECT_URImatches exactly what's registered in Google Cloud Console
- Multi-language support beyond Japanese
- Slack / Teams notifications on ticket creation
- SLA tracking and breach alerts
- ML-based developer assignment
- Mobile app for on-the-go voice reporting
- Webhook support for external integrations
- Role-based access control (RBAC) for teams
This project is licensed under a Proprietary All Rights Reserved License. See the LICENSE file for details.
LegendarySumit
- GitHub: @LegendarySumit
- Project: TechFixAI
- Live Demo: https://techfixai.onrender.com/
๐๏ธ From voice to resolved โ no translation lost.
TechFixAI ยท Built for Japanese engineering teams
โญ Star this repo if you find it helpful!