Skip to content
Dark MatterDark Matter
Extension

Extension Overview

Architecture and capabilities of the DMTR Chrome extension for private market intelligence enrichment.

Overview

The DMTR Chrome extension detects private companies on supported research platforms, resolves them against the Blackmoat intelligence database via the DMTR API, and renders structured enrichment in a side panel. When you visit a PitchBook company page, the extension extracts the entity, calls /v1/intelligence/enrich/:slug, and displays the company profile, transaction history, key people, valuation metrics, and — if DMTR positions exist — transferability status.

The extension is the Layer 1 surface of the contributed data flywheel: free page-level utilities that demonstrate value before asking for anything in return.

Architecture

The extension is a Manifest V3 Chrome extension (packages/extension/) with four components:

ComponentFileRole
Background service workersrc/background/index.tsHandles messaging between content scripts and the side panel, manages API calls to the DMTR backend, and controls the side panel lifecycle.
Content scriptssrc/content/index.tsInjected on matched sites. Finds the active SiteAdapter, calls extractEntities(), and sends detected entities to the service worker.
Side panelsrc/panel/React app rendered in Chrome's side panel. Three tabs: Know (intelligence), Own (portfolio — placeholder), Signal (market signals — placeholder).
Site adapterssrc/adapters/Declarative per-site entity extraction. Each adapter defines URL patterns, CSS selectors for entity extraction, and injection points for UI enrichment.

SiteAdapter interface

Every supported site gets one adapter implementing this interface:

interface SiteAdapter {
  name: string;
  patterns: Array<{ hostname: string; pathname?: string }>;
  extractEntities(doc: Document): ExtractedEntity[];
  injectionPoints(doc: Document): InjectionPoint[];
}

Currently implemented: PitchBook. See PitchBook adapter for details.

Data flow

  1. User navigates to a PitchBook company page
  2. Content script runs pitchbookAdapter.extractEntities(document) → extracts company name
  3. Content script sends ENTITIES_DETECTED message to service worker
  4. Side panel receives entities, calls POST /v1/intelligence/resolve to match the name
  5. Side panel calls GET /v1/intelligence/enrich/:slug for the matched entity
  6. Side panel renders the Know tab with entity profile, metrics, transactions, people, and transferability badge

Three-layer tab architecture

TabLayerStatusDescription
KnowLayer 1 — Page utilitiesImplementedEntity enrichment: profile, metrics, transactions, people, transferability
OwnLayer 2 — Personal knowledge graphPlaceholderPortfolio tracking, deal tracker, relationship graph (requires DMTR account)
SignalLayer 3 — Collective intelligencePlaceholderAggregated market signals, sentiment, deal flow velocity (requires data contribution)

Try it without PitchBook — Start the API with pnpm dev and open http://localhost:3100. The Intelligence Discovery section on the demo page provides the same entity search and enrichment that the extension's Know tab renders. Search for "Saronic" to see the full enrichment panel with transferability badge.

Supported browsers

Chrome and Chromium-based browsers (Edge, Brave). Firefox and Safari support are planned.

What this sprint does not include

  • IndexedDB / local knowledge graph (Layer 2)
  • Differential privacy / contributed data (Layer 3)
  • Bloomberg, AlphaSense, Carta, LinkedIn, or Gmail adapters
  • MCP server integration
  • Production authentication (extension uses the sandbox API)
Edit this page on GitHub

Last reviewed: March 23, 2026

Was this page helpful?