Skip to content
Dark MatterDark Matter
Cookbook

AlphaSense Position Context

Monitor mentions in AlphaSense and open related position context in DMTR.

Overview

This cookbook describes how to monitor company or deal mentions in AlphaSense and surface related DMTR position context. When AlphaSense triggers an alert (e.g., a company in your portfolio is mentioned in a new document), your webhook handler receives the event, looks up the corresponding position in DMTR, and surfaces the context — valuation, transfer status, restrictions — in your workflow. The pattern is ideal for research teams who want to see position details alongside AlphaSense research without switching tools.

The flow is: AlphaSense alert → webhook → DMTR position search → surface context (Slack, dashboard, or extension overlay).

Step 1: Configure AlphaSense alerts

Configure AlphaSense to send webhooks when documents mention entities you care about. Set up alert rules that match company names, deal IDs, or custom entity lists. When a match occurs, AlphaSense POSTs a payload to your webhook URL with entity_name, document_id, document_url, and metadata.

AlphaSense API and webhook access depend on your subscription. Contact your AlphaSense representative for API credentials and webhook configuration. The alert payload structure may vary; the examples below use a typical schema with entity_name and document_id. Adjust field names to match your AlphaSense contract.

Step 2: Handle alert webhooks

Implement a webhook endpoint that receives AlphaSense alerts. Extract the entity identifier (company name, issuer name) from the payload and pass it to the DMTR lookup in the next step.

// Express/Node webhook handler

import express from "express";

const app = express();
app.use(express.json());

interface AlphaSenseAlert {
  entity_name: string;
  document_id: string;
  document_url?: string;
  triggered_at: string;
}

app.post("/webhooks/alphasense", async (req, res) => {
  const alert: AlphaSenseAlert = req.body;
  const entityName = alert.entity_name;
  if (!entityName) {
    return res.status(400).json({ error: "Missing entity_name" });
  }
  // Forward to DMTR lookup (Step 3)
  const positions = await dmtrLookup(entityName);
  await surfaceContext(alert, positions);
  res.status(200).json({ received: true });
});

Step 3: Enrich with DMTR context

Use the DMTR positions API to search by the entity name from the alert. Retrieve the full Position Object for context: valuation, status, transferability, and restrictions.

async function dmtrLookup(entityName: string) {
  const res = await fetch(
    "https://api.dmtr.ai/v1/positions?issuer_name=" + encodeURIComponent(entityName),
    { headers: { Authorization: "Bearer " + process.env.DMTR_API_KEY } }
  );
  const data = await res.json();
  return res.ok ? data.data ?? [] : [];
}

// Or with SDK:
const positions = await dmtr.positions.search({ issuer_name: alert.entity_name });
200Success
{
  "data": [
    {
      "entity_id": "meg-2026-112",
      "issuer_name": "Acme Growth Fund III",
      "asset": {
        "vehicle_class": "fund_lp",
        "issuer": "Acme Growth Fund III"
      },
      "valuation": {
        "current_mark": 2500000,
        "currency": "USD"
      },
      "status": {
        "current": "active"
      },
      "transfer": {
        "transferable": true,
        "restrictions": [
          "lockup",
          "rofr",
          "gp_consent"
        ]
      },
      "compliance": {
        "kyc_status": "cleared",
        "aml_status": "cleared"
      }
    }
  ],
  "has_more": false
}

Step 4: Surface context

Display the DMTR position context in your workflow. Common patterns:

  • Slack notification: Post a message with position summary, valuation, transferability, and links to the AlphaSense document and DMTR console.
  • Dashboard overlay: Push the enriched data to an internal dashboard that researchers use alongside AlphaSense.
  • Chrome extension: Use the DMTR extension to show position context in a side panel when viewing AlphaSense in the browser; the extension can receive context via messaging or a shared backend.

Choose the pattern that fits your team. The webhook handler can call Slack's API, write to a database for dashboard consumption, or trigger extension updates via a push channel.

Cache DMTR results by entity name with a short TTL (e.g., 5–15 minutes). When multiple AlphaSense alerts mention the same company in quick succession, reuse the cached position instead of calling the API repeatedly. This reduces rate limit pressure and improves latency. Invalidate the cache when you receive position update webhooks from DMTR.

  • Rate Limits — Throttling and caching strategies for DMTR API calls
  • Extension Overview — Side panel and overlay patterns for research platforms
Edit this page on GitHub

Last reviewed: March 13, 2026

Was this page helpful?