ShurIQ / Internal Status Report
2026-05-07 · Day 1 of 14
Data model bootstrap

The information used to live and die inside the report. We changed that today.

A single afternoon of work moved ShurIQ from an implicit data model — where every client's knowledge graphs and reports were trapped inside the artifact that produced them — to an explicit one. Account, project, composite knowledge graph, business model canvas. All shipped to local and remote D1, no impact on the manual report runs we do every day.

Day 1 of 14 · feat/account-project-hierarchy · commit 193e5564

01What this is

This page is the Day 1 status of a two-week build. The brief I wrote to myself opens with the line that prompted all of it:

The information lives and dies inside of the report. Every client has multiple knowledge graphs — the ontology, the grammar, the value-flow, the business model canvas — and there's no explicit system for the client to log in and see them in an active way. They just get the report, and that's it. ShurIQ Data Model Specification Notes · 2026-05-07

The fix is structural, not cosmetic. The report studio becomes one app inside a larger ShurIQ ecosystem. Above it sits an account view that owns projects; each project owns its composite knowledge graph (five named layers), its business model canvas, its reports, its sources, and its nightly delta log. The business model canvas is the join key — the place where weekly stack-rank deltas, nightly autoresearch findings, and the initial business intelligence report all converge into one canvas the client can actually read.

02The explicit model

Account                              // the client (AHA, Hasbro, Arc Capital portco, ShurIQ-self)
├── people[]
├── projects[]                       // unlimited per account; gating is a subscription concern
│   ├── archetype                    // editorial brief · pressure test · cold read · weekly stack rank
│   ├── business_model_canvas        // 9 BMC blocks · the integration loop
│   ├── kg_layers[]                  // the composite knowledge graph (DKR)
│   │   ├── domain_ontology          // extractEntitiesOnly · vertical-scoped
│   │   ├── discourse_grammar        // claims · evidence · sources
│   │   ├── value_flow               // REA semantics
│   │   ├── bmc_overlay              // BMC blocks as ontology
│   │   └── sbpi_score               // 5 dimensions, vertical-weighted
│   ├── reports[]                    // existing report studio rows roll up here
│   ├── chat_sessions[]              // scoped to project context
│   ├── sources[]                    // transcripts, briefs, search corpora
│   └── kg_deltas[]                  // nightly autoresearch tracking
└── dashboard_views[]                // composite KG viewport config

The five layer names are deliberate. Domain ontology is the entity-only graph for the vertical. Discourse grammar is the claim-evidence-source layer that makes every score traceable. Value flow uses REA (resource-event-agent) semantics. BMC overlay puts the nine canonical canvas blocks into the graph as concept nodes. SBPI score is the five-dimension brand power layer. Together they compose into one analyzable surface — the client's custom knowledge repository, what we've been calling the DKR.

03What shipped today

Migration 0006_account_project_hierarchy.sql

Five new tables and two new columns on the existing reports row. Foreign keys, indexes, an inline SQL backfill, and a clean separation from the v0.6 grammar linter work that was already in flight.

accounts                   id · name · vertical · owner_email · subscription_tier · status
projects                   id · account_id · name · archetype · status · sources
kg_layers                  id · project_id · layer_type · infranodus_graph_ref · extract_mode · counts · version
business_model_canvas      project_id (PK) · 9 BMC blocks · source_report_id
kg_deltas                  id · project_id · kg_layer_id · delta_type · summary · payload
reports.account_id         nullable · backfilled from client_id
reports.project_id         nullable · backfilled to 'default-' || client_id

Backfill — verified clean on local and remote

AccountVerticalDefault projectReports
hasbroconsumerdefault-hasbro2
academy-of-general-dentistrynonprofitdefault-academy-of-general-dentistry1
ahahealthcaredefault-aha1
trudatasap-servicesdefault-trudata1

TypeScript types — both sides

Five new interfaces (Account, Project, KGLayer, BusinessModelCanvas, KGDelta) added to app/src/lib/types.ts and mirrored as *Row shapes in app/functions/lib/types.ts for the Worker. Existing Report and ReportRow got account_id and project_id fields at the top, leaving every other field — including the v0.6 linter columns added last week — untouched.

Branch isolation

All of this lives on feat/account-project-hierarchy. Master is unchanged. The v0.6 grammar work in your modified-but-uncommitted files (generate.ts, publish.ts, grammar.ts, linters.ts) was not touched. The manual reports we run every day are unaffected by anything in this commit.

04The two-week sequence

