The CANAVA Flow Map

Intake → Spine → Lenses / Search → Workflow / Libraries-out, with the triage valve. Grounded in tool source + the live schema (miokgyffvhhylsfmsmmb). 2026-05-24.

The Path Forward ↗

works today broken / not built partial / drifting normal flow
Intake Triage valve The Spine Lenses / Search Workflow / Out Trawl universal front door Direct → Claude person·list·cohort·find co-equal front door trawl_log · 475 pass-through breadcrumb review_queue · 759 clogged backlog capture_inbox · 4 half-built Waiting on You NOT BUILT geo_places / places geography spine — WORKS entity_ links · 8 people — FRAGMENTED research_hub 133 · research_lab 77 · CIS 98 community 4 · resources-as-person 286 brands 476 resources 1099 recipes 411 · we-make media_diet · 41 private link arrays cultural_archives 295 master taxonomy tables subcats 234 · tags 300 · placements 16 — only Editorial reads them live Orbit reads entity_links ✓ CIS · creators Journey · travel Search keyword-flat · blind spots Editorial → Runway Dispatch Libraries / Curator pre-publish audit affiliates · 43 recurring 41 / one-off 2 library-public / edit publish_state=live gate ✓ The valve was started twice (review_queue, capture_inbox), finished zero times. trawl_log is a breadcrumb, not storage. Spine real for WHERE; a proof for WHO; private lists everywhere else. Direct → Claude writes straight to the destination table, bypassing the valve — no breadcrumb / no dedup yet (should leave a trace + thread the spine).

Inter-tool data-flow web — what each tool reads from the others

The orthogonal view: not the lifecycle, but how data flows between the tools — what each can pull from the others (the thing that informs the front end). Grounded in the Reads column of the tool inventory.

