Solopreneur @ Data Nova, specialising in Microsoft Fabric and Power BI
Microsoft MVP
London Microsoft Fabric User Group organiser
Blogger, speaker and budding YouTuber
Remote first, lives in the UK and the Netherlands
data-nova.io
linkedin.com/in/prathy
Prathy Kamasani · Data Nova · Data Alchemy
02 / 55
This session
Agentic BI Development
Letting AI agents build your Fabric semantic models and reports
An AI agent can build a real semantic model and report from a written spec, if you know how to brief it and how to check its work.
The interesting part is not the prompt. It is a spec it can act on without guessing, a quality bar set before it starts, and a proper review of what it built.
Prathy Kamasani · Data Nova · Data Alchemy
03 / 55
Hands up
Who uses AI for anything: recipes, holiday plans, emails?
Prathy Kamasani · Data Nova · Data Alchemy
04 / 55
Hands up
Who uses AI for anything: recipes, holiday plans, emails?
Writes only the deliverables. Logs what the tool cannot do.
Builder
Changes the tool
On its own branch, with tests. You review each change.
Orchestrator
Plans and hands out work
Sends each decision to a delegate and a checker, in order.
You
Signs the gates
Decides what may be delegated. Keeps the client deploy unless you grant it.
Prathy Kamasani · Data Nova · Data Alchemy
21 / 55
03 · Agent roles
Who does what, step by step
Step
The agent
You
Discovery
Drafts user stories from the requirements
Sign off the requirements
Design
Profiles the model, drafts the layout and mockup
Sign the design before it builds
Build
Writes the model changes and the report files
Review the model changes
Test
Runs data, render and layout checks
Click what automated QA cannot
Deploy
Deploys through a gated pipeline
Approve the release
Govern
Records who approved what, and when
Accept the result
Prathy Kamasani · Data Nova · Data Alchemy
22 / 55
03 · Agent roles
How a report gets made
Requirement
You
Drafts and improves it
Operator
Approve or question
Gate
Builds and checks
Operator
Test deploy (canary)
Operator
Client deploy
You
A question sends it back to the operator
Alongside
Tool cannot do it
Operator
Gap logged
Operator
Fix on a branch
Builder
Review the change
You
Prathy Kamasani · Data Nova · Data Alchemy
23 / 55
03 · Agent roles
Who signs the gates?
Human gate
You sign four gates
Discovery, design, ship and acceptance. QA is a check that runs. Slow, and you are always in the loop.
Prathy Kamasani · Data Nova · Data Alchemy
24 / 55
03 · Agent roles
Who signs the gates?
Human gate
You sign four gates
Discovery, design, ship and acceptance. QA is a check that runs. Slow, and you are always in the loop.
Full delegation
A second model decides. At a gate, a third model checks.
The client deploy stays yours unless you grant it. You read the decisions afterwards.
Prathy Kamasani · Data Nova · Data Alchemy
25 / 55
04
Building the trade balance report
One brief through different tools. Where a tool did not get it, the slide says so.
Prathy Kamasani · Data Nova · Data Alchemy
26 / 55
04 · Examples
UK trade, the balance
The brief given to Fabric skills and MCP
What to build
Balance card
Changes colour from surplus to deficit
Monthly trend
Exports, imports and the balance
Breakdown
By partner country or commodity
Slicer
Switches the trend between measures
Also in the brief
Who it is forThe model, its tables and its rulesOne page, theme colours, native visualsWhat is out of scopeWhat to hand back, with evidenceAsk before guessing
Done means
£937.0bn
exports
£980.4bn
imports
12 months to March 2026, published figures
Card colour from a measure, not a fixed colour
The slicer changes the plotted measure
Every field it uses exists in the model
Prathy Kamasani · Data Nova · Data Alchemy
27 / 55
04 · Example 2
Fabric skills
Setup
Microsoft's Fabric skills, same brief
Pro
Real file formats, a draft in minutes
Con
Advice the agent can skip, and no record of who approved
Prathy Kamasani · Data Nova · Data Alchemy
28 / 55
04 · Example 2: Fabric skills
What it changed
The model
0
changes
It read the model with DAX queries and wrote nothing
The report
UK Trade Balance, published to folder 02. Brief: £937.0bn exports. Built: 30.3K, all years. One of four done checks.
Prathy Kamasani · Data Nova · Data Alchemy
29 / 55
04 · Example 3
MCP
Setup
GitHub Copilot in VS Code, with Microsoft's Power BI authoring MCP
Pro
Reads the real model
Con
Can change the model with your sign-in, and nothing records it. This run was read only.
Prathy Kamasani · Data Nova · Data Alchemy
30 / 55
04 · Example 3: MCP
What it changed
No report
PBIP files on the laptop. Copilot could not publish them.
The model
0
changes
Read only: it could not add the field parameter the slicer needs
The report
None by Copilot. It wrote PBIP files on the laptop. I published them myself: next slide.
Prathy Kamasani · Data Nova · Data Alchemy
31 / 55
04 · Example 3: MCP
Publishing the MCP report
As built
The Service refused it
Microsoft's validator, 5 errors:
No .platform file
No schema line in the .pbip
Card colours set as theme colours, not hex (2)
A setting report.json does not allow
After one fix
I removed the setting by hand and it published. Every visual is empty, with or without filters.
Prathy Kamasani · Data Nova · Data Alchemy
32 / 55
04 · Example 4
My setup
Live demo
Two steps in the terminal. A check stops a report whose design was not approved. Then one command builds the report and runs all the checks.
Setup
My skills, scripts, gates, and sign-offs
Pro
Tested, gated, with an audit trail
Con
Upfront cost, covers only what I encoded
Prathy Kamasani · Data Nova · Data Alchemy
33 / 55
04 · Example 4
Mission Control
What it shows
Every page
Its phase, and green or red
The rail
44 steps over six phases, with the evidence for each
Every gate
Who decided it, and which model
Go or no-go
One call per station before a release
Prathy Kamasani · Data Nova · Data Alchemy
34 / 55
04 · Example 4: My setup
What it changed
The model
19
measures added
Plus 3 calculated columns, each verified on the live model
_Verdict_Colour Balance_Thesis Sentence+16 more
The report
The Balance, built earlier on the same model. Against this brief: no slicer, no breakdown.
Prathy Kamasani · Data Nova · Data Alchemy
35 / 55
04 · Example 5
Full delegation
Setup
A new brief on the same model, every decision delegated
Pro
Brief to client deploy, no questions
Con
5 hours, 10 engine gaps
Prathy Kamasani · Data Nova · Data Alchemy
36 / 55
04 · Example 5: Full delegation
What it changed
The model
16
measures added
Plus 2 calculated columns, each verified on the live model
_Stripe Colour_Stripes Headline_Stripes Month Count+13 more
The report
Trade stripes, deployed to the client workspace. QA 34 of 34.
Prathy Kamasani · Data Nova · Data Alchemy
37 / 55
04 · Examples
The five, compared
Approach
Sees the model
Can be stopped
Records decisions
Report against the brief
Chat
No
No
No
No, DAX as text
Fabric skills
Yes, it queries the model
No
No
Published, 1 of 4 checks
MCP
Yes, live
No
No
No, visuals empty
My setup
Yes, checked against live
Yes, hooks and gates
Yes, every decision
Earlier build, same model
Full delegation
Yes, checked against live
Yes, hooks and gates
Yes, every decision
Yes, its own brief, QA 34 of 34
Prathy Kamasani · Data Nova · Data Alchemy
38 / 55
05
How I built the tool
Specs first, then the engine, then the checks
Prathy Kamasani · Data Nova · Data Alchemy
39 / 55
05 · How I built the tool
How the tool fits together
Specs
19 written algorithms
Engine
One generator
Report files
Checked against Microsoft's schemas
Checks
Hooks, gates and the pipeline
Deploy
Only through the pipeline
What feeds the engine
Knowledge
Visuals, tricks, gotchas
Microsoft tools
CLI validator, sample report
Skills
9 recipes for agents
Engagement
Brief, model, decisions
A fix goes in the spec or the engine, never in a report file.
Prathy Kamasani · Data Nova · Data Alchemy
40 / 55
05 · How I built the tool
The building blocks, in my setup
Block
Kind
What it does
In my setup
Context
Advisory
Standing rules for every session
CLAUDE.md, AGENTS.md
Skills
Advisory
A repeatable recipe for one job
.claude/skills/ (9)
Rules
Advisory
What good looks like, in words
PRINCIPLES.md
Algorithms
Structure
The steps of each phase
algorithms/ (19)
Loops
Blocking
Repeat until a check passes
render-fix and QA loops
Hooks
Blocking
Block one action, on an event
pre-commit (29), edit hooks
Gates
Blocking
No sign-off, no next phase
the rail: 44 steps
MCP
Reach
Live access to tools and data
none: REST and XMLA queries
Prathy Kamasani · Data Nova · Data Alchemy
41 / 55
05 · How I built the tool
Testing in five layers
Layer
Proves
How
0 · Repo
The engine still behaves
About 3,100 tests on every push
1 · Contract
The config matches the design
Blocking rules, Microsoft's validator
2 · Data
Every measure resolves, with plausible values
Queried live after each deploy
3 · Render
Every text whole, the page reviewed
Live page measured, reviewed by another model
4 · Interaction
Clicks and hovers do what was promised
A headless QA runner, a person as fallback
Prathy Kamasani · Data Nova · Data Alchemy
42 / 55
05 · How I built the tool
Design rules
The design order
0The surface: report, dashboard or app
1The person and their job
2Flow and empty states
3The canvas, then fixed
4Layout: one hero, the rest quiet
5Interaction: remove what you can
6Accessibility
7Data honesty
8Critique: cut what does not serve the job
Fails the build
Every text whole in the live render
No em dashes in visible copy
Warns only
Text contrast
Prathy Kamasani · Data Nova · Data Alchemy
43 / 55
05 · How I built the tool
Three prompts
Operator
New page for uk-trade-data, report name "UK Trade - Trade stripes". The brief is below. You are the operator: run the tool and write only under clients/. When the tool cannot do something, log a gap, use the nearest supported option, and carry on. Never ask me.
What it stops
The build session editing the engine, with a hook behind it
Builder
Fix this in the engine, never in a report file. Reproduce it, find the root cause, write the spec first if the behaviour has none, add a test that fails without the fix, and open a pull request. Do not merge.
What it stops
A fix in a report file that the next build overwrites
Architecture
Before you build anything new: is there a spec for it? If not, write the algorithm first, then the engine, then the check that enforces it. One generator, no second path.
What it stops
A second way of doing the same thing
Prathy Kamasani · Data Nova · Data Alchemy
44 / 55
05 · How I built the tool
Deliverables for one report
Report
On the canary and in the client workspace
Design contract
Challenged by a second model, then decided
Mockup
Drawn from a sample of live data
Design brief
Acceptance tests for every element
Decision records
16, each with its reasoning
QA report
34 of 34 items passed
Deliverable pack
Walkthrough, measures, proof points
Report guide
Plain English, for the reader; shown next
Prathy Kamasani · Data Nova · Data Alchemy
45 / 55
05 · How I built the tool
The report guide
For the reader
Not for the people who built it
Matches gov.uk
Every figure, to within 0.005%
Explains the design
What it shows, and why it looks the way it does
Prathy Kamasani · Data Nova · Data Alchemy
46 / 55
06
Cost and limits
Time, tokens, and what still needs a person
Prathy Kamasani · Data Nova · Data Alchemy
47 / 55
06 · Cost and limits
What one delegated report cost
5 h 11 min
On the clock, brief to client deploy
3 h 9 min
Working, after a 2 hour usage-limit pause
0
Questions to me
225 million
Tokens read from cache, mostly the session re-reading its own history
6
Render fixes, none by me
10
Engine gaps logged, each fixed by a builder
Prathy Kamasani · Data Nova · Data Alchemy
48 / 55
06 · Cost and limits
Limits
A new kind of page finds gaps
One page, ten engine gaps. The engine only does what it has been taught.
The deciding model was not the one asked for
The delegate asked for one model and was served the drafting model. The tool now records which model answered and blocks the drafter's.
Approvals reopen on harmless changes
A colour written as a hex instead of a name re-ran the whole sign-off chain.
Usage limits pause long runs
Two hours of waiting in a five-hour run.
Someone has to own the grant
What may be delegated, and the client deploy, stay with a person.
Prathy Kamasani · Data Nova · Data Alchemy
49 / 55
06 · Cost and limits
Two bugs the checks missed
The slicer did not filter the chart
It was on the page and you could click it. The chart never changed.
Checks that passed
GatesDAXMockup match
How it was found
Clicking it in the Service.
The headline card clipped its figures
The figures were clipped inside the card.
Checks that passed
GatesDAXMockup match
How it was found
A person looked at the published page, after it had gone out three times.
No check read the published page.
Prathy Kamasani · Data Nova · Data Alchemy
50 / 55
06 · Cost and limits
Which approach, when
Use
When
Trade-off
Chat
One measure or a quick question
No setup, nothing checked
Fabric skills
A prototype, or a report you will not rebuild
Real file formats, advice only
MCP
You need the live model's real answers
Real figures, but nothing stops a wrong write
My setup
Reports you rebuild, check and hand over
Upfront cost and upkeep
Prathy Kamasani · Data Nova · Data Alchemy
51 / 55
06 · Cost and limits
What to check, and what you do yourself
A check that runs
Measures resolve live
Every one, against the real model
Every text whole
Measured on the deployed page
It survives a refresh
Colours, sorts, and filters on new data
You
Write the brief
Who it is for, and what done means
Decide what to delegate
Which gates, and never the client deploy by default
Review what the builder changed
Every engine fix is yours to merge
Checks find the mistakes. You decide what done means.
Prathy Kamasani · Data Nova · Data Alchemy
52 / 55
Next steps
Three things to try
01
Write down how you work
A CLAUDE.md or AGENTS.md: your model, your names, your rules
02
Add one hook
Block the one mistake you have made twice
03
Ask for a check before every deploy
And read it before you approve
Prathy Kamasani · Data Nova · Data Alchemy
53 / 55
Thank you
Prathy Kamasani
Solopreneur @ Data Nova, specialising in Microsoft Fabric and Power BI