Spaces:
Sleeping
title: Smart Sprint Planner
emoji: 🗂️
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
Smart Sprint Planner
Real-world OpenEnv environment for agile sprint planning and dynamic replanning.
Core pipeline:
audio or transcript -> extraction -> JIRA-style tickets -> developer assignments -> dynamic disruptions -> reward and grading
This repository is aligned to the Round 1 competition requirements captured in context_scaler.txt.
Environment Summary
The environment simulates a real planning workflow an engineering manager, scrum lead, or delivery lead would actually perform:
- convert planning discussion into structured tasks
- assign work under team capacity constraints
- respond to urgent work, capacity loss, and dependency changes
- maximize completion, timeliness, workload balance, and adaptability
This is intended as a real-world planning and replanning environment, not a toy game.
Tasks And Difficulty
There are 3 graded tasks:
easyStatic sprint planning. Fixed backlog, fixed capacity, fixed deadlines.mediumOne disruption event. Usually urgent work or a developer capacity loss.hardMultiple disruptions over time. New work, dependency shifts, and changing capacity.
Difficulty represents volatility, not just more tickets.
Project Flow
- env/transcription.py Handles audio-to-text or accepts provided transcript text.
- env/extraction.py Extracts structured work items with an LLM or deterministic fallback logic.
- env/jira.py Converts extracted items into JIRA-style sprint tickets.
- env/environment.py
Implements
reset(),step(), andstate()with dynamic event handling. - env/graders.py
Computes dense rewards and final deterministic grading in
[0.0, 1.0]. - planner.py Runs the full end-to-end pipeline and returns assignment recommendations.
Observation And Action Space
Observation includes:
- meeting text
- extracted work items
- active JIRA tickets
- developer pool
- completed task ids
- sprint day
- metrics and event history
- pending and recent disruption signals
Action is one assignment:
{
"task_id": "T001",
"developer_id": "D1"
}
Extraction Schema
Each extracted item can include:
taskdescriptiondeadlineprioritycategorytagsacceptance_criteriadependency_hintsowner_hinturgency_reasonraw_text
LLM extraction uses the OpenAI client when credentials are available. Otherwise the system uses a deterministic rule-based fallback for offline reproducibility.
Reward And Grading
Dense step rewards include:
- on-time completion
- specialization or skill-match reward
- priority-aware completion reward
- penalties for invalid, blocked, and over-capacity actions
- adaptation reward for disruption-created work
- future-feasibility shaping for preserving replanning options
Final grading combines:
- completion rate
- on-time rate
- extraction quality
- workload balance
- efficiency
- adaptability
All final scores are normalized to [0.0, 1.0].
Baseline Inference
The required root-level baseline script is inference.py.
It:
- uses the OpenAI client for LLM calls
- reads
API_BASE_URL,MODEL_NAME, andHF_TOKEN - also supports
OPENAI_API_KEYlocally - falls back deterministically when no key is configured
- emits strict competition stdout lines:
[START][STEP][END]
Run one task:
python inference.py medium
Run all tasks:
python inference.py --all
Current local reproducible baseline from python inference.py --all:
easy:0.83medium:0.73hard:0.76
These are the submission-safe heuristic fallback scores in the current environment.
Learned Planner
The learned planner is trained separately and is not required for the baseline script.
Current held-out dataset-eval comparison for the strongest checkpoint:
- Heuristic:
0.893 - DDQN:
0.897
On the richer held-out split, the learned DDQN now slightly outperforms the heuristic overall and on hard.
Train:
python train.py --episodes 400
Evaluate:
python eval.py --checkpoint checkpoints/best --scenario-source dataset-eval
Full Pipeline
The full product-facing path is exposed through planner.py and POST /plan.
Run locally from transcript:
python planner.py --transcript "Fix the checkout bug today, then finish analytics after auth." --difficulty medium --strategy auto
auto prefers the trained DDQN checkpoint when checkpoints/best exists, and falls back to heuristic otherwise.
API Server
Start the server:
uvicorn server.app:app --reload --port 7860
Endpoints:
GET /healthPOST /resetPOST /stepGET /stateGET /renderGET /gradePOST /plan
Setup
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Windows:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Validation And Tests
Run tests:
pytest tests -v
Run OpenEnv validation:
.\whisper_env\Scripts\openenv.exe validate
Current local status:
25tests passingopenenv validatepreviously passing in the project environment- baseline inference reproducing all 3 tasks
Docker
Build:
docker build -t smart-sprint-planner .
Run:
docker run -p 7860:7860 smart-sprint-planner
Metadata
Environment metadata lives in openenv.yaml.
Before final submission, the remaining non-code checklist is:
- verify Docker builds on the target machine
- verify the Hugging Face Space responds with
200 - keep the root
inference.pyoutput unchanged - submit with
checkpoints/bestincluded if you wantautoto use DDQN