Not ready for AI FC-LIS-01 Visible measure without a description: 3 findings out of 7 objects examined FC-IA-01 Implicit measures allowed: 2 findings out of 8 objects examined FC-IA-03 Stale validation: 2 findings out of 3 objects examined Overall score 77/100 15 findings · 7 blocking · 6 important · 2 minor Validated facts: 1 of 7 figures

Priority fixes

The three most serious findings: where to start.

  1. FC-LIS-01blocking

    The measure “Turnover” (table Sales)

    The measure “Turnover” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

  2. FC-LIS-01blocking

    The measure “KPI_Basket_02” (table Sales)

    The measure “KPI_Basket_02” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

  3. FC-LIS-01blocking

    The measure “Order Count” (table Sales)

    The measure “Order Count” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

Findings

Readability LIS · 81

FC-LIS-01

Visible measure without a description

blocking 3 findings
  • The measure “Turnover” (table Sales)

    The measure “Turnover” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

  • The measure “KPI_Basket_02” (table Sales)

    The measure “KPI_Basket_02” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

  • The measure “Order Count” (table Sales)

    The measure “Order Count” (table Sales) is visible without a description: an AI will have to guess what it computes.

    to validate

    Add a /// description above the measure: what it computes, in which unit, under which rule.

FC-LIS-02

Description that says nothing

important 1 finding
  • The measure “Revenue” (table Sales)

    The description of the measure “Revenue” (table Sales) says nothing: it is 1 word long. An AI takes it for an explanation, and still guesses what the measure computes.

    to validate

    Rewrite the /// description: what it computes, in which unit, under which rule.

FC-LIS-03

Cryptic name on a visible object

important 1 finding
  • The measure “KPI_Basket_02” (table Sales)

    The measure “KPI_Basket_02” (table Sales) has a cryptic name (coding prefix “KPI_”): no question asked in plain language will lead an AI to it.

    to validate

    Rename it “Basket 02”, to be reworded in the business's vocabulary; write in the AI instructions that “KPI_Basket_02” is its former name, for the questions that still use it.

FC-LIS-05

Visible technical column

minor 2 findings
  • The column “Product ID” (table Sales)

    The column “Product ID” (table Sales) is a visible technical column: its name makes it a key; it holds the “many” side of the relationship Sales[Product ID] → Product[Product ID]: filtering goes through the table Product. An AI may offer it as an axis of analysis.

    Related: the relationship Sales[Product ID] → Product[Product ID]

    to validate

    Hide the column (isHidden): relationships and sorts keep using it.

  • The column “Customer ID” (table Sales)

    The column “Customer ID” (table Sales) is a visible technical column: its name makes it a key; it holds the “many” side of the relationship Sales[Customer ID] → Customer[Customer ID]: filtering goes through the table Customer. An AI may offer it as an axis of analysis.

    Related: the relationship Sales[Customer ID] → Customer[Customer ID]

    to validate

    Hide the column (isHidden): relationships and sorts keep using it.

Consistency COH · 95

FC-COH-01

Two measures with the same DAX

important 1 finding
  • The measure “Turnover” (table Sales)

    The measure “Turnover” (table Sales) duplicates “Net Sales” (table Sales): same DAX, apart from spaces, case and comments. An AI hesitates between the two, and they will drift apart as soon as only one of them changes.

    Related: the measure “Net Sales” (table Sales)

    to validate

    First check with the business that the two names mean the same figure. If they do, keep a single calculation: replace the DAX of “Turnover” with [Net Sales], or delete “Turnover” if nothing uses it; hiding it is not enough, the measures that reference it still read it. If they do not, one of the two calculations is wrong: correct it.

Structure STR · 86

FC-STR-01

Bidirectional relationship

important 1 finding
  • The relationship Sales[Customer ID] → Customer[Customer ID]

    The relationship Sales[Customer ID] → Customer[Customer ID] filters in both directions: depending on the filter path an AI takes, the same number can change.

    to validate

    Make the relationship filter in one direction (crossFilteringBehavior: oneDirection), or write down why both directions are needed.

FC-STR-02

Missing or automatic date table

important 1 finding
  • The model

    No table is marked as a date table: an AI does not know on which calendar to compute a year-to-date or a comparison with the previous year.

    to validate

    Mark “Calendar” as a date table (dataCategory: Time, a date column with continuous days).

AI readiness IA · 56

FC-IA-01

Implicit measures allowed

blocking 2 findings
  • The column “List Price” (table Product)

    The column “List Price” (table Product) is summed by default, and the model allows implicit measures: an AI that puts it in a visual shows its sum, a number with no meaning. You don't add up unit prices.

    Related: the model

    to validate

    Add discourageImplicitMeasures under model in model.tmdl, so that only explicit measures aggregate; and set the column to summarizeBy: none.

  • The column “Product ID” (table Sales)

    The column “Product ID” (table Sales) is summed by default, and the model allows implicit measures: an AI that puts it in a visual shows its sum, a number with no meaning. You don't add up identifiers.

    Related: the model

    to validate

    Add discourageImplicitMeasures under model in model.tmdl, so that only explicit measures aggregate; and set the column to summarizeBy: none.

FC-IA-03

Stale validation

blocking 2 findings
  • The measure “Gross Margin” (table Sales)

    The measure “Gross Margin” (table Sales) was validated on 5 October 2026 by Finance department, but it has changed since: name, DAX, description, format, or the calculation of a measure it calls. An AI would still quote it as a validated fact.

    to validate

    Have Finance department reread the definition of “Gross Margin”, then renew the validation with factcraft validate; or remove the FactCraft_Validation annotation if the fact is no longer guaranteed.

  • The measure “Margin %” (table Sales)

    The measure “Margin %” (table Sales) was validated on 5 October 2026 by Finance department, but it has changed since: name, DAX, description, format, or the calculation of a measure it calls. An AI would still quote it as a validated fact.

    to validate

    Have Finance department reread the definition of “Margin %”, then renew the validation with factcraft validate; or remove the FactCraft_Validation annotation if the fact is no longer guaranteed.

FC-IA-04

AI instructions missing

important 1 finding
  • The model

    No AI instructions found in the project (Copilot/Instructions/instructions.md, where Prep data for AI saves them): Copilot has only the names and descriptions of the model to know which measure answers a question, and which date to use by default.

    to validate

    Write the AI instructions in Prep data for AI (saved in the project as Copilot/Instructions/instructions.md): the business terms, the measure behind each key figure, the default date. The audit dossier drafts them from this audit, for the business to validate.