Notion Workspace Map
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)
));
"