A production-quality OpenEnv RL environment for optimizing customer support ticket routing and resolution.
Customer support teams waste millions annually on inefficient operations:
- 30% of tickets routed to wrong department
- Manual prioritization leads to inconsistencies
- No learning from past resolutions
- CSAT scores suffer
This RL environment enables agents to learn optimal routing, prioritization, and response strategies.
- โ Real-World Task: Not a game, but actual customer support workflow
- โ Dense Rewards: Every decision gets immediate feedback
- โ 3 Progressive Tasks: Easy โ Medium โ Hard
- โ Deterministic Grading: Reproducible evaluation
- โ OpenEnv Compliant: Full specification included
- โ FREE LLM Integration: Uses Groq (no cost!)
- โ Production Ready: Docker + Hugging Face Spaces support
{
"ticket_id": str, # Unique ID
"category": str, # billing|technical|account|general
"sentiment": str, # negative|neutral|positive
"message_length": int, # 50-500 words
"customer_tenure_days": int, # 1-3650 days
"previous_tickets": int, # 0-100
"has_attachments": bool, # File attachments?
"urgency_flag": bool, # Customer marked urgent?
"estimated_complexity": float # 0.0-1.0 complexity
}{
"target_tier": str, # tier_1|tier_2|specialist|escalation
"priority": str, # low|medium|high|critical
"suggested_template": str, # Optional response template
"estimated_resolution_time_minutes": int # 5-240 minutes
}Total Reward = 0.25*routing + 0.15*priority + 0.25*efficiency + 0.30*satisfaction + 0.05*escalation
Range: [-1.0, 1.0]
| Task | Difficulty | Episodes | Episodes | Success Criteria |
|---|---|---|---|---|
| Basic Tier Routing | Easy | 50 | 20 | Routing accuracy โฅ 70% |
| Balanced Optimization | Medium | 100 | 50 | Avg reward โฅ 0.65 |
| Full System Opt | Hard | 150 | 100 | Avg reward โฅ 0.75 |
# Clone repository
git clone https://github.com/YOUR_USERNAME/ticket-router-env.git
cd ticket-router-env
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt-
Get Groq API Key (FREE):
- Go to: https://console.groq.com/keys
- Create API key
- Copy key (starts with
gsk_)
-
Create
.envfile:GROQ_API_KEY=gsk_your-key-here -
Run:
python main.py
============================================================
TicketRouterEnv Baseline Agent (GROQ - FREE & FAST)
============================================================
โ Groq API initialized (FREE)
Task: Basic Tier Routing (easy)
Episode 10/50: 0.718
Episode 20/50: 0.752
...
[RUN 1] Final Score: 0.798
============================================================
RESULTS
============================================================
EASY | Score: 0.798 | โ PASS
MEDIUM | Score: 0.672 | โ PASS
HARD | Score: 0.763 | โ PASS
API Calls: 234
Total Tokens: 18456
Estimated Cost: $0.00 ๐ FREE!
ticket-router-env/
โโโ .env.example # Example environment variables
โโโ .gitignore
โโโ README.md # This file
โโโ requirements.txt # Python dependencies
โโโ Dockerfile # Docker containerization
โโโ openenv.yaml # OpenEnv specification
โโโ main.py # Entry point
โโโ app/
โ โโโ __init__.py
โ โโโ env.py # Main environment
โ โโโ models.py # Pydantic models
โ โโโ tasks.py # Task definitions
โ โโโ grader.py # Grading logic
โ โโโ run_agent.py # Baseline agent (Groq)
โโโ docs/
โโโ ARCHITECTURE.md
โโโ API_REFERENCE.md
from app.env import TicketRouterEnv, RoutingDecision
# Create environment
env = TicketRouterEnv()
state = env.reset()
# Make decision
action = RoutingDecision(
target_tier="tier_2",
priority="high",
estimated_resolution_time_minutes=45
)
# Step
next_state, reward, done = env.step(action)
print(f"Total Reward: {reward.total_reward:.3f}")from app.tasks import TicketRouterTasks
from app.grader import TicketRouterGrader
env = TicketRouterEnv()
task = TicketRouterTasks.EASY
grader = TicketRouterGrader(task)
for episode in range(task.num_episodes):
state = env.reset()
for step in range(task.max_steps):
action = my_agent.select_action(state)
state, reward, done = env.step(action)
my_agent.learn(reward)
if done:
breakdocker build -t ticket-router-env .
docker run --env GROQ_API_KEY=gsk_... ticket-router-env- Create space at: https://huggingface.co/new-space
- Select Docker SDK
- Clone space and push files
- Add
GROQ_API_KEYas secret - Access at:
https://huggingface.co/spaces/USERNAME/ticket-router-env
Model: Mixtral-8x7b-32768 (Groq) Cost: $0.00 (FREE!)
| Task | Score | Status |
|---|---|---|
| Easy | 0.798 | โ PASS |
| Medium | 0.672 | โ PASS |
| Hard | 0.763 | โ PASS |
- Environment generates random tickets
- Agent observes ticket and system state
- Agent makes routing/priority decision
- Environment simulates resolution
- Reward is computed based on quality
- Grader evaluates performance
- ๐ Call Center Optimization: Route calls to best agents
- ๐ง Email Triage: Prioritize incoming support tickets
- ๐ฌ Live Chat: Queue management and agent assignment
- ๐ค Chatbot Integration: When to escalate to human
- ๐ Workforce Planning: Predict staffing needs
- Multi-agent simulation (concurrent tickets)
- Dialogue management for response generation
- Long-horizon planning (ticket tracking)
- Customer satisfaction modeling
- Real company data integration
- Online learning capabilities
- Performance benchmarking suite
MIT License - See LICENSE for details
- Issues: Open GitHub issue
- Discussions: GitHub Discussions
- Email: anandvaidya46@gmail.com
โญ If you find this useful, please star the repo!