Notion Workspace Map

assetactive

Notion Workspace — Database Map

Reference for all Notion databases and sync configuration.

Last audited: 2026-03-26. Run node scripts/notion-db-audit.mjs for current IDs and schemas.


Databases (12 total)

| Database | Purpose | Key Properties | |----------|---------|----------------| | Email Bridge | Gmail integration hub | Domain, Action Required, From, Status, Received, External ID, Linked Task, Source | | Projects (Canonical) | Portfolio SSOT (synced from projects.json) | Stack, One-Liner, Repo, Type, URL, Domain, Started, Last Activity, Status, Project Name | | Engagements | People/company interactions | Category, Company/Org, Link, Notes, Date, Counterpart, Status, Type | | Master Tasks | Central task tracker (synced from GitHub issues) | Action Required, Source, Domain, Assignee, External ID, Due Date, Status, Priority, Tags | | Sync Log | Audit trail for all sync operations | Status, Details, Run ID, Source, External ID, Target, Timestamp, Operation | | Calendar Hub | Meeting/event aggregator | Source, Start, End, Description, Type, Organizer, Domain, Meeting Link, Attendees | | Ideas | Scored idea capture | Strategic, Novelty, Technical, Status, Market, Total, Feasibility, Impact | | Knowledge Base (primary) | PKOS knowledge sync target | Domain, Tags, Category, Source, Name | | Knowledge Base (secondary) | Extended KB with confidence | Category, Tags, Source, Domain, Confidence, Title | | Projects (legacy) | Original projects DB (superseded by Canonical) | Last Meaningful Update, Domain, Status, Started, URL, Live URL, Stack | | Business Ideas Scorecard | Weighted business idea evaluation | Problem Severity, Differentiation, Domain, Market Size, Revenue Model, Feasibility, Distribution | | Inbox | Quick capture / triage | Status, Priority, Source, Notes |


Sync Scripts

All in alawein/alawein/scripts/:

| Script | Purpose | Required Env Vars | |--------|---------|-------------------| | sync-to-notion.mjs | Push projects.json to Projects (Canonical) | NOTION_TOKEN, NOTION_DB_ID + property overrides | | notion-kb-sync.mjs | Bidirectional PKOS KB <> Notion KB | NOTION_TOKEN, NOTION_KB_DB_ID (has default) | | notion-db-audit.mjs | List all databases and schemas | NOTION_TOKEN | | verify-notion-canonical-state.mjs | Validate post-sync state | NOTION_TOKEN, NOTION_DB_ID | | notion-mark-legacy.mjs | Archive legacy projects | NOTION_TOKEN, NOTION_DB_ID | | task-sync.mjs | GitHub issues <> Notion Master Tasks | NOTION_TOKEN, NOTION_TASKS_DB_ID, GITHUB_TOKEN |

Property Mapping (sync-to-notion.mjs)

The script defaults don't match the Notion DB. Use these env var overrides:

NOTION_NAME_PROPERTY="Project Name"
NOTION_CATEGORY_PROPERTY="Status"
NOTION_TAGS_PROPERTY="Stack"
NOTION_DOMAIN_PROPERTY="Domain"
NOTION_DESCRIPTION_PROPERTY="One-Liner"
NOTION_REPO_PROPERTY="Repo"

Or use the PowerShell wrapper: scripts/run-notion-local.ps1

Task Sync — External ID Format

Standard format: owner/repo#number (e.g., morphism-systems/morphism#25)

Legacy format (migrated 2026-03-26): github:org:type:number — all 8 entries migrated to standard format.

Target repos: meshal-web, morphism, neper, qaplibria, edfp

Gmail Labels (Notion AI Integration)

| Label | Purpose | |-------|---------| | Action | Needs immediate action | | DevOps | CI/CD, deploys, infrastructure | | Jobs | Job applications, opportunities | | Finance | Payments, billing, subscriptions | | Travel | Travel bookings | | Notion | Notion-related | | archived by Notion agent | Auto-archived by Notion AI | | 01. Reply | Needs reply | | 02. Follow up | Needs follow-up | | 03. Important Notifications | Important but no action needed | | 04. Notifications | General notifications | | 05. Marketing | Marketing/promotional | | Blocked | Blocked/spam senders | | Later | Deferred |

How to Get Database IDs

# List all databases with IDs and schemas
NOTION_TOKEN=<token> node scripts/notion-db-audit.mjs

# Or query a specific database
NOTION_TOKEN=<token> node -e "
  fetch('https://api.notion.com/v1/search', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + process.env.NOTION_TOKEN,
      'Notion-Version': '2022-06-28',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ filter: { property: 'object', value: 'database' } })
  }).then(r => r.json()).then(d => d.results.forEach(db =>
    console.log(db.id, '-', db.title?.[0]?.plain_text)
  ));
"