Mashdun
AI GrowthWorkCapabilitiesIntegrationsProcessLabsMarketplaceBlogAbout
Get in Touch
Mashdun

Full-stack web developer, AI engineer & growth marketer. Building production-grade apps and intelligent solutions.

Navigation

  • Portfolio
  • Capabilities
  • Process
  • Labs
  • About

Resources

  • Blog / Notes
  • Marketplace
  • Contact
  • RSS Feed

Legal

  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Do Not Sell or Share
  • Delete my data

© 2026 Mashdun. All rights reserved.

Built with Next.js, Tailwind CSS & Prisma

    All Labs
    Engineering
    Segment Spec
    Identity Resolution
    Consent
    Postgres
    Vendor Adapters

    First-Party Event Layer

    A CDP is a schema, a collector, an identity graph and a fan-out. This is all four, built rather than bought: a tracking plan enforced in code, a collector that stores only planned properties, identity stitching that joins a browser to a person and a person to an account, and optional mirrors to Segment or RudderStack that are destinations rather than the system of record. It is also what makes the SDR pipeline's behavioural scoring possible — first-party data no vendor can sell you or your competitor.

    First-Party Event Layer

    Segment Spec
    Identity Resolution
    Consent
    Postgres
    Vendor Adapters
    Events planned
    9
    In the tail
    0
    Mirrors on
    none
    Your consent
    not given

    The only events this site may emit, and the only properties each may carry. The plan is code — filterProperties() drops anything not listed here, so an unplanned property cannot reach the database even if a caller passes it.

    Page Viewed
    web

    A page was viewed. Tokenized document paths are excluded upstream.

    path · referrerHost · title

    Lab Opened
    web

    A visitor opened a Labs demo.

    lab

    Lab Run Completed
    server

    A lab finished a run. Emitted server-side so the count is trustworthy.

    lab · durationMs · source

    Outreach Link Clicked
    both

    A link in a drafted outbound message was clicked.

    campaign · accountDomain

    Contact Form Submitted
    server

    The contact form was submitted. Server-side: the client never reports its own conversions.

    formId · accountDomain

    Design Check Passed
    server

    A design passed its manufacturability checks. An activation signal: it means somebody got far enough to have a part worth quoting, which is a much stronger buying indicator than a page view.

    project · process · readiness · accountDomain

    Quote Package Exported
    server

    Somebody downloaded the STEP, STL, BOM and spec sheet. The strongest activation signal in the product: an engineer does not export a quote package unless they intend to get it made.

    project · files · accountDomain

    Experiment Viewed
    server

    A unit was shown an experiment variant. The Segment Spec's own name for this, kept rather than invented, because every downstream tool already knows it. Exposure, not assignment. Assignment is a pure function and happens for everyone the moment they are looked at; exposure means the variant was actually rendered. Logging assignment instead inflates the denominator with units that never saw the test, which drags every measured effect toward zero — the failure mode where a working change looks like it did nothing.

    experimentKey · variant · unit · unitHash · holdout

    Project Stage Changed
    server

    A project moved between lifecycle stages. Emitted server-side because it is the event the whole loop hangs on — for a parts supplier, prototype → production is the account-graduation moment, and a stage change the browser could invent is a score the browser could inflate.

    project · from · to · revision · accountDomain

    How it works

    1. page(), track() and identify() in the Segment Spec shape, gated behind the analytics consent category.
    2. A collector writes to our own Postgres. Properties are an allow-list, so unplanned PII cannot arrive by accident.
    3. identify() stitches anonymous ids into one profile; email domain joins a person to an account.
    4. Segment and RudderStack are optional mirrors, switched on by env var — our store is always the primary write.
    5. The SDR pipeline reads this back as behavioural signal. It is the part no vendor could sell us.

    Why own the collector

    A CDP is a schema, a collector, an identity graph and a fan-out. What vendors sell is the operating cost of running them and the connector catalogue — both real, neither the same as the capability. Owning the event layer makes a vendor a destination rather than the system of record, so switching costs an adapter and no history.

    See these events become an ICP score