End-to-end Microsoft Fabric analytics projects built by Ali Saghi, DP-600 certified Microsoft Fabric Analytics Engineer and founder of Lotusoftware — a data analytics consultancy in Vantaa, Finland.
Each project demonstrates a full analytics workload on Microsoft Fabric: from raw data ingestion through medallion architecture to semantic models, Power BI reports, and real-time dashboards. All projects are built using a two-harness agentic workflow — no manual Fabric UI work.
This repo is the execution harness of a two-harness agentic system. The planning harness (Claude Desktop) reads business context and writes session instructions via the filesystem MCP. The execution harness (Claude Code in VS Code) reads those instructions, executes against Fabric and Power BI via MCP servers, and files a recap at session end.
flowchart LR
A([ProjectPlanner\nClaude Desktop]) -->|writes instructions| B[CONTEXT.md]
B -->|read at session start| C([FabricEngineer\nClaude Code])
C -->|executes via MCP| D[(Microsoft Fabric\nPower BI)]
D -->|results| C
C -->|files recap| B
B -->|updates| E[PROJECTS.md]
style A fill:#E1F5EE,stroke:#0F6E56,color:#085041
style C fill:#E1F5EE,stroke:#0F6E56,color:#085041
style B fill:#EEEDFE,stroke:#534AB7,color:#26215C
style E fill:#EEEDFE,stroke:#534AB7,color:#26215C
style D fill:#E6F1FB,stroke:#185FA5,color:#0C447C
The loop runs every session. CONTEXT.md per workspace is the handoff document — it
holds current state, known blockers, and the exact next step. PROJECTS.md is the
portfolio-wide registry updated after every session.
Type: Business Intelligence + CI/CD
Stack: Medallion architecture · DirectLake semantic model · Power BI report (4 pages) · Three-environment CI/CD (Dev/Test/Prod) · GitHub Actions semantic model refresh
Blog: Vibe-coding an end-to-end Finance Analytics Platform in Microsoft Fabric with Claude Code
A complete finance analytics platform built from VS Code without touching the Fabric UI. Covers raw CSV ingestion, star schema design, 19 DAX measures across 6 display folders, and a full Dev → Test → Prod promotion flow with automated semantic model refresh on every merge to main.
Type: Real-Time Intelligence + Fabric App
Stack: Eventstream · Eventhouse · KQL Database (187M rows) · DirectQuery semantic model · Rayfin Fabric App
Real-time operational monitoring of a bicycle rental network. KQL medallion architecture with Bronze/Silver/Gold layers via update policies and materialized views. Semantic model built on DirectQuery to KQL with 10 measures across 4 display folders covering availability, capacity, rebalancing, and recency. Phase 3b complete: a deployed Fabric App (Rayfin) with KPI cards, station availability table, station drill-down, and rebalancing write-back via AlertSubscription entity — live at https://humid-gem-4f2e8b4d0a-northeurope.webapp.fabricapps.net
Type: Data Engineering + Analytics + Fabric App
Stack: REST API ingestion · Medallion Lakehouse · PySpark · reverse_geocoder · DirectLake semantic model · Power BI geospatial report · Fabric Data Agents (×3) · Ontology · Fabric App (Rayfin)
Live USGS earthquake data ingested via REST API, processed through Bronze/Silver/Gold Lakehouse layers with reverse geocoding and significance classification, exposed as a 4-page Power BI report with map visuals and time intelligence. Three domain-scoped Data Agents and an Ontology item built on the semantic model. Phase 3b complete: a deployed Fabric App (Rayfin) with country search, DAX-bound KPI cards, earthquake list, and alert subscriptions — live at https://daily-cave-2c1879b505-northeurope.webapp.fabricapps.net
End-to-end ML pipeline on Microsoft Fabric: raw ingestion → feature engineering → multi-model MLflow experiment → programmatic champion selection → Direct Lake semantic model → 3-page PBIR report → Fabric Data Agent for natural language churn analysis.
Stack: PySpark · MLflow · LightGBM · scikit-learn · SMOTE · Direct Lake · DAX · PBIR · Fabric Data Agent
Highlights: Programmatic champion model selection via MLflow search_runs · Governed Bronze metadata logging · 10 DAX measures across 4 display folders · Natural language interface via agent_DS_BankChurn
Type: Business Intelligence + Forecasting
Stack: Medallion Lakehouse · PySpark · DirectLake semantic model · Power BI report (3 pages) · Fabric Data Agent · RLS
A net sales forecasting prototype built for the Aalto Executive Education analytics role. Combines actuals from Jeeves ERP, accruals from a project delivery system, and weighted CRM pipeline from Dynamics 365 into a governed medallion pipeline. Gold layer: 795 rows of 2026 actuals (€14.6M), 313 accrual rows (€6.6M), and 126 weighted pipeline rows (€829K). Forecast snapshots are versioned per pipeline run.
Highlights: Three-source medallion pipeline with 11 acceptance checks · Dim BU slicer propagation across all three fact tables · RLS roles for Finance, Programme_Manager_ExEd, and Ranking_Team · Natural language interface via agent_AaltoEE_Forecast with three confirmed demo questions
Type: Data Engineering + Business Intelligence
Stack: Medallion Lakehouse · PySpark · DirectLake semantic model ·
Power BI report (4 pages) · ZipCountry composite key · Copilot-assisted
report authoring
~1.8M sales transactions across 6 countries (USA, Japan, Nigeria, Germany, Mexico, Canada) and 14 competing manufacturers (2014–2021). Built to answer one question: where should Sintec focus product, geography, and pricing strategy to defend and grow market share?
Framed through the Analyst Mindset (Jon Christiansen): the question type is Comparison (Sintec vs. 13 competitors) with a Relationship layer (revenue drivers by geography and product). Revenue is the operationalised outcome variable. Known limitation: 1,530 US Zip codes (7.38% of US rows) absent from Geography — documented, not silently dropped.
Gold star schema with snowflake extension: gold_fact_sales (1,798,121 rows),
gold_dim_product (2,412 rows), gold_dim_manufacturer (14 rows),
gold_dim_geography (176,931 rows, ZipCountry composite key),
datedimension (2,557 rows).
EDA notebook runs after every pipeline execution as a validation gate.
Twelve DAX measures across Volume, Time Intelligence, and Competitive Share
display folders. Artisans leads overall ($235M, 33.8%); Sintec is #2
($117M, 16.8%) but leads the US market in 2021.
| Layer | Tool |
|---|---|
| AI planning agent | Claude Desktop (ProjectPlanner) |
| AI execution agent | Claude Code in VS Code (FabricEngineer) |
| Fabric operations | Fabric Core MCP Server (remote connector) |
| Power BI modeling | powerbi-modeling-mcp v1.0.0 (Claude Code plugin; Claude Desktop read-only) |
| Fabric skills | skills-for-fabric v0.3.19 (Claude Code plugin + Copilot CLI) |
| Context management | PROJECTS.md + ws_<name>/CONTEXT.md |
| Git strategy | dev-fabric-sync → test → main (PR-based promotion) |
| CI/CD | GitHub Actions — semantic model refresh on merge to main |
PROJECTS.md— living project registry, updated by agents after every sessionws_<name>/CONTEXT.md— per-project session handoff document, read at session start and written at session end- Two-harness methodology: Stop Re-Prompting: Your Second Brain Should Write Your Agent's Instructions
Lotusoftware is a data analytics consultancy founded by Ali Saghi in Vantaa, Finland, specialising in Microsoft Fabric, Power BI, and agentic analytics systems.
- Blog: lotusoftware.hashnode.dev
- LinkedIn: ali-saghi-fabric
- GitHub: alisaghilutfi
- X: @alis05111
Last updated: 2026-10-07 (skills v0.3.19, powerbi-modeling-mcp v1.0.0 stack entry).