--- 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](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/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: - `easy` Static sprint planning. Fixed backlog, fixed capacity, fixed deadlines. - `medium` One disruption event. Usually urgent work or a developer capacity loss. - `hard` Multiple disruptions over time. New work, dependency shifts, and changing capacity. Difficulty represents volatility, not just more tickets. ## Project Flow 1. [env/transcription.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/transcription.py) Handles audio-to-text or accepts provided transcript text. 2. [env/extraction.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/extraction.py) Extracts structured work items with an LLM or deterministic fallback logic. 3. [env/jira.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/jira.py) Converts extracted items into JIRA-style sprint tickets. 4. [env/environment.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/environment.py) Implements `reset()`, `step()`, and `state()` with dynamic event handling. 5. [env/graders.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/graders.py) Computes dense rewards and final deterministic grading in `[0.0, 1.0]`. 6. [planner.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/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: ```json { "task_id": "T001", "developer_id": "D1" } ``` ## Extraction Schema Each extracted item can include: - `task` - `description` - `deadline` - `priority` - `category` - `tags` - `acceptance_criteria` - `dependency_hints` - `owner_hint` - `urgency_reason` - `raw_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](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/inference.py). It: - uses the OpenAI client for LLM calls - reads `API_BASE_URL`, `MODEL_NAME`, and `HF_TOKEN` - also supports `OPENAI_API_KEY` locally - falls back deterministically when no key is configured - emits strict competition stdout lines: - `[START]` - `[STEP]` - `[END]` Run one task: ```bash python inference.py medium ``` Run all tasks: ```bash python inference.py --all ``` Current local reproducible baseline from `python inference.py --all`: - `easy`: `0.83` - `medium`: `0.73` - `hard`: `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. - training entrypoint: [train.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/train.py) - evaluation entrypoint: [eval.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/eval.py) - strongest checkpoint: `checkpoints/best` 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: ```bash python train.py --episodes 400 ``` Evaluate: ```bash python eval.py --checkpoint checkpoints/best --scenario-source dataset-eval ``` ## Full Pipeline The full product-facing path is exposed through [planner.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/planner.py) and `POST /plan`. Run locally from transcript: ```bash 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: ```bash uvicorn server.app:app --reload --port 7860 ``` Endpoints: - `GET /health` - `POST /reset` - `POST /step` - `GET /state` - `GET /render` - `GET /grade` - `POST /plan` ## Setup ```bash python -m venv venv source venv/bin/activate pip install -r requirements.txt ``` Windows: ```powershell python -m venv venv venv\Scripts\activate pip install -r requirements.txt ``` ## Validation And Tests Run tests: ```bash pytest tests -v ``` Run OpenEnv validation: ```powershell .\whisper_env\Scripts\openenv.exe validate ``` Current local status: - `25` tests passing - `openenv validate` previously passing in the project environment - baseline inference reproducing all 3 tasks ## Docker Build: ```bash docker build -t smart-sprint-planner . ``` Run: ```bash docker run -p 7860:7860 smart-sprint-planner ``` ## Metadata Environment metadata lives in [openenv.yaml](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/openenv.yaml). Before final submission, the remaining non-code checklist is: 1. verify Docker builds on the target machine 2. verify the Hugging Face Space responds with `200` 3. keep the root `inference.py` output unchanged 4. submit with `checkpoints/best` included if you want `auto` to use DDQN