Challenge
Klued needed to feel like a quick daily game on the surface while handling the harder system work underneath: reliable puzzle generation, dated publishing, responsive solving, progress persistence, and repeatable template management.
Approach
The work was organized around a few practical decisions that kept the product direction clear.
- Separated the public play loop from the generation pipeline so players get a simple dated puzzle experience while daily publishing runs through server-side jobs and cache revalidation.
- Built the crossword interaction model around fast solving: smart direction selection, keyboard shortcuts, mobile controls, date navigation, helper actions, and a completion modal with streak context.
- Added persistence paths for anonymous local progress and authenticated remote progress so users can start without an account but still keep history when they sign in.
- Created a template studio and benchmarking flow to manage reusable grid patterns and prefer layouts that generate reliably.
Outcome
Shipped a live daily crossword experience with dated puzzle routes, mobile and desktop solving, progress/streak infrastructure, and a generation system that can support daily publication.
Player experience
Klued is designed to get someone from the homepage into a playable puzzle quickly. The public flow supports no-sign-in play, dated puzzle routes, previous/next date navigation, a start gate, a running timer, keyboard shortcuts, error checking, hints, reveals, and completion feedback.
- Daily puzzle routes use date keys so each puzzle has a stable URL and metadata.
- React Query prefetches neighboring dates so browsing previous and next puzzles feels responsive.
- The solving UI adapts between a full desktop clue panel and a compact mobile layout.
Generation system
The publishing side is built around a server-only crossword engine rather than hand-authored static puzzles. Daily generation chooses formats from the date difficulty, races seeds against time budgets, uses benchmarked templates when available, fills from quality-scored word candidates, rewrites clues through an AI-assisted validation pass, and revalidates cached puzzle routes after successful writes.
- Vercel Cron calls the protected daily route with a shared secret.
- Supabase stores daily puzzles, templates, progress, streaks, and play-start counts under the Klued schema.
- Word quality scoring combines crossword frequency with English usage signals to avoid low-quality fill.
Template tooling
Klued includes an internal template studio for creating reusable grid patterns. The tool supports adjustable grid dimensions, black-square editing, crossword numbering, duplicate detection across rotated forms, template deletion, and benchmark stats so generation can prefer layouts that fill quickly and reliably.
Persistence and growth
The product keeps the first session lightweight while leaving a path for retention. Anonymous users get local progress, signed-in users can sync remote progress through Supabase RPCs, and completions can update streak state. Puzzle-start tracking also gives the homepage a simple public usage signal.
Proof points
The screenshots show the public entry point, the start gate, the responsive solving surface, and the system flow that turns generated puzzles into dated daily play. The next useful asset is a short solve-through video showing start, clue selection, keyboard input, helper controls, and completion feedback.





