Studios reference
Celebrate. Remember. Launch.
Three studios, deliberately only three: one for what's coming, one for what happened, one for what you're shipping. This page is the reference for their inputs, artifact kinds, coverage-gap semantics, and the privacy model that is enforced in code rather than promised in prose.
CELEBRATE — the moment that's coming
Tools: oce_plan_occasion, oce_design_invite, oce_write_toast, oce_moodboard. Grounding sources: OpenStreetMap/Overpass for venues (ranked by listing completeness, global chains demoted — order changes, facts never do), Open-Meteo for forecasts.
| field | type | notes |
|---|---|---|
| plan | json | Summary, grounded claims (each with source + retrievedAt), uncertainties, prep checklist. Every venue is explicitly 'NOT booked, NOT confirmed'. |
| schedule | json | Timed items with venues. SCHEDULE_OVERLAP and impossible travel gaps are hard failures. |
| budget | json | Line items that must sum to the stated total within $0.01 — hard check. |
| contingency | md | The if-it-goes-wrong branches: weather calls, venue fallback order, no-show slack. |
| guest_guide | html | A shareable, self-contained page for guests — honest about what is and isn't booked. |
| invitation / toast / moodboard | png / md / png | From the single-purpose tools, same grading, same seal eligibility. |
REMEMBER — the moment that happened
Tool: oce_make_keepsake. Input: your notes and optionally your photographs. Output: keepsake artwork in a curated style (sunprint by default) and a story page with three strictly separated sections — What we can see (only what the photos and your notes establish), The story (prose, labelled as prose), and What we do not know (left honest, never filled in).
| field | type | notes |
|---|---|---|
| keepsake_art | png | Original artwork; the repair loop rendered our own first one twice before it passed legibility. |
| story_page | html | The fact/prose-separated editorial page. |
The privacy model, all enforced in code:
- · Uploads are re-encoded through sharp on arrival — EXIF, GPS, camera serials are gone before any bytes touch disk. The originals are never written.
- · Served only through HMAC-signed, expiring URLs. Never indexed, never public.
- · People are counted, never identified: the vision layer's output is scrubbed of relationship and demographic guesses even if the model volunteers them.
- ·
DELETE /projects/:idremoves the pack, artifacts, and the photographs from disk — a link table exists precisely so deletion can find them. Verified live. - · On-chain: only the manifest hash. A keepsake is verifiable forever without any personal content ever leaving the store.
LAUNCH — the thing you're shipping
Tool: oce_launch_kit. Given a URL, a real headless browser renders your site and extracts the brand genome from what actually painted — resolved colours, resolved type — never from guesswork. Given no URL, the genome is description-only and the pack says so in its gaps.
| field | type | notes |
|---|---|---|
| brand_kit | md | The genome: positioning, audience, voice, three messages, palette (extracted vs House Style, adopted/rejected with reasons), banned clichés. |
| og_image / brand_mark | png | Hero visual and mark concept in the chosen style; palette drift from the declared style is measured. |
| launch_thread | md | The thread. Filler is caught by a deterministic phrase filter plus the critic's substitution test. |
| demo_script | md | A 90-second beat sheet. Invented prices/user-counts are caught and replaced with explicit [YOUR PRICE HERE] placeholders. |
| landing_spec | md | Section-by-section landing copy, honestly framed. |
Coverage gaps — the honesty contract
A failed provider never aborts a pack and never gets papered over. It degrades the pack and is recorded in coverageGaps — pack-level and per-artifact. The semantics:
| field | type | notes |
|---|---|---|
| presence | disclosed | A gap means something real: a source was down, a check couldn't apply, a model degraded. Absence means full coverage — and absence is the claim being made. |
| shape | ID: detail | e.g. MARKET_DATA_UNAVAILABLE, CRITIQUE_UNAVAILABLE, site:not-provided — machine-greppable prefix, human-readable rest. |
| grading | unaffected | Gaps never inflate scores. An axis a critic couldn't assess is handled by the published rubric, not silently maxed. |
| surface | everywhere | Gaps ship in the tool response, on the public /k page, and in /stats ('coverage gaps disclosed' is a headline counter — we count our own imperfections in public). |
House Styles
Ten versioned prompt systems with stable ids, each gated to the studios it suits (appliesTo): amethyst_editorial (warm ivory editorial collage, the safe default), gilded_noir (near-black + champagne gold, black-tie), jazz_age (art-deco geometry, gold on emerald), solstice_bloom (pressed-flower botanicals, sunny), paper_lantern (festival paper-cut, communal), sunprint (cyanotype blues, the REMEMBER default), porcelain_garden (blue-white chinaware, delicate keepsakes), terra_fresco (ochre plaster, travel & rustic), neon_reverie (luminous dark minimalism, launch-native), and atlas_ink (map-and-ledger, itinerary-native — never applied to launch brand work). Changing a style bumps its version; palettes are published in the manifest and PALETTE_DRIFT measures renders against them. Call oce_style_catalog (free) for all ten with real swatches and a real passing example, or see them in use in the gallery.