Skip to content

Selected WorkProject 022026Business Intelligence

Director Dashboard

Business intelligence and operational visibility for a construction business.

A director-level dashboard bringing pipeline, project, financial, work-in-progress and risk information from connected business systems into one clear decision-making view.

01Context

01Client
Construction business
02Project type
Business intelligence platform
03Status
In development
04Stack & integrations
  • Next.js
  • Supabase
  • n8n
  • GoHighLevel
  • Xero
  • WunderBuild
Dashboard views — Overview in light and dark mode, pipeline, risk and integrations. Financial figures and identifying details are blurred.

02Problem

Pipeline, project, cost and receivables information lived in separate systems — the CRM, the accounting platform and the construction platform — so understanding the business meant opening each one.

03System Architecture

Synchronise first, then read one model.

Source systems are connected per organisation and their data is pulled into a normalised operational model. The dashboard never calls vendor APIs while a page renders.

Server loaders read that model, scoped to the signed-in organisation, and calculate every figure the director sees.

  1. Sources

    • CRM pipeline

      GoHighLevel

      . Connects to Sync & normalise.
    • Invoices & receivables

      Xero

      . Connects to Sync & normalise.
    • Projects & commercial

      WunderBuild

      . Connects to Sync & normalise.
  2. Integration

    • Integration layer

      Sync & normalise

      . Connects to Supabase.
  3. Data

    • Tenant-scoped data

      Supabase

      . Connects to KPI & insight layer.
  4. Application

    • Next.js server loaders

      KPI & insight layer

      . Connects to Overview & Pipeline, Projects & WIP, Finance, Risk.
  5. Director views

    • Business

      Overview & Pipeline

    • Delivery

      Projects & WIP

    • Receivables

      Finance

    • Exposure

      Risk

  • Primary path
  • Third-party platform

Every business-data read is scoped to the verified organisation, not to anything in the URL.

04Build highlights

A multi-tenant dashboard that synchronises and normalises CRM, accounting and construction data, then presents Overview, Pipeline, Projects, Finance, WIP and Risk views from that one model.

04Dashboard

Six views, one source of truth.

A persistent frame keeps navigation, the organisation’s identity and the theme in place while the Overview, Pipeline, Projects, Finance, WIP and Risk pages change beneath it.

  1. 01Overview

    The same overview in dark mode; the theme switch is presentation-only and never refetches data.
  2. 02Pipeline

    CRM opportunities by pipeline and stage, value coverage and outcomes, from the synchronised GoHighLevel data.
  3. 03Risk

    Commercial exposure, overruns, unbudgeted spend, data confidence and the jobs that need director review.
  4. 04Integrations

    Each organisation connects its own sources; sync status and imported records are visible per platform.

04Engineering

Figures a director can rely on.

  • Security

    Organisation isolation

    Each builder works in a private tenant; every read is scoped to verified membership and fails closed on errors.

  • Calculations

    Deterministic KPIs

    Figures are calculated by the application from normalised records, so the same data always gives the same result.

  • Insight text

    Insights without AI calls

    Summary sentences are built from the loaded facts with controlled variants — no model call at render time.

  • Receivables

    Timezone-aware finance

    Overdue invoices are classified in the builder organisation’s timezone, so date boundaries stay correct.

  • Loading states

    No fake zeroes

    Loading never shows 0 or $0, because zero is a valid business result.

  • White-label

    Per-organisation branding

    Each organisation’s logo, display name and primary colour are applied across the dashboard, with light and dark themes.

04Engineering Detail

What the system does.

A centralized management dashboard designed to give construction business leaders greater visibility into project performance, financial indicators, and business operations.

Key capabilities

  • Business KPI dashboards
  • Active project monitoring
  • Contract and claim visibility
  • Financial information integration
  • Wunderbuild project information
  • Xero finance integration
  • GoHighLevel CRM integration
  • Project performance summaries
  • Financial reporting views
  • Multi-tenant architecture
  • Portfolio-level visibility

Technology

  • Next.js
  • TypeScript
  • Supabase
  • Xero
  • Wunderbuild
  • GoHighLevel

Implementation status

In development

Not every financial view is finalised. Figures in the footage are blurred.

05Result

One operating view of pipeline, project load, cash, work in progress and risk, calculated consistently from the same data rather than reconciled by hand across tools.

Operational value

Business view
One dashboard
Pipeline, projects, finance, WIP and risk in one interface instead of separate source systems.
Source data
Synchronised
CRM, accounting and construction records are synced and normalised before the dashboard reads them.
Figures
Deterministic
KPIs are calculated by the application, so the same data always gives the same result.
Data access
Tenant-scoped
Every business-data read is limited to the signed-in user’s organisation.

06My role

What I was responsible for.

The business, its data and the connected platforms remain with their respective owners.

Figures and identifying details in the published media are blurred.

  1. Product Architecture
  2. Dashboard Engineering
  3. Data Integration
  4. Multi-Tenant Data Model
  5. KPI & Calculation Logic
  6. Dashboard UX/UI
Stack & integrations
  • Next.js
  • Supabase
  • n8n
  • GoHighLevel
  • Xero
  • WunderBuild

Contact

Have a workflow, dashboard or CRM that needs fixing? Let’s talk.

Available for new projects

Tell me about the operation, the systems involved and where the work gets stuck. A short call is usually enough to see whether I can help.