tasks/workstreams/mcp-analyst-agent/initiatives/dashboard-linking/research.md

Research

Date: 2025-03-20 Status: Design input for Dataface board linking, quickstart packs, entity/detail navigation

Canonical copy of this landscape lives here (initiative research). A stub in ai_notes redirects for old links.

Consumers

Purpose

Capture how adjacent products handle cross-dashboard navigation, parameterized URLs, and how markdown-like formats express links—so we can compare to Dataface and avoid inventing patterns in a vacuum.


Dataface today (short)


Lightdash (dbt-native BI)

Pattern: Dashboard state in the URL, often as encoded JSON; dimensions can expose templated URLs (Liquid).

Reference: How to filter a dashboard in the URL (Lightdash docs).

Takeaway: First-class parameter passing = opaque URL encoding of filter state, plus template engines in YAML (Liquid) for row/dimension context—not markdown autolink syntax.


Evidence (SQL + markdown in repo)

Pattern: Filesystem routes as pages; templated segments [param] in paths; ordinary markdown links to those routes; parameters exposed to queries/content as {params.name}.

Reference: Templated pages (Evidence docs).

Takeaway: “Headless” linking is [label](path/with/params) where the path is understood by the site generator; dynamic rows produce strings that look like URLs. Very close to conventional markdown + file-based routing.


Metabase (GUI BI; useful URL mental model)

Metabase is not YAML-in-git-first, but it’s the familiar comparison for many teams:

Internal compare note: ai_notes/archive/reviews/compare_metabase.md

Takeaway: Product BI tends toward opaque or structured query strings + UI-configured templates; code-first tools (Evidence) tend toward readable paths and builder-generated hrefs.


CommonMark / GitHub-flavored Markdown

MDX (Markdown + JSX)

Takeaway: If Dataface wants “link to board by slug without full URL”, wikilink-style or dft: scheme is consistent with the wider ecosystem—but out of scope for plain CommonMark; it must be a deliberate extension in Jinja/markdown preprocessing or mdsvg pipeline.

reStructuredText / Sphinx


Synthesis for Dataface

Approach Fits Dataface well when…
Query-string variables (already in Cloud) Detail boards use stable variable names; authors pass ?id= explicitly or via templates.
Readable path per board (/d/slug) + markdown [](/d/slug?x=) Aligned with Evidence-style route + markdown; needs one resolver for dft serve vs Cloud base path.
Symbolic / relative board id (board:slug, [[faces/ticket]], repo-relative path) Reduces duplication; requires compile- or render-time rewriting to absolute URLs.
Structured filter blob (Lightdash-style JSON in query) Powerful for complex filters; good for parity with BI tools; worse for human-readable git diffs—probably secondary for YAML-first.
Canonical / entity metadata (“detail board for ticket”) Optional registry for agents and default drill targets—not required if generic links are ergonomic.

Practical ordering (from prior design chat):

  1. Make dashboard-root and board-relative paths (e.g. /zendesk/tickets/list, ../tickets) rewritten at render time for Cloud vs dft serve—normal markdown strings, resolver maps to storage slug.
  2. Prefer path conventions (…/list, …/detail) over canonical_for YAML in v1; revisit in M5 only if needed (task).

Spec detail: spec.mddashboard-root author paths (e.g. /zendesk/tickets/list); resolver maps to storage slug; no canonical_for in v1 (M5 task if ever).


Further reading (external)


Implementation alignment (summary)

The landscape above argues for readable, generator-resolved links (Evidence-style) over opaque BI filter blobs for v1. The concrete plandashboard-root paths (e.g. /zendesk/tickets/list), ../ from current board, render-time rewrite for Cloud vs serve, user docs in the same delivery, and no entity-registry metadata until M5 if needed—lives in spec and decisions (ADR-001/002). Implement: dashboard-linking-v1; optional registry: M5.

Runtime reminder


Changelog