Synthetic Data Engine for CDPs

Generate realistic user journeys with proper event sequences, timing, and cross-dataset relationships.

$ npm install @synode/core

Quick Start

Define your journey hierarchy, then generate thousands of realistic events in seconds.

import {
  defineAction,
  defineAdventure,
  defineJourney,
} from '@synode/core';

const pageView = defineAction({
  id: 'page-view',
  name: 'page_viewed',
  fields: {
    url: '/home',
    title: 'Home Page',
    referrer: (ctx) => ctx.faker.internet.url(),
  },
});

const browsing = defineAdventure({
  id: 'browse',
  name: 'Browse Website',
  actions: [pageView],
  timeSpan: { min: 1000, max: 3000 },
  bounceChance: 0.2,
});

const visit = defineJourney({
  id: 'website-visit',
  name: 'Website Visit',
  adventures: [browsing],
});
import { generate, InMemoryAdapter } from '@synode/core';

const adapter = new InMemoryAdapter();
await generate(visit, {
  users: 50,
  lanes: 4,
  adapter,
});

console.log(`Generated ${adapter.events.length} events`);
// → Generated 2,847 events

How It Works

Three pillars feed into a four-level generation pipeline.

Input
Users

Synthetic identities with weighted persona distributions

Datasets

Pre-generated entity tables with typed row access

Journeys

Behavioral flows with timing and prerequisites

Pipeline
Journey User goal
Adventure Session
Action Behavior
Event[] Output