online page: services offerings: 6 active pricing: day rate · fixed-fee
locale: en-AU · Sydney UTC+10 refresh: live

Greenfield Fabric architecture, or migration from BYOD, legacy SQL Server, Azure DW, or SAP BO. Medallion lakehouse, Direct Lake semantic models, OneLake shortcuts, Snowflake or Iceberg mirroring, capacity strategy, governance written down before the first pipeline lands. DBT Core in the warehouse where the model layer shouldn't be doing the heavy lifting.

What you get

  • Medallion (Bronze / Silver / Gold) PySpark patterns, notebook-first, deterministic
  • DBT Core on Snowflake or on Fabric warehouses — sources, tests, exposures, macros, CI
  • Direct Lake semantic models against Iceberg or Delta — fall-back strategy when DAX needs it
  • Snowflake or Azure SQL Mirroring into Fabric, with OneLake shortcuts where it's cheaper
  • Eventhouses, Real-Time Intelligence, KQL queries, Eventstream pipelines
  • Git-integrated workspaces — fabric-cli automation, sempy notebooks for validation
  • Multi-tenant and multi-geo capacity design, with capacity reservation strategy

Stack

Microsoft FabricDirect LakeOneLakeDBT CoreSnowflakeIcebergDelta Lakefabric-clisempyPySparkKQLGit integration

deliverable

An architecture decision record, a working medallion lakehouse, a DBT project under PR-gated CI, and a migration plan with cutover dates and a roll-back gate.

Stand up a Power BI tenant the way it should be stood up the first time. Workspace topology, capacity sizing, deployment pipelines wired to Git, RLS patterns, dataset refresh strategy, Fabric admin posture from day one. Most "Power BI is slow" complaints we hear are foundation problems that were never going to scale — we fix the foundation so the next ten reports inherit the right defaults.

What you get

  • Capacity sizing (Fabric F SKUs, Premium, PPU, Embedded) — sized to actual workload, not vendor table
  • Workspace, app, and lifecycle topology (dev/test/prod) with Entra ID security groups
  • PBIP project structure from day one — TMDL model, PBIR reports, all under source control
  • Deployment pipelines via Azure Pipelines or GitHub Actions, fed by pbir-cli and fabric-cli
  • Dataset refresh and scheduling strategy — including sempy-driven validation
  • Row-Level Security patterns (static and dynamic) with reproducible test harnesses
  • Fabric / Power BI tenant settings posture — audit log, capacity workload, gateway hygiene

Stack

Power BIMicrosoft FabricPBIP / PBIRTMDLpbir-clifabric-cliAzure ReposAzure PipelinesEntra ID

deliverable

A working tenant, a Git repo your team owns, deployment pipelines that ship to test on every PR, an as-built ADR, and a written runbook for refresh, RLS, and tenant administration.

The diagnostic we recommend when nobody is sure where the problem actually lives. Capacity utilisation, F SKU right-sizing, throttling and smoothing patterns, model-by-model health, tenant-settings posture, RLS test harnesses, hidden cost drivers. Delivered as an Architecture Decision Record — citations to the measure, table, or capacity event — not a slide deck.

What you get

  • Capacity utilisation and throttling analysis via Fabric Capacity Metrics App + sempy
  • F SKU right-sizing — projected spend before and after, modelled against real workload
  • Per-model health scan — TE BPA, Fabric Inspector, semantic-link-labs lineage
  • pbir-cli static analysis across the entire report layer
  • Tenant settings posture review — audit log, workload settings, gateway hygiene, multi-geo
  • RLS posture audit, with a reproducible test harness for the user roles that matter
  • Hidden cost drivers — runaway refreshes, oversized models, capacity smoothing surprises
  • IBCS conformance review on the executive pack
  • Prioritised remediation roadmap — every finding cited to a specific artefact

Stack

Fixed-feeADRFabric Capacity Metrics AppTE BPAFabric Inspectorsemantic-link-labssempypbir-cliIBCS

deliverable

An ADR-format written report, ranked findings cited to specific artefacts, a Fabric admin posture recommendation, and a remediation roadmap you can hand to anyone — including not us.

Targeted refactor of the slowest, ugliest part of your modelling layer. Star-schema redesign, calculation groups, perspectives, composite-model patterns, query reduction, and DBT Core in the warehouse where the model layer shouldn't be carrying the load. Reports that took 30 seconds now load in under 3 — with the rewrites tested in CI before they reach prod, not after.

