Analytics Layers

This note fixes vocabulary around analytics surfaces. The product can ship without the user-facing analytics tab, but the names must stay clear so later work does not mix product analytics, platform intelligence, runtime diagnostics, and release quality.

Workspace Analytics

Workspace Analytics is the future user-facing tab inside one workspace:

careervector.corbet.ch/{workspace}/analytics

Its audience is the workspace owner. It should answer questions such as:

  • Which sources produce interviews?
  • How long does each stage take?
  • Which industries, role families, locations, or salary bands convert best?
  • Which statuses are stale and need follow-up?
  • Which evaluation criteria correlate with progress?

The page must read through the workspace projection. A workspace sees its own values first. If a workspace overrides a fact, analytics for that workspace use the override. If it does not override a fact, analytics use the inherited ad or role value exactly as the rest of the workspace UI would.

Workspace Analytics aggregates across all jobs inside that one workspace. The unit of analysis is the user's search, not one ad. That lets the workspace owner see patterns across sources, companies, role families, status changes, follow-up cadence, evaluations, and outcomes.

Platform Analytics

Platform Analytics is internal and business-facing. It is related to the entity fact tree, but it is not the same hierarchy as role -> ad -> workspace job. For analytics, the hierarchy is:

job market -> CareerVector observed corpus -> workspace

The job market is the real target, but it cannot be directly observed. We only see fragments: scraped ads, user-imported ads, workspace actions, outcomes, evaluations, and later external calibration signals.

CareerVector's observed corpus is the middle layer. It contains the ads and roles the system has seen one way or another: jobcache scraping, user imports, workspace enrichment, deduplication, and derived facts. It is not the whole job market. It is our sampled and enriched view of it.

Workspaces are the bottom layer. They contain concrete search behavior and outcomes. Workspace observations roll upward into the observed corpus when they can be safely aggregated. The corpus is then used to infer broader job-market knowledge with statistical calibration for sampling bias, source coverage, recency, geography, role family, and confidence.

Examples:

  • One parsed ad description can serve many workspaces.
  • Source conversion rates can be aggregated across workspaces.
  • Market salary bands can emerge from many workspace observations.
  • Role-family and company signals can be computed once and reused.
  • Coverage gaps can be estimated by comparing observed ads against expected market structure.

Workspace Analytics and Platform Analytics therefore share computation. We should compute statistical facts once, then project them differently:

  • Workspace projection: useful feedback for one applicant.
  • Platform projection: aggregate product intelligence and future commercial datasets.
  • Job-market projection: inferred knowledge about the wider market, with confidence and calibration rather than claims of direct observation.

Privacy Boundary

Workspace Analytics may use private workspace data because it is shown back to that workspace. Platform Analytics must only receive data that has crossed the privacy boundary intentionally: aggregate, pseudonymized, anonymized, or otherwise explicitly business-safe.

The D1 and Cockroach split supports this:

  • D1 holds workspace-local, high-churn, user-facing state.
  • Cockroach holds platform knowledge: ads, roles, shared aggregates, vectors, and business intelligence.

Do not solve privacy by adding a dangerous visibility switch to arbitrary data. Prefer a clear export boundary from workspace-local facts into platform-safe facts.

Runtime Diagnostics

Runtime Diagnostics are internal engineering signals: sync failures, browser connection health, server errors, latency, and related operational evidence. These belong behind an internal status surface such as:

status.careervector.corbet.ch

They are not Workspace Analytics and must not appear as a user-facing analytics feature.

Quality

Quality is release and test evidence: E2E runs, browser artifacts, performance checks, migration checks, cutover gates, and audit results. It is also internal and can live under the same status surface, for example:

status.careervector.corbet.ch/quality

Quality is not Platform Analytics. It may inform whether a release is safe, but it is not a market or workspace insight product.

Source: wiki/content/architecture/ANALYTICS-LAYERS.md