VisionWrights VisionWrights Composable Analytics

Prepared for CareerPlug · July 2026

Composable Analytics Pipeline
& Business Intelligence

VisionWrights operates a composable analytics platform assembled from established open-source components. This page describes the platform's structure, the default tools in each role, the selection criteria each component passed, the status of CareerPlug's migration pilot, and answers to questions raised by CareerPlug's engineering team.

01 · The architecture

How the platform is structured.

Each layer in the architecture below has a single defined role and a default component filling that role. Every layer connects to the next through a stable, standard interface — SQL, open table formats, or versioned API contracts — so components can be upgraded or replaced independently. Click any layer to expand its bonafides. The dashed boundary marks what Dagster orchestrates and observes.

Platform schematic
DATA SOURCES
Where CareerPlug's data originates — the platform ingests from these.
Product databaseApplication data, transactional records
SaaS systemsBilling, product analytics, CRM
Incumbent BI platformRead-only reference during migration
Dagster orchestration boundary
Orchestration Runs, schedules, and observes every step inside this boundary — run history, lineage, freshness, alerting
Dagster platform default Dagster — US Foods · easyJet
Dagster schedules and runs every pipeline step inside this boundary — ingestion, transformation, and storage — and records a complete run history with asset lineage. Every materialization is logged; staleness and failure surface immediately in the operations view. Alerts fire on missed freshness windows or pipeline errors before downstream consumers are affected.
US Foods (Fortune 500): 99.996% pipeline uptime, $24B annual operations — case study →
easyJet Holidays: 15× faster pipelines, runtime cut from 2.5 hours to 10 minutes — case study →
Otto (Germany's largest e-commerce group): enterprise data-platform migration — case study →
Apache 2.0 license. Python-native with local testing; orchestration logic stays portable, and the asset-based model makes lineage a first-class feature. The license keeps the community-fork path open if the vendor relationship ends. Dagster docs →
Ingestion Moves raw data from sources into storage
dlt platform default dlt — PostHog · Flatiron Health
Extract-load pipelines defined in code. During a migration this layer runs from staged extracts of the incumbent platform; in production it connects to source systems directly. Declarative schemas, automatic schema evolution, and built-in state management for incremental loads.
3,000+ companies in production including PostHog and Flatiron Health (healthcare, regulated) — dltHub milestone post →
Flatiron Health: ~50% reduction in ingestion/transformation pipeline cost — case studies → Youngest component in the stack — its production users are scale-up class where other layers carry Fortune-500 case studies. Its role is narrow and swappable, and VisionWrights supports it directly.
Apache 2.0. Python library; runs on any infrastructure. 3M+ monthly downloads (dltHub, Nov 2025). Selection criterion: declarative, code-first, incremental-load-native, Redshift-compatible. Runs in CareerPlug's AWS.
Transformation Turns raw extracts into tested, modeled tables
dbt Core platform default dbt — Siemens · Nasdaq
Every pipeline step is plain SQL in a dbt model, stored in a version-controlled repository. Reconciliation checks run as standard dbt tests on every build; a check that fails blocks promotion. dbt runs natively on Redshift; models, tests, and measure definitions transfer regardless of which infrastructure decision is made.
Siemens: data mesh at scale, used by hundreds of thousands of employees — case study →
Nasdaq: several hundred dbt models power the options business; replaced ticket-driven data requests — case study →
JetBlue: migrated 26 critical data sources, eliminated data-engineering bottlenecks — case study →
Apache 2.0 (dbt Core). SQL-native — readable by any analyst, diffable in git, reviewable in a pull request. Native Redshift adapter. Test framework built in: schemas, uniqueness, referential integrity, custom reconciliation checks. dbt Labs passed $100M ARR driven by Fortune 500 adoption — the community durability criterion is met.
Storage Holds modeled data in a queryable, open format
client Redshift Parquet / Iceberg lakehouse Iceberg — Netflix · Adobe
Two open storage paths behind the same platform: CareerPlug's existing Redshift warehouse, or an open-table-format lakehouse using Parquet files under Apache Iceberg. Either path deploys into CareerPlug's own cloud account; the format is readable without platform dependencies.
Netflix created Apache Iceberg (2017) to fix correctness and atomicity limits at Netflix scale; donated to the Apache Software Foundation — original repo →
Adobe runs 1PB+ on Iceberg for the Adobe Experience Platform — Adobe Tech Blog →
LinkedIn open-sourced OpenHouse, a control plane for Iceberg tables — LinkedIn engineering →
Apache 2.0 (Iceberg, Parquet). Apache top-level project; ASF governance; PMC members from Netflix, Apple, LinkedIn, Adobe — durability criterion met. Parquet is the standard open columnar format underneath Iceberg: the CIDR 2021 Lakehouse paper treats it as the format the industry standardized on. Data lives in the client's own S3 or Redshift; no proprietary warehouse required.
Semantic layer One governed definition per measure · server-side RLS · AI-ready access · pre-aggregation for interactive latency
Cube platform default Cube — Alcon · Brex
The semantic layer is where governance lives. Every measure has one named, versioned definition — each consumer reads that definition instead of maintaining its own copy, so dashboards and embeds stay in agreement. Row-level security is enforced server-side at the semantic layer API before any data reaches a browser — for dashboards, embeds, and plain-language queries alike. The same governed, secured definitions are what AI applications query: agents inherit the governance already in place instead of bypassing it. And pre-aggregation carries the performance — Cube pre-computes aggregates and serves dashboards and embeds from them without touching the underlying warehouse on every query; in the evaluation environment, embed queries return in well under a second against CareerPlug's full June dataset.
Alcon (global eye-care, Fortune-500-class): "from dashboards to dialogue" — agentic analytics built on Cube's semantic layer — case study →
Brex: embedded AI financial analyst for 35,000+ customers, grounded in Cube — case study →
Webflow: one semantic layer serving both internal BI and customer-facing embedded analytics — exactly the dual-track pattern here — case study →
Drata (compliance SaaS): scales data-driven decisions with Cube semantic layer + AI agents — case study →
Apache 2.0 (Cube Core). Selection criteria met: SQL API for BI tools, REST/GraphQL for embedded and AI consumers, native Redshift support, pre-aggregation via Cube Store, queryRewrite for server-side RLS. AGPL applies to Cube Cloud; self-hosted Cube Core is Apache 2.0 — client runs it on their own infrastructure.
Applications Software modalities that read governed data from the semantic layer
Embedded Embedded in CareerPlug's product — each partner sees exactly their data
Plain-language natural-language query self-service conversational dashboard generation voice interfaces
Extensibility agentic workflows on governed definitions CareerPlug's analysts — one definition of every measure
Superset — Airbnb · Dropbox
The semantic layer serves all application modalities from one set of governed definitions. Metabase serves analyst dashboards by default; Apache Superset handles embedded contexts. The same governed measures power embedded analytics in CareerPlug's product — web and mobile, with per-partner row-level security enforced server-side before any data reaches a browser. Plain-language query restricts generated SQL to governed measures only; generated SQL is surfaced; the system escalates rather than improvising when asked for something outside the semantic layer. Because every application reads the same definitions under the same enforced security, new AI applications — agentic workflows, functional tools, voice interfaces — arrive as governed additions to the platform: same definitions, same enforced security, from day one.
Metabase: 80,000+ organizations (first-party install-base figure, stated as such) — the named evidence is N26, Europe's first mobile bank →
Apache Superset: created at Airbnb; production at Dropbox; listed at Netflix, American Express, Lyft — ASF announcement →
Embedded analytics pattern: Webflow uses the same Cube semantic layer for both internal BI and customer-facing embeds — Webflow case study →
AI extensibility: Alcon and Brex build AI analysts on this same semantic layer — Alcon → · Brex →
Ownership by tier: Dashboards — open source (Metabase AGPL-3.0, Apache Superset Apache-2.0) · Embedded widget — VisionWrights proprietary platform component, source delivered for CareerPlug's use · Plain-language & extensibility — VisionWrights proprietary, built on the semantic layer's APIs.

Proprietary components: the widget framework, natural-language query builder, and agentic dashboard generation are VisionWrights' platform product — built to serve many clients and licensed per client. The embedded widget is delivered as source into the client's repository for use, modification, and continued operation; the plain-language and dashboard-generation surfaces are operated as part of the platform, with their architecture and behavior walked through on request.

Metabase: AGPL-3.0 for internal analyst use; wide install base confirms community durability. Product embedding uses the API-based VisionWrights widget (source delivered) or Apache Superset (Apache 2.0).

Apache Superset: Apache 2.0; Apache top-level project; runs entirely on client infrastructure.

AGPL note: Metabase AGPL applies to internal analyst dashboards. Product embedding uses the widget pattern or Superset. Widget source is delivered to CareerPlug from day one.
CONSUMERS
Who and where governed data is delivered.
Embedded in CareerPlug's productEach partner sees exactly their data — row-level security enforced server-side before data reaches a browser.
CareerPlug's analystsOne definition of every measure, shared across every tool in the platform.
Operations viewVisionWrights-built convenience layer — the platform runs independently of it.Any number traced to its SQL, tests, and freshness — across every layer in one view.
beside a layer name: open source, community-maintained VisionWrights-built, source delivered (Applications mixes both — see its Selection & license tab) Names at right ("Superset — Airbnb · Dropbox") — the component and teams running it in production Dashed boundary — Dagster orchestrates and observes everything inside it

These engineering teams reached their conclusions independently — every evidence link in the expandables above is a first-party case study or engineering blog, and the layered pattern itself is the industry's converged blueprint — a16z emerging architectures →

02 · Component selection — Why these defaults

Why each role in the architecture is filled by this component.

Each role in the architecture above is filled by a default component, and every default passed the same selection checks — the ones that matter most for this evaluation are below; the full nine-check rubric, including what disqualifies a component, is in the technical appendix.

License quality

The license is permissive enough to embed in a product, run in the client's own account, and hand to an internal team — and it permits independent continuation if the vendor relationship ends.

Community durability

Active maintainer base and governance structure that outlasts any single vendor. Foundation governance (Apache) and fork-permitting licenses are the clearest forms of this.

Production evidence at scale

Named companies with first-party engineering evidence — blogs, case studies, and conference talks from the practitioners who run it.

Runs on infrastructure the client owns

Every component deploys to the client's existing cloud account and runs natively on their data warehouse — the client controls the infrastructure and the data, end to end.

Swappable behind stable interfaces

Each layer sits behind a contract — the semantic layer API, the dbt SQL contract, the orchestrator's asset model — so components upgrade or swap independently.

Embed + row-level security capability

Product embedding and per-user RLS are first-class capabilities of the layer, enforced server-side before data leaves the semantic layer.

03 · Migration pilot

CareerPlug's migration pilot.

To demonstrate migration speed, VisionWrights migrated one of CareerPlug's production dashboard suites onto the platform during the evaluation — hours per dashboard with the translation tooling described below, days for the full suite. The suite runs against CareerPlug's June data; every figure matches Domo's output to the unit on hires and to the cent on revenue, and the reconciliation checks remain in the pipeline as permanent tests — standard dbt test functionality, applied per VisionWrights' implementation practice. The remaining suites will follow the same path in the migration proper.

EMBED
Product analytics, web and mobile

Responsive, viewport-aware dashboards in CareerPlug's product surfaces — web and mobile — using the same integration pattern as the current embeds. Row-level security is enforced server-side via signed tokens; per-user scope is set at the semantic layer before any data reaches a browser.

LICENSE
Licensing relief

Every load-bearing component carries a permissive license (Apache 2.0 or equivalent) that deploys freely on CareerPlug's own infrastructure, without per-seat reader pricing or per-query metering. Platform costs are the VisionWrights subscription — the assembled software, its operation, upgrades, and support — plus CareerPlug's own infrastructure. Metabase's AGPL edition serves internal analysts; product embedding uses the VisionWrights widget (proprietary, source delivered) or Superset (Apache 2.0).

STACK
A stack the client's team can run

Plain SQL in dbt, in a git repository — readable by any analyst, diffable, testable, reviewable in a pull request. dbt runs natively on Redshift; everything moves to CareerPlug's AWS account when ready. The work produced during this engagement remains valid under any future infrastructure decision.

NLQ
Plain-language self-service for everyone

Natural-language query for staff and partners who work outside BI tools — restricted to governed measures only, so generated queries cannot reach un-modeled data. The generated SQL is shown; the system escalates rather than improvising when asked for something outside the semantic layer.

GOV
Governance: one definition, everywhere

Measure definitions live once in the semantic layer and serve every tool — the BI dashboards, the embedded widget, the plain-language interface, and future AI modalities. Full lineage, per-step SQL, test results, and freshness in one operations portal rather than five separate consoles.

RLS
Row-level security, server-side

Per-user signed tokens; RLS enforced at the semantic layer API before any data leaves the server. Tenant isolation and per-engagement data-access grants are enforced by design. Audit lineage is available on request.

04 · See it

See the platform running on CareerPlug's data.

The live environment is at careerplug.bi.visionwrights.com — a recorded walkthrough of the rebuilt analytics and the logins are on their way separately, so CareerPlug's team can drive it on their own schedule. CareerPlug's engineers can also go straight to the technical appendix.

05 · Questions from CareerPlug's engineering team

Questions and answers.

The questions CareerPlug's engineering team raised about the platform — answered on their technical merits. The full component inventory and deployment models are in the technical appendix.

The decision at hand is whether to start a parallel build — pipelines running against CareerPlug's data while Domo keeps running, untouched and fully authoritative, with no change visible to any user. The build and reconciliation stages run entirely on the VisionWrights side and require nothing from CareerPlug's team beyond the data access already in place for the evaluation. Nothing user-facing moves until the internal-trial stage, and each production surface cuts over only on CareerPlug's team's explicit signoff for that surface.

That path is how the stack was designed. dbt runs natively on Redshift — CareerPlug's Redshift, in CareerPlug's account — and the past year of work moving logic into Redshift fits this design: the platform is built to run against the warehouse CareerPlug already owns. The technical appendix defines three deployment models (A through C); model C puts everything in CareerPlug's AWS — dbt against Redshift, Dagster on ECS or MWAA, BI tools on client infrastructure. Moving from the current VisionWrights-hosted evaluation environment to CareerPlug's account is configuration and deployment work; no component is tied to where it runs. VisionWrights operates the platform as code in every model — deployment, configuration, and monitoring are programmatic — so the same automation that runs the evaluation environment runs identically inside CareerPlug's account, under a scoped deployment role CareerPlug grants and can audit. The SQL, models, tests, and measure definitions transfer regardless of which infrastructure decision is made.

The VisionWrights-built portion is principally a transparency layer: a platform sitemap, monitoring, and health visualization that sits on top of the tools comprising the platform. It is built for operator convenience and visibility — surfacing live lineage, per-step SQL, test results, and freshness from dbt, Dagster, and Cube in one view rather than five separate consoles. Every underlying function — pipelines, dashboards, embeds, row-level security — continues unaffected if this layer is unavailable. It is proprietary to VisionWrights and part of the platform's value; it is not load-bearing for the data itself.

The custom surfaces are thin by design, and each has a clear ownership shape. The product-embedded widget (React/JS over documented semantic-layer APIs) is delivered as source into CareerPlug's repository from day one — licensed for use, modification, and continued operation, and small enough for one in-house engineer to review and maintain; source review is available before any commitment. The plain-language query builder and operations portal are VisionWrights' platform product, built to serve many clients and operated as part of the platform: the builder composes queries from the semantic layer's named measures only, surfaces its generated SQL, and escalates when asked for anything outside the semantic layer; its architecture and behavior are walked through with CareerPlug's engineers on request. Every underlying data function continues unaffected without either surface.

Reconciliation runs as a permanent test suite inside the pipeline on every build — dbt's built-in test framework, applied as best-practice implementation from VisionWrights' experience with this technology. The suite covers the measures the business actually reads — total hires matched to the unit, revenue matched to the cent, and the table-level totals behind every major surface. A check that fails blocks promotion, so a number that stops matching is caught at build time. The tests are plain dbt tests in CareerPlug's repository; CareerPlug's team can run them, inspect them, and extend them. The oracle is Domo's own output during the migration window, so correctness is demonstrated against the system CareerPlug already trusts.

A senior data architecture and engineering team, with AI-accelerated delivery that compresses timelines — the firm's data architecture and governance experience shapes the work; AI tooling shortens the build time. A term agreement commits VisionWrights to deliver a working solution for that term; the technology choices underneath remain changeable during the same period — components swap inside the agreement as needs and the industry change. The engagement scales from fully managed to co-owned to client-operated, and the artifacts (dbt models, semantic layer definitions, test suite) belong to CareerPlug at every stage. The glide path toward a CareerPlug data engineer hire is built into the design: that engineer would inherit a documented, tested codebase built on standard tools.

Everything here is available for hands-on review.

The demo recording, live-system logins, and the technical appendix accompany this page — review at the team's own pace. Questions travel well in writing and get written answers: mark@visionwrights.com.