What you get

  • Star-schema redesign and model audit (TE BPA, Fabric Inspector, semantic-link-labs)
  • DAX query-plan analysis with VertiPaq Analyzer; agent-assisted rewrites where the pattern fits
  • Calculation groups, perspectives, field parameters; TMDL editing in VS Code
  • TE3 + TE CLI scripting, BPA enforcement, sempy-driven model tests in CI
  • DBT Core remediation — push transforms down to the warehouse when it belongs there
  • Composite and Direct Lake patterns, with fall-back guidance documented
  • IBCS-aligned visual redesign on rebuilt pages — restrained colour, comparable scales, no chartjunk

Stack

DAXTMDLTabular Editor 3 / TE CLIPower Query (M)DBT Coresempysemantic-link-labsFabric InspectorIBCS

deliverable

Before-and-after benchmarks on every page touched, a rewritten model committed to your repo, a DBT project where transforms belong in the warehouse, and DAX patterns documented for your team.

For ISVs and SaaS products shipping analytics to their own users. App Owns Data tenancy, multi-customer isolation, embed-token lifecycle, white-labelled visuals, render testing in CI. Built with the assumption that your auditors are going to ask hard questions about tenant separation — and we'd like the answer in writing before they ask.

What you get

  • App Owns Data architecture, service principal auth, embed-token strategy
  • Multi-tenant workspace and capacity strategy — auditable isolation per tenant
  • Embed-token lifecycle, caching, and rotation; CI-tested expiry behaviour
  • White-labelled themes and Deneb / Vega-Lite custom visual extensions
  • Playwright + Selenium render testing in CI on every release
  • REST API health-check tooling and tenant-by-tenant probes
  • DevOps for ISVs — Git, PR-gated deploys, embed-token tests inside the same pipeline

Stack

Power BI EmbeddedApp Owns DataEntra IDPlaywrightSeleniumREST APIDeneb / Vega-LiteAzure Pipelines / GitHub Actions

deliverable

A productionised embedded analytics layer, automated render and embed-token tests gating every release, and an architecture document your auditors will sign off on.

A senior architect attached to your data team part-time. Roadmap, code review on every PR, hiring input, capability uplift, migration to the code-first workflow if the team isn't there yet. The goal is to leave your team capable, not dependent. If we're still here in two years doing the same work, one of us has made a mistake.

What you get

  • Quarterly BI roadmap and OKRs, written down, reviewed against outcomes
  • Code review on every PR — TMDL, DAX, DBT, PBIR — with a checklist your team inherits
  • Dev-first workflow uplift — PBIP migration, Git branching, CI/CD with pbir-cli and fabric-cli
  • DBT adoption in the warehouse where transforms belong out of the model layer
  • IBCS adoption — disciplined visual grammar for executive reporting
  • AI-tooling adoption — what to use, what to sandbox, what to keep out of cloud APIs
  • Hiring scorecards, take-home design exercises, technical interviews
  • Capability mapping and a written training plan
  • Vendor and tool selection (the unglamorous version: costed comparisons, not vendor decks)
  • Stakeholder and exec communication — written-first, ADR-style

Stack

RetainerCoachingRoadmapPBIP migrationDBT adoptionIBCSSandboxed AI

deliverable

A BI team that ships better work without us. Quarterly written progress reports. A code-first practice that survives the next hire.

02 / engagement-formats

Three ways we work.

Most engagements start small and extend. A fixed-fee audit is the most common entry point — it gives us a shared map before either of us commits to anything bigger.

format / 01

Fixed-fee audit

Two-week diagnostic. Written ADR with citations. Best when you're not sure where the problem lives.

2 wksFixed price

format / 02

Sprint delivery

Two-week sprints, daily written stand-ups, code review on every PR, deployment pipelines from sprint one. Scope agreed sprint-by-sprint.

Day rateSprints

format / 03

Fractional retainer

1–3 days a week, ongoing. Roadmap, review, coaching, code-first workflow uplift. We leave when you don't need us.

3–12 moEmbedded

resolve --which-format

Not sure which one you need?

Most engagements start with a 30-minute call. Bring your slowest report, your capacity-metrics screenshot, or your migration scope — we'll tell you which format fits, or tell you it's not us.