Power BI · Case study

Franchise Investment & Economics

A four-page Power BI report over 908 U.S. franchise brands — investment tiers, fee benchmarks and per-category economics — built on a dataset I extracted myself from franchise disclosure documents.

908 brands 34 categories DAX measures 4 report pages Live web data source

Where the data comes from

A Franchise Disclosure Document is a ~300-page legal filing. The numbers that decide whether a franchise is affordable — total investment, franchise fee, royalty, ad fund — sit in tables scattered across 23 standardised Items. Nobody reads 908 of them.

So the pipeline reads them: public filings from US state registries are parsed into page-tagged text, a local AI model extracts the figures from the right sections, and every value is grounded — if it doesn't appear verbatim in the source, it isn't published. That output becomes one flat table, which Power BI loads over HTTPS as a live web source rather than a file sitting on a laptop, so a refresh in Desktop picks up a new extraction run with no re-import.

The source table is public: franchise_data.csv — 908 rows, 12 columns.

The four pages

Each screenshot links to its full-size image.

Power BI Overview page: KPI cards reading 908 brands, 34 categories, $40K median franchise fee and $485K median investment, above a top-15 categories bar chart and a donut of brands by investment tier.
Page 1

Overview

The shape of the market: how many brands, how concentrated the categories are, and how the whole corpus distributes across investment tiers.

The tier donut needed a hidden sort column — Power BI orders text alphabetically, which put "$1M+" first and "Under $100k" last and made the chart read as noise.

Median franchise: $485K to open, $40K of that a franchise fee. Restaurants dominate the corpus — 180 of 908 brands sit in a single category.
Power BI Investment Analysis page: a scatter plot of franchise fee against total investment for every brand, beside a bar chart of median investment by category.
Page 2

Investment analysis

Fee plotted against total investment, one point per brand. The vertical banding is the finding: at any given fee, the total cost of opening runs across orders of magnitude.

80 brands charge a franchise fee near $30K. Their total investment runs from $41K to $4.0M. Across all 787 brands disclosing both, fee and investment size correlate at −0.03 — essentially not at all. The fee is the price of the brand, not the price of the business.
Power BI Fees and Economics page: median franchise fee by category beside average royalty by category, with Cleaning Services lowest on fee and highest on royalty.
Page 3

Fees & economics

Entry cost against ongoing cost, by category — the franchise fee you pay once, beside the royalty you pay for as long as you operate.

Cleaning Services has the lowest franchise fee of any category and the highest ongoing royalty. Cheapest door to walk through, most expensive room to stay in — a trade-off that is invisible if you only compare entry costs.
Power BI Brand Comparison page: a searchable multi-select brand slicer driving a side-by-side table of investment range, franchise fee and royalty percentage.
Page 4

Brand comparison

A searchable, multi-select slicer driving a side-by-side table — the page a prospective buyer would actually drive, rather than read. It exists because the interesting comparison is never the one a fixed chart happens to show.

Entry cost barely predicts ongoing cost. Across the 564 brands disclosing both, investment size and royalty rate correlate at just −0.25: the priciest quarter of franchises charges a median 5% royalty, the other three quarters 6%. Jan Pro opens for about $5K and charges 13% forever; Texas Roadhouse costs a thousand times more and charges 4%. Which brand is "expensive" depends entirely on which of the two costs you look at.

The decisions that made it trustworthy

Most of the work in this report wasn't visual. Extracted data is messy, and a dashboard that presents messy data confidently is worse than no dashboard:

Open the files

One .pbix per page — open any of them in Power BI Desktop to inspect the model, the DAX measures and the visual configuration.

The same data, live in the browser

A screenshot can't be filtered. The same 908-brand table also drives a companion tool generated in Python — filter by budget and category, see each brand's cost range on a log axis against its own industry, and click through to the source figures.

Open the live cost explorer →