The database the platform reads & writes
The platform owns its data. It is a Supabase/Postgres database with every application table in the em schema (~80 tables plus their read views), provisioned by the migrations in supabase/migrations/. Skills and the web app never touch a base table: they read through security_invoker views (the *_board / *_current views) and write through security definer RPCs gated by em_private.accessible_write. What follows is the map by domain - the base tables and the main views over them. A handful of things stay external by design; see the last card.
Tasks, plans & autonomy state
The EM's task hub, the daily plan, and the platform's autonomy scratch space.
| Table / view | Kind | What it holds |
|---|---|---|
em.tasks | table | The task hub - written idempotently by many skills on a source_key |
em.task_board / my_task_board | view | Active tasks, quadrant + delay computed; the EM's own slice |
em.task_aging / task_backlog | view | Aging sweep + backlog for the nightly hygiene pass |
em.daily_plans | table | One plan per EM per day (body_md + sections jsonb) |
em.daily_plan_today / daily_plan_log | view | Today's plan and the running plan history |
em.decision_memory | table | Durable decisions the routines remember across runs |
em.capture_queue / tracked_items | table | Meeting-capture gaps and observed blockers |
Risk
PRINCE2-structured risks with 5×5 scoring and a review cadence.
| Table / view | Kind | What it holds |
|---|---|---|
em.risks | table | Cause/Event/Effect body, probability×impact, lifecycle status |
em.risk_board | view | Open risks with score, band and cadence computed |
em.risk_reviews / risk_comments | table | The review log and comment threads |
People, 1:1s & feedback
Teammates, satisfaction records, written feedback, wins and growth.
| Table / view | Kind | What it holds |
|---|---|---|
em.people | table | Teammates and stakeholders (subtype model) |
em.person_profile / teammate_directory | view | The person read model with recent 1:1s + trend |
em.one_on_one_sessions | table | Scored 1:1 records (deterministic 0-10 satisfaction) |
em.one_on_one_notes | table | Owner-only narrative notes (RLS by owner) |
em.one_on_one_wellbeing | table | Private well-being context, never fed to the score |
em.feedback_log_entries | table | SBI feedback; read via em.feedback_board / feedback_due |
em.wins / growth_paths | table | Recorded wins and growth plans |
em.coaching_evaluations / coaching_goals | table | The EM's own 1:1-craft coaching program |
em.performance_reviews / pulse_surveys | table | Review drafts and pulse/eNPS runs |
Accounts, engagements & conversations
The client side - accounts, engagements, stakeholders, and the audit trail.
| Table / view | Kind | What it holds |
|---|---|---|
em.accounts / engagements | table | Accounts and their engagements |
em.engagement_health / account_health | view | Per-engagement and per-account health read models |
em.stakeholder_profiles | table | Client-side stakeholder profiles + sentiment |
em.conversation_log_entries | table | Client conversation log; read via em.conversation_board |
em.account_comm_plans / account_comm_touchpoints | table | The relationship communication plan |
em.account_changelog_entries | table | Audit rows; em.account_changelog is the view over it |
OKRs (mirror of Tability)
Tability stays the system of record; the platform mirrors the quarter for in-product visibility.
| Table / view | Kind | What it holds |
|---|---|---|
em.objectives | table | Objectives, mirrored from Tability on a source_key |
em.key_results | table | KRs with the measurable-target gate enforced |
em.objective_board / key_result_board | view | The /okrs read model |
Signals, proposals & routines
The autonomy backbone - what the morning stages and the closer applies.
| Table / view | Kind | What it holds |
|---|---|---|
em.signals | table | Persisted hygiene / risk / composite signals (signal_board) |
em.proposals | table | Staged judgment items; read via proposal_board / proposal_ledger |
em.proposal_trust | table | The per-action trust ladder (auto / suggest / off) |
em.carry_forwards | table | Directed follow-ups staged for the next day |
em.routine_runs | table | A row per routine run (routine_run_log) |
em.meeting_load_snapshots | table | The EM's own weekly meeting-load reads |
Team ceremonies & onboarding
Standups, retros, kickoffs, postmortems and the 30-60-90.
| Table / view | Kind | What it holds |
|---|---|---|
em.standup_logs / standup_entries | table | Daily standups; read via em.standup_board |
em.retro_logs / ceremony_logs | table | Retros and generic ceremony records |
em.project_kickoffs / incident_postmortems | table | Kickoffs and blameless postmortems |
em.onboarding_plans / onboarding_milestones | table | 30-60-90 plans and their milestones |
em.onboarding_checkpoints | table | Day-30/60/90 (+ vendor Fit) checkpoints |
BigMac, reports & platform
The sprint-audit grid, report records, and the identity / settings layer.
| Table / view | Kind | What it holds |
|---|---|---|
em.bigmac_runs / bigmac_run_results | table | Sprint-audit runs and per-capability results |
em.bigmac_capabilities / bigmac_criteria | table | The Big Mac framework definition |
em.report_records | table | One idempotent row per generated report (report_board) |
em.em_users | table | The EMs; timezone drives em.em_clock |
em.em_settings / em_settings_current | table/view | Per-EM settings resolved by the app + routines |
em.em_account_assignments | table | Which EM is assigned to which account (the scope spine) |
What stays external
Three things are deliberately not modelled in the em schema.
| System | What lives there | Why |
|---|---|---|
| Notion | The EM Library (canonical templates / frameworks / FAQs) and its Gaps backlog | A curated knowledge base the copilot reads (em-ask / em-howto); the one Notion write is a gap row on a miss |
| Tability | The OKR system of record | OKRs are authored in Tability and mirrored into em.objectives / em.key_results for in-product visibility |
| Airtable | The BigMac best-practices grid | The framework grid is maintained in Airtable; the platform stores per-account run results in em.bigmac_* |