LinkedIn's daily puzzle games are addictive — but one puzzle per day? Not enough. So I built all 6 of them for unlimited practice. Here's how.
The Problem
LinkedIn offers 6 puzzle games: Zip, Patches, Queens, Tango, Pinpoint, and Crossclimb. They're fun, well-designed, and the perfect brain warmup. But there's a catch — you only get one puzzle per day per game.
If you want to practice, improve your times, or just enjoy the puzzles without waiting 24 hours — you're out of luck.
The Solution
I built linkedin-games.manjodh.org — a web app that replicates all 6 LinkedIn games with unlimited algorithmically-generated puzzles.
Every puzzle is guaranteed to be solvable. No daily limit. Free. No sign-up required.
What I Built
The 6 Games
| Game | Type | How It Works |
|---|---|---|
| Zip | Path drawing | Hamiltonian path with Warnsdorff's heuristic |
| Patches | Rectangle filling | Shikaku-style grid partition with backtracking |
| Queens | Queen placement | N-Queens with colored region growing |
| Tango | Binary logic | Takuzu/Binairo with constraint markers |
| Pinpoint | Category guessing | 30 curated puzzle sets with fuzzy matching |
| Crossclimb | Word ladder | 3-phase gameplay: solve, reorder, combo |
Features Beyond LinkedIn
- Unlimited puzzles — play as many as you want
- Multiple difficulty levels — grid sizes from 5x5 to 7x7
- Google sign-in — sync progress across devices via Firebase
- Play history — stats, personal bests, streaks
- Social sharing — share results to LinkedIn and Twitter
- Mobile-first — optimized for phones (90% of expected users)
- How to Play — collapsible rules for each game
The Tech Stack
React 19 + TypeScript + Vite + Tailwind CSS + Firebase
- Vite — fast dev server, sub-200ms builds
- Tailwind CSS v4 — utility-first styling with the Quicksand font (the same stack I use across my full stack projects)
- Firebase — Auth (Google sign-in), Firestore (cloud sync), Analytics
- Lucide — SVG icons for UI controls
- Claude — AI pair programmer for the entire build
The app is a pure static SPA — no server, no database required for guests. Firebase only loads when users sign in (lazy-loaded, cutting bundle from 666KB to 370KB). The same TypeScript patterns I follow across all my projects kept the codebase maintainable at 19,000+ lines.
How the Puzzle Generators Work
The key insight across all grid-based games: generate the solution first, then derive the puzzle from it. This guarantees every puzzle is solvable.
Zip — Hamiltonian Path
The Zip generator uses Warnsdorff's heuristic — a greedy algorithm that visits every cell exactly once:
- Pick a random starting cell
- At each step, move to the unvisited neighbor with the fewest onward moves
- Break ties randomly for variety
- Place walls between non-consecutive adjacent cells
- Place numbered waypoints along the path
Patches — Grid Partition
Patches uses backtracking with random rectangle placement:
- Scan for the first uncovered cell
- Try random valid rectangles that fit
- If stuck, backtrack and try different shapes
- Each rectangle gets a random clue cell with area + shape type
Queens — Region Growing
Queens uses a solution-first approach:
- Place N queens via backtracking (no same row/col, no adjacency)
- Grow contiguous regions from queen seeds using random spreading
- Verify unique solution with a constraint solver
- Assign distinct pastel colors
Tango — Fill-Then-Carve
Tango generates a complete valid board, then carves:
- Fill a 6x6 grid with suns/moons using backtracking
- Place constraint markers (= and x) on cell borders
- Remove cells while maintaining solvability
The Build Process
This project was built in two sessions with Claude as my pair programmer.
Session 1 (~2 hours): Built Zip from scratch — architecture, puzzle engine, game state, UI, Firebase auth, cloud sync, analytics, SEO, edge case fixes. 18 commits.
Session 2 (~3 hours): Researched all 5 remaining games in parallel (4 subagents), wrote technical docs, built all 5 games, wired routing, fixed UI issues. 21 more commits.
The workflow:
- Research game rules and algorithms thoroughly
- Write detailed technical docs before coding
- Build types → generator → validator → hook → UI (same pattern for every game)
- Code review with an audit agent for edge cases
- Fix all critical/high issues before committing
- Repeat for the next game
What I Learned
AI pair programming is real
Claude didn't just autocomplete code — it:
- Planned architecture and made design decisions
- Generated puzzle algorithms from research
- Found and fixed edge cases I would have missed
- Ran code reviews that caught 15+ real bugs
- Wrote comprehensive documentation
Generate-solution-first is the universal pattern
Every grid puzzle generator follows the same philosophy: create a valid solution, then work backwards to create the puzzle. This guarantees solvability by construction and is much simpler than trying to generate puzzles that might or might not be solvable.
Mobile-first isn't optional for games
90% of puzzle game players are on phones. Every design decision — grid sizing, touch targets, viewport constraints — needs to work on a 375px screen first.
Numbers
| Metric | Value |
|---|---|
| Games | 6 |
| Commits | 39 |
| Files | 188 |
| Lines of code | 19,000+ |
| Bundle size | 370 KB |
| Build time | ~200ms |
| Pinpoint puzzles | 30 curated sets |
| Crossclimb puzzles | 12 word ladders |
Try It
Play all 6 games at linkedin-games.manjodh.org.
Read the full build story at linkedin-games.manjodh.org/story.
The code is structured so adding new games follows the exact same pattern — types, generator, validator, hook, UI. If LinkedIn adds a 7th game, I can build it in under an hour.
If you are interested in how I built this portfolio and blog, check out how I built manjodh.org with Next.js and perfect SEO. You can also explore all my projects on my portfolio.