--- name: prize-strategy description: Picks which prize category a hackathon project should chase and how to position the demo around that prizes judging criteria. Use at the start of the build phase once the demo_goal is stable and at least 4 hours remain. when_to_use: | Trigger when the user says what prize should we target, which track should we go for, judges care about X, or right after scope-knife produces a KEEP list. Do not invoke before scope-knife (no KEEPs yet) or in the final hour (too late to reposition). version: 1.0 category: scoping tags: ['prize', 'strategy', 'positioning', 'judges'] dependencies: ['scope-knife'] side_effects: ['prize'] triggers: - 'what prize should we target' - 'which track should we go for' - 'how do we position for X prize' - 'what do judges want' - 'which prize category' allowed_tools: [Read, Write] capabilities: [fs_read, fs_write] --- # prize-strategy Most hackathon submissions that lose do not lose because of code; they lose because the team did not consciously pick a prize and did not frame their demo for the judges that award it. This skill forces that decision. ## Input contract Required: - `prizes`: list of `{name, criteria: list[str], weight: int}` from the hackathon page (e.g. overall, ai-use, sustainability, newcomer). - `project`: `{demo_goal: str, features: list[str], stack: list[str]}` from `.hackathon/state/plan.json`. - `team_skills`: list of strings (e.g. python, react, llm). Optional: - `time_remaining_minutes`: integer >= 0 (default 240). - `target_demo_minutes`: integer (default 3). - `previous_prizes`: list of prize names the team has won before (default empty). ## Execution ### 1. Score every prize For each prize, compute: `fit_score = 0.45 * criteria_overlap + 0.30 * demo_goal_match + 0.15 * stack_match + 0.10 * team_fit` Where: - `criteria_overlap` = fraction of prize.criteria words that appear in demo_goal or features (case-insensitive). - `demo_goal_match` = fraction of demo_goal words that appear in prize.criteria. - `stack_match` = 1 if any stack element matches any criteria word, 0 otherwise. - `team_fit` = bonus if team_skills contains common winning tools for the prize (LLMs/transformers for ai-use, etc.). ### 2. Rank and emit target The highest fit_score wins. Emit a one-line rationale citing the top 3 scoring features and the time needed to reposition. ### 3. Emit positioning notes For the target prize, list 3-5 things to do in the next 30 minutes that maximize the judges perception: - What to say in the first 10 seconds (opening hook). - Which feature to demo first. - Which technical detail to mention for this prizes judges. - Which line of the README to highlight. ### 4. Emit anti-targets For the bottom 1-2 prizes, name them and explain why they are a bad fit (so the team is not tempted by their prize pool). ## Output contract Files written: - `.hackathon/state/prize.json` (NEW schema, see `src/state/schemas/prize.schema.json`) - `.hackathon/artifacts/prize-strategy.md` (human-readable positioning doc) ## Acceptance criteria - [ ] Exactly one `target_prize` is named. - [ ] `target_prize.fit_score` is the highest among all prizes. - [ ] Positioning notes include at least 3 concrete actions. - [ ] Anti-targets are named with one reason each. - [ ] Score per prize is reproducible (deterministic, no RNG). ## Failure modes | Mode | Behavior | | ----------------------------- | ----------------------------------------------------------------------- | | `prizes` empty | Refuse; ask the user for the hackathon page URL or copy the prize list. | | `demo_goal` empty | Refuse; run idea-clarify or scope-knife first. | | All prizes tie at fit_score 0 | Default to the prize with the largest `weight`. | ## Trigger phrases (for agent intent matching) - "what prize should we target" - "which track should we go for" - "how do we position for X prize" - "what do judges want" - "which prize category" ## Helper The skill ships `scripts/target.py` (Python stdlib only) which implements the fit_score algorithm above end-to-end and writes both `prize.json` and `prize-strategy.md`. Run it with: python3 skills/prize-strategy/scripts/target.py --prizes prizes.json --project plan.json --team-skills python,react --out-dir .hackathon where `prizes.json` is the list of `{name, criteria, weight}` entries.