Skip to main content

For Microsoft partners

Dashboards that tell your client what to do

Not “gross margin is 31%.” “Stop quoting these twelve items.” Built on your client’s own data, in their tenant, under your brand.

  • ✓Mutual non-solicit signed before kickoff
  • ✓Your brand, your email, your deck
  • ✓I add to your scope, never replace it

Seven dashboards, the same method

The dashboard shows the problem and stops there.

Pick a dashboard below and follow one number from the morning screen to the thing somebody does about it. Your reporting gets it to step two and it is right to. Everything after that is a different job, and it is the one I do.

One morning number, four questions nobody asked it

  1. 512items at zerowhat the report shows
  2. 233really shortless make to order
  3. 184with nothing on orderless already covered
  4. 19,400units of orders blockedpurchasing joined to sales
  5. $6.9Mworking capital in reachgraded against the band

A correct receivables balance, and nobody knows who to ring

  1. Already in place

    $2.91Moutstanding across 1,240 open invoices

    The balance is right, current, and on a screen every morning.

    Everything refreshes on schedule. That is the hard part, and your team did it.

    Accounts receivable report showing $3M outstanding across 1,240 invoices, 37 average days overdue, and the balance by customer segment.
    A real Power BI page on synthetic demo data. Nothing is wrong with it. Open it live in Power BI (opens in a new tab)
  2. Where it stops

    $1.38Mpast due, across 604 invoices

    Past due is not the same as chaseable, and the report cannot tell them apart.

    This is where a reporting engagement ends. The next question is not a chart request.

    What the report already has
    AR Past Due =
    CALCULATE (
        [AR Outstanding],
        'SalesInvoices'[Days Overdue] > 0
    )
  3. What I add

    $1.02Mgenuinely chaseable, 438 invoices

    Drop the disputes, the payment promises and the accounts on hold.

    Ringing a customer about an invoice they dispute, or one they promised to pay on Friday, costs the relationship and collects nothing.

    Why it does not come as standard. Disputes, payment promises and credit holds sit in three different places, and nobody asks a report writer to join them.

    $1.38Mless $367K on dispute, promised or on hold$1.02Mworth a call
    The measure that replaces past due
    AR Chaseable Today =
    SUMX (
        FILTER (
            'SalesInvoices',
            'SalesInvoices'[Days Overdue] > 0
                && 'SalesInvoices'[On Dispute] = "No"
                && ISEMPTY ( RELATEDTABLE ( 'PaymentPromises' ) )
                && RELATED ( 'Customers'[On Credit Hold] ) = "No"
        ),
        'SalesInvoices'[Remaining Amount]
    )
  4. What I add

    $432Kin the forty worth a call first

    Ranked by value, so somebody works an actual list on Monday.

    Forty calls cover over 40% of everything worth chasing.

    Rebuilt page: $1M past due, $1M chaseable today, $432K in the first forty calls, above a ranked chart of customers to call.
    The same data as a call list, from the same model. Open it live in Power BI (opens in a new tab)
    The call list, as a measure
    AR Call First 40 =
    SUMX (
        TOPN (
            40,
            FILTER (
                'SalesInvoices',
                'SalesInvoices'[Days Overdue] > 0
                    && 'SalesInvoices'[On Dispute] = "No"
                    && ISEMPTY ( RELATEDTABLE ( 'PaymentPromises' ) )
                    && RELATED ( 'Customers'[On Credit Hold] ) = "No"
            ),
            'SalesInvoices'[Remaining Amount], DESC
        ),
        'SalesInvoices'[Remaining Amount]
    )
  5. What waiting costs

    349 of 438still under 90 days if the calls start a month from now

    Every month this list waits, $202K more crosses the ninety-day line.

    Ageing is arithmetic: an invoice at 78 days is at 108 a month from now, and collections teams triage by exactly those bands. This is what a dashboard that only reports the present cannot tell you.

    Of the 438 chaseable invoices, how many are still under 90 days if the calls start

    Today400 of 438 · $957K
    In 2 weeks372 of 438 · $874K
    In a month349 of 438 · $755K
    In 2 months265 of 438 · $550K

    Under 90 daysPast the 90-day line

  6. What I add

    40calls, ranked, in front of the owner each morning

    Then make it a routine, so the list does not wait for someone to look.

    The list refreshes with the data and goes to whoever owns collections, with last week's calls marked so nobody rings the same customer twice.

    Why it does not come as standard. This is a process change, not a report: an owner, a time of day and a list that arrives without anyone opening a dashboard.

