Table professional_contacts { id uuid [pk, default: `gen_random_uuid()`] name text [not null] company text title text email text phone text linkedin_url text how_we_met text tags "text[]" [not null, default: `'{}'`] notes text last_contacted timestamptz follow_up_date date created_at timestamptz [not null, default: `now()`] updated_at timestamptz [not null, default: `now()`] indexes { last_contacted follow_up_date } } Table contact_interactions { id uuid [pk, default: `gen_random_uuid()`] contact_id uuid [not null, ref: > professional_contacts.id] interaction_type text [not null] occurred_at timestamptz [not null, default: `now()`] summary text [not null] follow_up_needed boolean [not null, default: false] follow_up_notes text created_at timestamptz [not null, default: `now()`] indexes { (contact_id, occurred_at) } } Table opportunities { id uuid [pk, default: `gen_random_uuid()`] contact_id uuid [ref: > professional_contacts.id] title text [not null] description text stage text [not null, default: 'identified'] value "decimal(12,2)" expected_close_date date notes text created_at timestamptz [not null, default: `now()`] updated_at timestamptz [not null, default: `now()`] indexes { stage } }