Slide 1 · Title & Hook

GRUDGEBALL

Die. Plant your revenge. Come back to count the bodies at dawn.

Best App with a Hook Best Use of User Contributions Best Use of Retention Mechanics
Speaker notes: Open cold on the board, not on a logo. "This is one Reddit post. Everything red on it was placed and named by another redditor — and every one is counting bodies." Ten seconds, then drop a marble. Don't explain the rules yet; let the death do it.
Slide 2 · The Problem

Reddit games die after one play.

Daily games run out of hand-authored content.

Speaker notes: Frame the real pain for this hackathon: judging is a lone stranger, often on mobile, often alone, opening a live post. Most entries show that stranger an empty room or a one-and-done toy. That is the problem Grudgeball is engineered against.
Slide 3 · The Solution

The players are the content engine.

Yesterday's crowd builds today's board.

DROP

3 marbles/day through a machine of bumpers, fans, magnets, spikes — every object named + attributed to its builder.

PLACE

One object into tomorrow's board: a cruel one earns Menace credit per kill, a kind one earns Angel credit per save.

RETURN

At dawn to a personal Grudge Report: "Your spike 'Greg's Regret' claimed 87 marbles. You are today's #3 Menace."

Speaker notes: Three verbs, one screen, one thumb. The genius isn't the marble physics — it's that spending your marbles earns you the right to leave a mark, and that mark hunts strangers overnight and reports back. That's the loop no amount of content authoring can fake.
Slide 4 · Live Demo Flow (the magic moment)

Watch a stranger's trap claim you.

And watch their score move.

tBeat
0:00Board opens: DAY N · 32 TRAPS · CRUELTY ×2.7, ghost-trails of the dead
0:09Marble dies on "Greg's Regret"312 ticks to 313 bodies claimed → u/gb_founder_greg banks +1 Menace → "You were victim #313"
0:20Marbles spent → dim board, glowing legal cells → PLANT your grudge
0:30Morning Grudge Report: "First Grudge claimed 87 marbles overnight — #3 Menace"

Verified deterministic on the seed: center drop → row 13 → Greg's Regret → score 3510 (13 × 100 × 2.7).

Speaker notes: This is the whole pitch in eight seconds. Land the tick at 0:09 — the number counting up is the "oh." It says: you just became a line in a stranger's kill count, and you watched them profit. Then show that you get to do the same to someone else.
Slide 5 · Architecture & Devvit Tech

100% native Devvit.

Zero external fetch. Zero runtime AI.

src/shared/   pure domain core (types, grid, A* solvability, cruelty, score, day)
src/server/   Hono over Redis + Reddit + scheduler
src/client/   Canvas-2D renderer + deterministic drop sim (React-free)
Speaker notes: Emphasize the transaction — it's the answer to the classic UGC troll-level problem and the reason the moderation plan fits in one paragraph. The compiler re-validates everything as defense-in-depth and is byte-reproducible from seed = hash(day).
Slide 6 · Impact / Why Reddit

Six systems, or one Devvit app.

And you'd still have no crowd.

Speaker notes: Judges penalize on-the-nose Reddit theming. Grudgeball is Reddit-native at the mechanic level, not the skin level: the content is other redditors, attributed by username. That's the distinction that wins the "Reddit-y" criterion honestly.
Slide 7 · Retention & Viability

The strongest return trigger we found:

A personalized overnight consequence — across a 205-idea corpus.

Speaker notes: "Viability" for a Reddit game = does it survive contact with a real subreddit for months. The dual economy and density caps are the long-term health mechanics; the report is the daily habit. Post-hackathon, PaymentsClient is already a verified surface for cosmetic banners.
Slide 8 · Competitive Advantage (vs. a ~1,469 field)

Novel loop, anti-slop by construction.

Speaker notes: Don't claim the marble drop is novel — a judge will call that bluff. Claim the combination is novel and defensible, and that it's engineered to dodge every anti-preference the organizers published. That's a sharper, more credible edge than "we're more fun."
Slide 9 · Traction & Validation

Built, green, and reproducible — today.

235
tests passing, 23 files
60
seeded objects, 12 founders
≤220
hard active-body cap
<30s
all endpoint budgets
Speaker notes: Lead with 235 tests green — for a solo entry that signals real engineering maturity, backed by the CI pipeline. Then the seed determinism: it means the demo can't flake. Be explicit that the numbers are budgets enforced in code, not benchmarked latencies you're hand-waving.
Slide 10 · Roadmap (30 / 60 / 90)

Every item ships on Devvit.

WindowShip
30 daysLive in r/grudgeball_dev with daily cadence; device feel pass (60fps mid-range Android); tune density caps + cruelty curve from real players
60 daysChampion flair banners (verified setUserFlair); weekly "deadliest object" hall of fame; realtime kill-feed polish
90 daysCosmetic economy via PaymentsClient (verified package); seasonal board themes; multi-subreddit installs (schema already siloed per-sub)
Speaker notes: Every roadmap item maps to a Devvit surface that's already verified in the docs-cache (flair, payments, per-sub Redis siloing) — so this is a credible path, not a wishlist. Nothing on it is load-bearing for the submission.
Slide 11 · The Team

One builder, the whole stack.

Speaker notes: The solo angle is a strength here — it demonstrates that the scope was chosen to be finishable at launch grade, which is exactly the "Polish" criterion. Point at docs/friction-log.md as proof the hard toolchain problems were met and documented, not hidden.
Slide 12 · Ask / Close

Play the live post. Die once.

You'll be planning your revenge on the walk home.

Speaker notes: Close on the emotional line, not the tech: "if a spike named after you got your marble, it wasn't personal — it was Grudgeball." Then the CTA is a dare, not a request.
1 / 12 ↩ Landing page