reads it today (exists) partial (proof / private array / name-match) aspirational — unlocks when the spine generalizes
Brand brands · 476 Librariesbrand FK Research Runway /Journey Media Dietlinked_brands Orbitentity_links·8 Editorialas subject made_in→ canonical place Person research_hub · 133 (fragmented) Research tool Dispatch Orbitentity_links·8 CISsame person, re-typed Outreachcontact Editorialcontributor founded_bybrand founder Place geo_places · 181 (real spine) Places Journey Archives CISbased_in Search brands.made_infree text media_diet.geoempty ×41 Recipe recipe_items · 411 (we-make) Runway communitycooks Libraries→ library item Dispatchembed Taxonomy masters subcats 234 · tags 300 · placements 16 Editoriallive read Librariessubcats Trawlhardcoded JS mirror all other toolshardcoded Affiliate affiliates · 43 (product register) Curator library-public Brand linkname match, not FK Verified edges cluster around geography (Places = hub) and the output stack. The people graph, brand-as-subject, brand-founder & place-threading are aspirational — the front-end roadmap once the spine generalizes (punch list #1, #2, #8).

Per-vertical view — each editorial domain as a lens over the spine

Each vertical draws on the same shared entities, faceted differently and with its own "place in one's life." Each has its own collection AND distribution model — they differ per vertical (Geren to define; not invented here). Depth grounded in row counts where available.

Vertical Depth today Draws from spine Faceting Collection / distro Travel depth gap ★ thin / UNDERBUILT — should be the deepest places (anchor) · people · brands · trips · stays by PLACE × by TYPE hotel/villa/restaurant/beach/hike… varies — Geren to define Food / Recipes deep · recipe_items 411 recipe_items · ingredients · community · place (provenance) by recipe / component we-make · varies — Geren Style brand-backed (brands 476, shared) brands · people (founders) · places (made_in) by brand / type / register we-cover · varies — Geren Home brand-backed (shares brands) brands · places · people by brand / type we-cover · varies — Geren Soul emerging people · media_diet · cultural_archives by theme varies — Geren to define Personal Care brand-backed (shares brands) brands · people by brand / type / register we-cover · varies — Geren Media Diet moderate · media_diet 41 media_diet · brands · resources · people · geo (free-text) by kind (book/film/album…) varies — Geren to define

Output types & omni-channel distribution — produce once, surface everywhere

Output is more than content: Editorial, Events, Digital Products, Physical Products — all fed from the spine. Distribution is omni-channel: every touchpoint a person meets CANAVA is a surface. Dashed = should exist but isn't modeled yet.

exists / wired today modeled, partial wiring aspirational / historical — not modeled yet
The Spine Output types Omni-channel touchpoints — author once → surface everywhere The Spine people · brands places · products Editorial / Content Editorial→Runway→Dispatch · Libraries — WIRED Events pulls a cohort · no event object yet Digital Products not modeled Physical Products circular fashion/home history · not modeled produce once → Site Email Substack Socialcard modeled, partial Dispatchweekly Event surfaceaspirational Product surfacephysical / digital IRL Current channels = the placements vocab (explore-carousel/landing · main-page · substack · email · dispatch · recleague · social) + the channels jsonb / first_published_surface machinery — modeled, wiring partial. Event / product / fuller-IRL surfaces are not modeled yet. The principle: every touchpoint a person meets CANAVA is a surface — author/produce once, surface everywhere (not a fixed feed-list).

Punch list — prioritized

  1. P1 — Spine built for one dimension (Places) + 8-row people proof; ~600 person rows scattered across 5 tables, no shared id. Generalize Orbit's entity_links.
  2. P1 — Three person tables (research_hub / research_lab / CIS) + people in resources/community; Search indexes the wrong one. Consolidate to one person home.
  3. P1 — Categorical vocab hardcoded in JS, not read from master taxonomy tables; "+add" doesn't write back. Read the masters; write-back +add.
  4. P1 — Capture fields destination-aware, not vertical-aware: Food brands still asked for materials/fabrication/certifications. Add the cascade; scope per vertical.
  5. P1 — Triage valve clogged/split three ways (trawl_log / review_queue 759 / capture_inbox); "Waiting on You" unbuilt. One staging surface + checkpoint.
  6. P1 — Research re-queue missing: answered questions never clear the parent's research_completed_at → answers dead-end. Re-queue on answer.
  7. P2 — Geography under-threaded: only Places uses geo_place_ids; media_diet.geography free-text & empty in all 41 rows. Thread geo_place_ids at capture.
  8. P2 — Private lists instead of shared entities (media_diet.linked_*, brands.founded_by). Replace with entity_links.
  9. P2 — Two-file drift / decoys: journeytracker, strategicoutreach, trawl-v2 orphans + 48 .bak shadows. One-live-version discipline.
  10. P2 — publish_state gating inconsistent: only libraries/library_items have it. Uniform draft/live discipline.
  11. P2 — Search blind spots (no research_hub / affiliates / outreach) + keyword-flat. Add sources; read entity_links later.
  12. P3 — Format/kind holes partly fixed (art forms added to ART only, still hardcoded; culture/event reuse editorial set).
  13. P3 — Near-duplicate pills (knitwear/Knitwear ×16; UK/Uk; Exhibition/exhibit). Normalize + dedup + alphabetize.
  14. P3 — research_hub RLS disabled; entity_links open-all read+write. Geren's call — design policies first.
  15. P3 — we-make (Recipes) vs we-cover (Style/Home/Travel/Beauty) shapes differ — correct by design; the cascade must respect it.

Complete tool census — every tool, considered

Per Geren's directive: consider all tools, the Lab, and every web app ever built — nothing silently missing. The lane diagram above stays clean; this register shows the full inventory so it's clear each was reviewed and either carries a flow or was deliberately parked. Reconciled against tool-source/*.html, the hub tiles (incl. the Lab section), and the spine-doc census.

70live tool files ~23in-spine (carry the flows) ~47considered & parked 48+1.bak / .sepbak / .RETIRED shadows 4shared .js includes

In-spine — carry the flows~23 · detailed in §2

trawlintake reminders / Trawl Logtriage + question loop brandsspine-home researchspine-home resourcesspine-home placesspine prototype communityspine-home media-dietspine-home archivesspine-home affiliatesspine-home recipesspine-home cislens journey-trackerlens orbitlens · entity_links searchretrieval editorialoutput runwayoutput dispatchflow/output libraries / Curatoroutput library-publicreader editreader strategic-outreachspine-adjacent → outreachspine-adjacent →

Utilities / referenceparked — correct

timezone-converter weather-widget taxonomymeta brandstandards cw-queuework-tracking inventory receipts repair labbench

Personal / GL_LIFEparked — off the CANAVA spine

life rhythm foodmacros nut-butter-tracker greenpoint-map oura-callback realestate bin-wall shelf-planner storage-layout storage-comparison virtual-mailbox-comparison

Experiments / Lab one-offsparked — but several should plug in ↓

image-process ★ figma-triage ★ event-prep ×2 ★ channels ★ ai-exchange-deck greenhouse greenhouse-notes

Orphans · decoys · mockups · shadowsparked — flagged, punch-list #9

journeytrackertwin strategicoutreachtwin trawl-v2staging trawl-capture-mockupmockup triagesuperseded nano-banana2nd Image Process timezone ×7 variants librarydecoy → public index · logininfra

★ Currently-parked tools that SHOULD plug into the flows — the signal

  1. Image Process (+ the nano-banana twin) produces assets — brand logos, resource portfolio shots, ghost-mannequin product images, recipe shots — that should attach to spine entities (brands/resources/recipe_items/library_items image fields), not dead-end. The one exception both prior docs already named.
  2. Figma Triage triages Figma designs/tiles — it's a capture source for design assets; it should feed the intake/capture pipeline, a Trawl-adjacent door for design work.
  3. Event Prep is the working surface for Events — the first-class output type §8 just added — and the home of the Direct-to-Claude "event cohort → research_hub" intake. Wire intake (cohort) ↔ Events output ↔ research_hub/community.
  4. Channels (the "Channel Map") should be the registry behind the omni-channel band (§8) — the home of the placements vocab — not a standalone diagram.
  5. Strategic + Outreach are the investor / strategic-partner people layer the spine doc keeps flagging as the missing entity. Spine-adjacent but on private lists with no shared person_id; they should thread the same person spine as Research/CIS/Community.