DayDateWorkStatus
D1May 7 Schema migration. Account/project/KG-layer/BMC tables. Backfill local + remote. TypeScript types. shipped
D2May 8 Cold-read brief on ShurIQ-self. Template applied. GTM plan kicks off in parallel. queued
D3May 9–10 Populate BMC table for ShurIQ. Wire intelligence-brief skill into the BMC autopopulate. Run extractEntitiesOnly graph for the ShurIQ ontology layer. queued
D4May 11 Account dashboard route in the report studio. Lists projects, latest reports, latest stack rank, BMC snapshot. queued
D5May 12 Composite KG viewer. Multi-graph viewport with gaps, concepts, and topical-cluster modes borrowed from the InfraNodus app. queued
D6May 13 Weekly stack-rank → BMC overlay delta wired. First ShurIQ-self stack rank deployed. queued
D7May 14 Nightly InfraNodus delta scan via the scheduler skill. "What changed last night" card on the account dashboard. queued
D8–9May 15–16 Telegram Totem revival, round one: Orchestrator → /intake (0–20 rubric), Scout → /scout, Content Factory → /cf-create. Skills-first. queued
D10May 17 ShurIQ Business Intelligence Report. Competitive analysis. Fair-dimensions stack rank. Deploys at shuriq-self-bi.pages.dev. queued
D11May 18 Investor artifact — What ontology engineering needs to become, and what we're already shipping. Editorial page deployed. queued
D12–14May 19–21 Telegram Totem revival, round two: Memory (Letta-backed three-tier), Knowledge (unified ontology slash command), Gap Minder (multi-platform scheduled scan). queued

Parallel substreams

Subscription pitch

$1k/mo offer to 3–4 existing Shur Creative customers, end of week 1. Goal: $9k of commitments by end of week 2.

AHA regeneration

v0.6 grammar already deployed. Add image swap-out for graph-view snapshots per the session transcript. Republish on the legacy account so the existing URL stays live.

Arc Capital portco cold-read

Same template as the ShurIQ-self run. Waiting on a name from you.

Obsidian plugin path

Investigation found that letta-cowork is an Electron desktop app, not the Obsidian plugin we remembered. Pivot: ship a ShurIQ skill bundle on top of the existing Claude Cowork plugin. Custom plugin deferred.

05Decisions locked

  1. Auto-bucket the backfill, with room for unlimited projects per account. One account per existing client_id, one default project per account. Schema imposes no cap on projects. Subscription tiers will gate access later — the schema stays liberal.Why: keeps the migration simple and ships in one file. The default project becomes the home for existing reports without making us name and curate engagements by hand on Day 1.
  2. Cold-read on ShurIQ-self plus one Arc Capital portco in parallel. The template was designed to be company-shape agnostic (frontmatter handles vertical, peer set, and public-signal-thinness). Two simultaneous runs stress-test it against two early-stage shapes at once.Why: a template proven against only one company is a template proven against one company. Two runs catch edge cases the first run hides.
  3. Telegram Totem revival in Claude Code skills first, Cloudflare Worker endpoints later. The Orchestrator, Scout, and Content Factory agents become slash commands in the existing skills system before they become HTTP endpoints inside the report studio.Why: the skills system is already wired into the daily workflow. Building Worker endpoints first costs more infrastructure work and delays the moment we can use the agents.
  4. Feature branch isolation, no master pollution. All schema work lives on feat/account-project-hierarchy until the data model is proven against a real account dashboard.Why: the manual reports we run every day cannot be allowed to break. A feature branch is the safest container for the schema buildout.
  5. Per-logical-unit commits. Schema is one commit. Types are part of that commit. Cold-read is its own commit. Account dashboard is its own. Six-ish commits over two weeks instead of fourteen daily ones.Why: a logical-unit commit is reviewable by itself; a daily commit is just a timestamp.

06Deferred — with rationale

SHACL validation deferred

The spec names SHACL as part of KG Build. There is no runtime validator today; the cost-benefit favors letting the layer schema stabilize first. Revisit after D7.

Karpathy auto-wiki closure deferred

No local fork exists, only clippings. The intelligence-brief and mapupdate skills already cover the synthesis loop sufficiently for the MVP. Revisit post-week-two.

Cavalry creative-coding sine-wave demo deferred

Tangential to the data model. Belongs in a separate creative session, not on the critical path.

Letta subconscious agent → Slack/Telegram bridge deferred

Investigation found no existing bridge from the Letta subconscious agent to external chat surfaces. You confirmed this is a separate workstream, out of scope for the two-week plan.

07Inputs I still need from you

  1. D2Business plan source. Which file is the canonical business plan version for the ShurIQ-self cold-read input? Latest in projects/shur/business-model/, or somewhere else?
  2. D2GTM session arrangement. Does the parallel GTM plan kickoff happen in this terminal, or are you spinning up a second session for it?
  3. parallelArc Capital portco name. Pick the most public-signal-thin company in the current portfolio. Cold-read template runs against it the same day as the ShurIQ-self run.

08What this artifact is, and is not

This is an internal status report. It documents what changed in the data model on May 7, 2026, the sequence I'm running for the next two weeks, and the decisions you and I made along the way. It is not a client deliverable. It is not pitch material. It is the receipt for one day of structural work.

The investor-facing version of some of this content lands on D11 as a separate editorial page — What ontology engineering needs to become, and what we're already shipping. That page reframes the same shipped capabilities as a market position. This page documents the build.