All of it ships inside the dashboard. The measures, the findings and the worklists live in the same model and the same report your client already opens. There is no spreadsheet beside it and nothing to maintain separately.

Your clients already run Microsoft’s free Power BI apps? What they cover, and where they stop →

The real report, live · all 17 pages · synthetic data

Where this comes from

This is not a thought experiment. The method above is what I do on live engagements, and the report you are looking at is a real Power BI project built the way I would build yours. The data in it is invented, on purpose: what the same measures return on a client’s own numbers is theirs, not mine to publish. So the page shows you the method in full and none of their figures.

Illustrative examples · not client data

What the first one looks like

One report on your client’s data, scoped before it starts

The smallest thing worth doing, and the one I would start with on a client I have never met.

  1. Before

    We agree the rules before anything is built

    One session with you and whoever owns the number at your client. What counts as short, what the margin floor is, which rows the metric should never have counted. Those answers are the deliverable's spec and they get written down.

  2. During

    I build it in their tenant, inside the report they already open

    Their data, their model, your project plan. Measures, the worklist and the finding the report writes for itself. No spreadsheet beside it and nothing new for anyone to log into.

  3. After

    You hand it back under your brand

    You get the model, the measures and the documentation of every rule we agreed. Anything I find that needs platform work comes back to you, not to the client.

It is quoted as a fixed deliverable before any work starts, so you know the number before you commit and there are no hourly surprises. What you charge your client on top is entirely your business.

The alternative is hiring. A business intelligence developer in the United States is paid between $109,250 and $156,500 according to Robert Half’s 2026 salary guide, plus recruiting and the weeks before they are productive. Subcontracting makes that capacity variable instead of fixed, which matters when reporting demand arrives in bursts after go-live.

Where the work sits

I take the middle three stages and hand them back branded

The rules that decide what counts as worth acting on live in the model, agreed with the owner before the build.

YOU

The tenant

Configured, posted to, live

ME

The feed

Scheduled, incremental, read-only

ME

The rules

The thresholds the owner signed off

ME

The report

Your palette, your logo, your file

CLIENT

Their home page

Where they already look every morning

Three of five stages are mine · the tenant and the client stay yours

How visible I am

Your decision, per engagement

Invisible

Default

You are the only name the client sees. I do not attend client meetings and nothing carries my name.

Your team, extended

Most common

I join client calls as part of your team, introduced by you, when the reporting needs answering for in the room.

Named specialist

Your call

Introduced as your reporting specialist, by name. Some partners find that raises the price they can charge.

Before anything else

The questions partners actually ask

Will you approach my client?

No. A mutual non-solicit is signed before kickoff, covering your client and your staff, for two years past the last engagement. It runs both ways.

Whose brand does the work go out under?

Yours, by default. Your email, your templates, your deck. You can also introduce me as your named reporting specialist if you prefer. It is your choice per engagement, not a fixed policy.

We already deployed the standard reports. Why would we need you?

Because those reports answer what happened and stop there. They are good at it, and I start from them rather than replacing them. What they cannot do is rank, threshold or prioritise against your client’s own rules, because the vendor has no way of knowing what those rules are. That last step is the whole job.

Will you widen the scope on my client?

No. Anything I find that needs platform work comes back to you, not to the client. I do not implement ERP and I do not sell the remediation, so I am not competing with you for the implementation or the managed service.

What does it cost?

Work is quoted as a fixed deliverable, as a block of days, or as discovery only, and the rate is agreed per engagement before anything starts. You are quoted before work begins and there are no hourly surprises. What you charge your client is entirely your business.

Where do the thresholds come from?

Your client. A recommendation is only as good as the rule behind it, so the margin floor, the lead time, the ageing window and the collection pace are set with the owner and written down before anything is built. I do not invent a threshold and I do not let a report imply one nobody agreed to.

Fixed deliverable · blocked days · or discovery only · quoted before work starts

What does your client’s reporting tell them to do right now?

Send a page of it and I’ll tell you what it cannot answer yet.

Josh Elberg · Palavir. Fifteen years building reporting layers and defending the numbers on them. Power BI, Fabric, Tableau. Detroit, remote across the US and Canada.

I reply within one business day. No sequence, no newsletter.