Data Model

---
title: Data Model
---
erDiagram
    EXPERIMENT ||--o{ SESSION : has
    EXPERIMENT ||--|| FILTER : has
    FILTER {
        text query
    }
    EXPERIMENT ||--o{ MAILING : has
    EXPERIMENT ||--o{ INVITATION : has
    EXPERIMENT {
        string title
        string publicTitle
    }
    MAILING ||--o{ INVITATION : creates
    MAILING {
        date start
        date end
        int limit
    }
    INVITATION ||--|| CONTACT : belongs-to
    INVITATION {
        date start
        date end
        int limit
    }

    SESSION ||--o{ ASSIGNMENT : has
    SESSION ||--o{ SESSION : follow-up
    SESSION {
        date start
        int duration
        date closed_at
        date canceled_at
    }
    ASSIGNMENT }|--|{ CONTACT : belongs-to
    ASSIGNMENT {
        bool marked_as_deleted
        date canceled_at
    }

Experiment

The experiment is the entrypoint.

Filter

The filter contains of all the conditions that have to be met by a contact to be invited to an experiment. Conditions can consist of custom fields or information about past participations.

Mailing

A mailing is a time window when invitations to contacts meeting defined criteria are sent out. A limit of sent invitations can be defined.

Invitation

An invitation enables a contact to access public experiment information and enroll in sessions or the waiting list.

Session

A session is the time and place at which an experiment is carried out. Follow-up sessions can only be attended if you have already participated in the previous session.

Assignment

An assignment is the linking of a session to a contact.