# unique.rzen.dev A daily product-discovery site (Astro, static). The editorial pipeline is skill-driven and designed to run unattended. ## Pipeline - `/daily-pipeline` — the whole daily chain: capture → bundle → reviews (several per run, judgment call) → pick of the day (explicit decision every run) → build → commit → push → digest. This is the entrypoint for scheduled/headless runs; scheduled runs auto-deploy afterwards via the lab CI `publish-unique-daily` job. - `/daily-finds` — capture-only sweep of `sources.json`; writes `src/content/find////`, marks the day's shortlist (`shortlist: true`, up to 12), adds `amazonLink` for confidently-matched physical products, and applies mechanical source maintenance. - `/build-bundle [auto|weekly||]` — one themed roundup referencing find slugs. `weekly` = date-based catch of unbundled shortlist finds. - `/cluster-bundles [auto]` — batch-cluster the backlog into 4–7 bundles. - `/build-review [auto]` — graduate a find to a full review (fact-check against the product's own site is mandatory in auto mode). Unattended runs never pause for confirmation — they publish, log to `daily-finds.log.md`, and report a digest; the user vetoes after the fact. Only two things stay user-only: vetting `candidate-sources.md` nominees into `sources.json`, and scheduling. ## Conventions that bite - **`EDITORIAL.md` is the voice charter** — concise, to the point, inspiring delight (through specificity, never ad copy); word budgets per copy type. All audience-facing prose follows it; the pipeline runs a fresh-eyes copy-edit stage over each day's new copy. - **No tobacco or alcohol content** — hard editorial exclusion at every stage: never captured as finds, never selected into new bundles, never graduated to reviews. A few legacy alcohol finds (May–July 2026) stay published and keep their existing bundle spots, but they're ineligible for anything new. - **No camping equipment as pick of the day** — camper trailers and other camping gear are fine as finds and occasional reviews, but never take the homepage hero. - **Editorial rules are forward-looking** — what's published stays published; new exclusions apply only to future picks/finds/bundles/reviews, never to retroactive edits or unpublishing. - Review heroes are auto-discovered from `src/content/reviews//hero.` (`src/lib/hero.ts` glob) — name the file `hero.*`; no registration. - The homepage "pick of the day" is `src/data/pick.json` (`{"hero": ""}`); falls back to the latest review. - Find slugs are globally unique although folders are date-bucketed; URLs stay flat at `/find//`. - Finds are reachable through bundles and through tag pages (a secondary "Finds" list under the entry grid on `/tags//`) — an unbundled find is still invisible on the home feed, grids, and category pages. - `source` frontmatter must exactly match a `name` in `sources.json`. - `topics` frontmatter (finds and reviews) must come from the controlled vocabulary in `src/lib/topics.ts` (`TOPIC_META` keys) — the schema enum fails the build on anything else. Tags are free-form; topics are curated. "Giftable" is a tag (`giftable`), never a topic. - Amazon links: store canonical `https://www.amazon.com/dp/` with no query params; `src/lib/affiliate.ts` adds the tracking ID, badge, and disclosure at render time. - Commit style: see `git log` — `content: …` for capture runs, `site: …` for everything user-visible; one commit per pipeline stage. - `npm run build` (astro check + build) must pass before pushing.