Omnigraph
Guides

Industry Intelligence (SPIKE)

Track a domain as a graph of Signals, Patterns, Insights, KnowHow, and Elements.

The industry-intel starter is a runnable Omnigraph graph for tracking an industry over time. It ships with a reference seed for AI/ML in early 2026 — 5 patterns, 15 signals, roughly 109 nodes and 154 edges — and a schema that generalizes to any domain (biotech, fintech, crypto, geopolitics, climate, etc.).

This page summarizes what it models and how to run it. The schema, seed, and queries are maintained in the starters repo.

SPIKE

The starter organizes a domain around five analytical node types:

NodeWhat it is
SignalA dated external fact, movement, or observation
PatternA recurring theme that signals form, contradict, or depend on
InsightA synthesized interpretation of why a pattern matters
KnowHowAn actionable practice or playbook grounded in the graph
ElementA concrete product, framework, company, or concept

Plus supporting node types for provenance (Company, SourceEntity, Expert, InformationArtifact, Chunk). Only Chunk.embedding carries a vector (Vector(3072), text-embedding-3-large); everything else is relational.

The analytical logic lives on the edges:

  • FormsPattern: Signal -> Pattern — this observation supports that theme
  • ContradictsPattern: Signal -> Pattern — this observation pushes back
  • DrivesPattern, ReliesOnPattern, ContradictsToPattern: Pattern -> Pattern — causality between themes
  • HighlightsPattern: Insight -> Pattern / ReliesOnElement: Insight -> Element — how an insight attaches
  • ExemplifiesPattern, EnablesPattern: Element -> Pattern — concrete examples or enablers
  • OnElement: Signal -> Element — what the signal is about

Schema shape

Nodes use flat kind enums rather than subtypes, so every Element lives in one table and is filtered by kind:

node Pattern {
    slug: String @key
    name: String @index
    kind: enum(challenge, disruption, dynamic) @index
    brief: String?
    description: String?
    evolution: String?
    createdAt: DateTime
    updatedAt: DateTime
}

node Element {
    slug: String @key
    name: String @index
    kind: enum(product, technology, framework, concept, ops) @index
    domain: enum(training, inference, infra, harness, robotics, security, data-eng, context)?
    // ... + product/framework/concept-specific optional fields
}

edge FormsPattern:     Signal -> Pattern
edge ContradictsPattern: Signal -> Pattern

slug is the external identity for every node type, with stable prefixes (sig-, pat-, el-, ins-, how-to-, co-). See the schema.pg in the starter for the full definition.

A query through the graph

Given a pattern slug, return the signals forming it, most recent first:

query pattern_signals($slug: String) {
    match {
        $p: Pattern { slug: $slug }
        $s formsPattern $p
    }
    return { $s.slug, $s.name, $s.brief, $s.stagingTimestamp }
    order { $s.stagingTimestamp desc }
}

From the CLI, via a server alias configured in omnigraph.yaml:

omnigraph read --alias pattern-signals pat-sovereign-ai

More queries — recent_signals, search_signals, signal_patterns, signal_contradictions, pattern_drives, pattern_relies_on, pattern_contradicts — ship with the starter under queries/.

Running it

Prerequisites: a local RustFS-backed Omnigraph (the local-rustfs-bootstrap.sh script from the main repo sets this up in Docker) and a clone of the starters repo.

git clone https://github.com/ModernRelay/omnigraph-starters.git
cd omnigraph-starters/industry-intel

# Source the RustFS credentials (see .env.omni.example)
set -a && source ./.env.omni && set +a

# Initialize the repo (writes storage directly)
omnigraph init --schema ./schema.pg s3://omnigraph-local/repos/spike-intel

# Load the seed
omnigraph load --data ./seed.jsonl --mode overwrite s3://omnigraph-local/repos/spike-intel

# Start the server
omnigraph-server --config ./omnigraph.yaml

# Run any aliased query
omnigraph read --alias pattern-signals pat-sovereign-ai

Adapting to a new domain

The SPIKE schema is domain-agnostic — only the enum values are AI/ML-specific (PatternKind, ElementKind, Domain). To track a different industry, fork the starter, adjust those enums, and generate a new seed. The omnigraph-intel-bootstrap skill automates the adaptation and initial research.

Reference

On this page