Intelligent Invoice Processing with AI Builder

Build an AI-powered invoice pipeline with Power Automate, Dataverse, and a model-driven app.

Introduction

30 Second Summary

Every business deals with invoices. Someone receives a PDF, manually types the vendor name, amount, and due date into a spreadsheet, then decides how urgently it needs to be paid. Multiply that by hundreds of invoices a month and you have a slow, error-prone bottleneck.

In this project, you will build an intelligent invoice processing pipeline that automatically extracts data from PDF invoices, classifies payment risk using AI, and surfaces everything through a polished app with AI-generated summaries and dashboards.

What You'll Build

An end-to-end document processing solution using AI Builder, Dataverse, Power Automate, and a model-driven app that turns raw invoice PDFs into structured, AI-enriched business data.

By the end of this project, you'll have:

  • A Power Automate cloud flow that extracts structured data from invoice PDFs dropped into SharePoint, classifies risk using a custom AI prompt, and stores everything in Dataverse.
  • A Dataverse prompt column that automatically categorizes spend for every new invoice record without manual intervention.
  • A model-driven app with AI-generated row summaries, risk-based views, and a generative page dashboard showing invoice processing status.
  • Secret Mission: a canvas app for on-demand invoice scanning using Power Fx and the AI Builder invoice model.

Are there any prerequisites?

This project requires a Power Apps premium license with AI Builder credits and access to SharePoint Online. Your Power Platform environment must be in the United States region.

No prior experience with AI Builder or Dataverse is needed. The project walks you through every configuration step.

Set Up SharePoint and Design the Dataverse Table

Before the flow can extract data from invoices, you need two things: a place to drop invoice PDFs, and a structured table to store the extracted data.

In this step, you will create a SharePoint document library as the ingestion point and a Dataverse table to hold structured invoice records. Together, these form the foundation of your entire invoice processing pipeline.

In this step, get ready to:
  • Create a SharePoint document library for invoice uploads.
  • Design a Dataverse table with columns for invoice data, risk classification, and processing status.
  • Verify the table structure in the table designer.
Create the SharePoint Invoices library

The document library is where you will drop invoice PDFs. Your Power Automate flow will watch this library and trigger automatically whenever a new file arrives.

  • Navigate to your existing SharePoint Online site where you want to store invoices.
  • On the menu bar, click + New.
  • Select Document library from the dropdown.
  • In the Name field, type Invoices.
  • Click Create.

What is a document library?

A SharePoint document library is a secure file storage location that supports versioning, metadata, and integration with Power Automate. It works like a folder on steroids.

By pointing your flow at this library, every PDF dropped here becomes a trigger for the entire invoice processing pipeline.

  • Verify the library works by uploading any PDF file. Drag a file from your computer into the library, or click Upload on the menu bar.
  • Confirm the file appears in the library list with a file name and modified date.

Don't see the Document library option?

Make sure you have permission to create libraries on the site. If the option is missing, contact your SharePoint administrator to check your site permissions.

help me troubleshoot SharePoint document library creation permissions

Create the Dataverse Invoice table

This table stores every field extracted from invoices, plus the risk classification your custom AI prompt will generate. Each row represents one processed invoice.

  • Open Power Apps by navigating to make.powerapps.com in your browser and signing in.
  • In the left navigation pane, select Tables. If Tables is not visible, click More and then select Tables.
  • On the command bar, select New table then Set advanced properties.
  • In the Display name field, enter Invoice.
  • Leave the Primary column tab at its default (Name) for now.
  • Click Save to create the table.

Why use Set advanced properties?

The advanced properties path gives you full control over the table schema name, ownership type, and other settings. For this project, the defaults work fine, but using this path ensures you see all available options.

Now add the columns that will hold extracted invoice data. You will add 10 custom columns one at a time.

  • With the Invoice table open, select New > Column from the command bar.
  • In the New column pane, enter Invoice ID as the Display name.
  • Set the Data type to Single line of text.
  • Click Save.

Repeat the same process for each of the remaining columns below. Select New > Column each time, enter the display name and data type, then click Save.

  • Vendor Name with data type Single line of text.
  • Invoice Date with data type Date only.
  • Due Date with data type Date only.
  • Amount Due with data type Currency.
  • Invoice Total with data type Currency.
  • Risk Classification with data type Single line of text.
  • Processing Status with data type Choice. When prompted, create a new choice with two labels: Processed and Failed. Save the choice, then save the column.
  • Source File URL with data type URL.
  • Confidence Score with data type Decimal.

What do these columns represent?

The first six columns (Invoice ID through Invoice Total) hold raw data extracted from the PDF by AI Builder. Risk Classification and Processing Status are metadata your flow will populate. Source File URL links back to the original SharePoint file, and Confidence Score records how certain AI Builder was about the extraction.

Speed up column creation

After saving each column, the New column pane closes. You can immediately click New > Column again without navigating away. This keeps you in the same area for all 10 columns.

Verify the table structure
  • In the Invoice table, click the Columns area in the left pane to see all columns listed.
  • Confirm you see all 10 custom columns: Invoice ID, Vendor Name, Invoice Date, Due Date, Amount Due, Invoice Total, Risk Classification, Processing Status, Source File URL, and Confidence Score.
  • Verify each column shows the correct data type next to its name.

Missing a column or wrong data type?

If a column has the wrong data type, you may need to delete it and recreate it. Select the column name, click Delete column, and then add it again with the correct type.

If you do not see all columns, switch the filter on the command bar from Default to All to show every column including custom ones.

help me fix my Dataverse table columns

Your data foundation is ready. Next up, you will add a prompt column to this table that automatically categorizes spend for every new invoice record.

Configure the Spend Categorization Prompt Column

Your Dataverse Invoice table is ready with all the columns needed to store extracted invoice data. Now it's time to add intelligence directly into the table itself.

Dataverse prompt columns run an AI prompt every time a record is created or its input values change. You'll configure one that automatically categorizes each invoice into a spend category like IT Services or Marketing.

In this step, get ready to:
  • Add a prompt column named "Spend Category" to the Invoice table.
  • Configure the input columns that feed the prompt.
  • Verify the column appears with the correct data type.
Create the Spend Category prompt column

Prompt columns are an AI-powered data type in Dataverse that let you define natural language instructions tied to other columns in your table. The AI model processes these instructions and stores the result directly in the column.

  • In Power Apps (make.powerapps.com), select Tables in the left navigation pane.
  • Select the Invoice table you created in the previous step.
  • Select New > Column from the table's command bar.
  • In the Display name field, enter Spend Category.
  • Under the Data type dropdown, select Prompt.
  • Clear the Allow form fill assistance checkbox.
  • Select +Add new prompt.

The prompt editor opens. This is where you write the instructions that tell the AI how to categorize invoices.

  • Enter the following prompt text in the prompt definition area:
Based on the vendor name {Vendor Name} and amount {Amount Due}, classify this invoice into exactly one spend category: IT Services, Office Supplies, Professional Services, Travel, Utilities, Marketing, or Other. Respond with only the category name.

What does this prompt do?

The curly braces {Vendor Name} and {Amount Due} are placeholders that pull values from those columns in the current record.

The prompt asks the AI to pick exactly one category from a fixed list. Constraining the output to a single word from a set list makes downstream filtering and reporting much more reliable.

Why a prompt column instead of a flow action?

This project uses two AI integration patterns. A prompt column executes asynchronously at the data layer every time a record is created or updated. It requires no flow or app logic to trigger.

Later, you'll also use a "Run a prompt" action in Power Automate for the risk classification. That pattern is synchronous and gives you control over exactly when the AI runs within a flow.

Add the input columns and save

The prompt needs to know which columns to read from. You'll configure Vendor Name and Amount Due as the input columns that feed data into the prompt.

  • In the prompt editor, add Vendor Name and Amount Due as input columns for the prompt.
  • Ensure the required text input variable is applied as a filter on the primary column of the data source.
  • Select Save on the prompt page.
  • Select Save on the column properties page to save the column.

What is the text input variable filter?

The platform requires a single text input variable applied as a filter on the primary column of the data source. This ensures the prompt only evaluates records that have data in the primary column, preventing unnecessary AI calls on incomplete records.

Not seeing the Prompt data type?

Prompt columns require two environment settings to be enabled. Copilot and AI Prompts features must be turned On in your environment settings. The Block unmanaged customizations setting must also be disabled.

Check both settings in the Power Platform admin center for your environment. If you're in a US-region environment with AI Builder credits, these are likely already enabled.

Help me enable prompt columns in my environment.

Verify the prompt column configuration
  • Return to the Invoice table's column list.
  • Confirm that Spend Category appears in the column list with the Prompt data type.
  • Select the column to review its configuration. Verify the prompt text references {Vendor Name} and {Amount Due} and lists the seven spend categories.

When does the prompt column execute?

The Spend Category value is generated asynchronously. When a new record is created in the Invoice table, or when the Vendor Name or Amount Due columns are updated, the prompt fires and fills in the category.

There will be a short delay between record creation and the Spend Category appearing. This is expected behavior, not an error.

Your Invoice table now has built-in AI intelligence. Every new record will automatically get a spend category without anyone lifting a finger. Next up, you'll build a custom prompt for risk classification that runs inside a Power Automate flow.

Build the Custom Risk Classification Prompt

Your Dataverse table now has a Spend Category prompt column that categorizes invoices automatically when records are created. That handles passive categorization at the data layer.

Now you need an active risk classifier that evaluates each invoice in real time as it flows through your automation. You will build a custom AI Builder prompt that accepts vendor name, amount, and due date, then returns a single risk level. In the next step, your Power Automate flow will call this prompt on every new invoice.

In this step, get ready to:
  • Create a custom AI prompt in the AI Hub prompt builder.
  • Add input parameters and test the prompt with sample invoice data.
  • Publish the prompt so it is available to Power Automate flows.
Create the Invoice Risk Classifier prompt

The prompt builder in AI Hub lets you define reusable AI prompts that accept dynamic inputs at runtime. You will write a prompt that acts as a financial risk analyst, scoring invoices based on thresholds you define.

  • In the left navigation pane of Power Apps, select AI hub.
  • Select Prompts.
  • Select Build your own prompt.
  • In the name field at the top, enter Invoice Risk Classifier.
  • In the Instructions panel, clear any default text and paste the following prompt instructions:
You are a financial risk analyst. Given an invoice with vendor name: {vendor}, amount due: {amount}, and due date: {dueDate}, classify the payment risk as High, Medium, or Low. High risk: amount over $10,000 or due within 3 days. Medium risk: amount between $5,000-$10,000 or due within 7 days. Low risk: all others. Respond with only the risk level.

What does this prompt do?

The prompt assigns a persona (financial risk analyst) and sets clear classification rules. The curly-brace placeholders {vendor}, {amount}, and {dueDate} become input parameters you will define next.

The "Respond with only the risk level" instruction constrains the output to a single word. This makes it easy to store directly in your Dataverse Risk Classification column without parsing.

Add input parameters and test the prompt

Each curly-brace placeholder in the prompt instructions needs a matching text input so the prompt builder can pass runtime values into the prompt.

  • Place your cursor in the Instructions panel where {vendor} appears.
  • Delete the text {vendor} (including the curly braces).
  • Type / or select Add content, then choose Text from the Input section.
  • A text input chip appears. In the Name field on the right, rename it from "Text input" to vendor.
  • Repeat the same process for {amount}: delete the placeholder, type /, select Text input, and rename it to amount.
  • Repeat once more for {dueDate}: delete the placeholder, add a Text input, and rename it to dueDate.

Why text inputs instead of number or date?

The prompt receives all values as text strings and interprets them using the AI model's language understanding. This keeps the prompt flexible and avoids type-conversion errors at runtime when Power Automate passes extracted invoice data.

Now test the prompt to confirm it returns a clean risk level.

  • In the Sample data area for each input, enter test values:
  • vendor: Contoso Ltd.
  • amount: $15,000.
  • dueDate: 2026-07-08.
  • Select Test.

The prompt response should return High. The sample values trigger both high-risk conditions: the amount exceeds $10,000 and the due date is within 3 days.

Prompt returning more than one word?

If the response includes an explanation along with the risk level, check that your instructions end with "Respond with only the risk level." without extra sentences after it. The constraint instruction must be the final sentence in the prompt.

help me fix my AI prompt so it only returns High, Medium, or Low

Save and publish the prompt

A saved prompt is only available to you in the editor. Publishing makes it accessible to Power Automate flows and Power Apps across your environment.

  • Select Save custom prompt in the top-right corner of the prompt builder.
  • After saving, select Publish.
  • Navigate back to AI hub > Prompts in the left pane.
  • Confirm that Invoice Risk Classifier appears in your prompt list.

Don't see the prompt in your list?

Make sure you selected Publish after saving. A saved-only prompt remains in draft and does not appear in the published prompts list. Return to the prompt, select it, and look for the Publish button.

help me publish my custom AI prompt in Power Apps AI Hub

✔️ Awesome, I've got the prompt published!

Great. Your Invoice Risk Classifier prompt is ready to be called from a Power Automate flow in the next step.

ⓧ I'd like to double check my prompt configuration

Verify your prompt matches this configuration:

  • Name: Invoice Risk Classifier.
  • Three text inputs named vendor, amount, and dueDate.
  • Instructions text: "You are a financial risk analyst. Given an invoice with vendor name: vendor, amount due: amount, and due date: dueDate, classify the payment risk as High, Medium, or Low. High risk: amount over $10,000 or due within 3 days. Medium risk: amount between $5,000-$10,000 or due within 7 days. Low risk: all others. Respond with only the risk level."
  • The input names (vendor, amount, dueDate) appear as chips inline within the instructions rather than as curly-brace text.
  • Status: Published.

Your risk classification prompt is published and ready. Next, you will wire everything together in a Power Automate cloud flow that listens for new invoices in SharePoint, extracts data with AI Builder, calls this prompt, and writes the results to Dataverse.

Build the Power Automate Cloud Flow

You now have all the building blocks in place. A SharePoint library waiting for invoices, a Dataverse table ready to store structured data, and a custom AI prompt that classifies risk.

Right now, someone would have to manually run each piece. In this step, you will build a Power Automate cloud flow that wires everything into a single automated pipeline.

In this step, get ready to:
  • Create an automated cloud flow triggered by new files in your SharePoint Invoices library.
  • Add AI Builder invoice extraction and risk classification actions.
  • Map extracted invoice data into your Dataverse table and test the full pipeline.
Create the flow trigger and add invoice extraction

The flow needs to detect whenever a new PDF lands in SharePoint and immediately read its contents. The trigger watches the library, and a follow-up action retrieves the actual file binary so AI Builder can process it.

  • Open a new browser tab and navigate to make.powerautomate.com.
  • Click Create in the left navigation menu.
  • Select Automated cloud flow.
  • Enter a flow name such as Invoice Processing Flow.
  • In the trigger search field, type When a file is created (properties only) and select the SharePoint trigger from the results.
  • Click Create.

Why this trigger?

The "When a file is created (properties only)" trigger fires every time a new file appears in the library. It returns only the file's metadata columns, not the file content itself.

You will add a separate action to fetch the PDF binary in the next step.

  • In the trigger card, select your SharePoint site from the Site Address dropdown. If your site does not appear, type the site URL directly.
  • In the Library Name dropdown, select Invoices.
  • Click the + (plus sign) below the trigger to add a new action.
  • Search for Get file content and select the SharePoint Get file content action.
  • In the Site Address field, select the same SharePoint site.
  • In the File Identifier field, open the dynamic content picker and select Identifier from the trigger outputs.
  • Click the + below Get file content to add another action.
  • Search for Extract information from invoices and select the AI Builder action.
  • In the Invoice File field, open the dynamic content picker and select File Content from the Get file content action.

What does Extract information from invoices do?

This AI Builder prebuilt model reads the PDF and returns structured fields like Vendor name, Invoice date, Due date, Amount due, and Invoice total. It supports JPEG, PNG, and PDF files up to 20 MB.

Don't see the AI Builder action?

Make sure you have AI Builder credits available in your environment. The action appears under the AI Builder connector. If it still does not show, confirm your environment is in a supported region (United States).

Help me enable AI Builder in my environment.

Add the risk classification prompt action

With the invoice data extracted, the next action sends key fields to your custom prompt for risk classification. This happens synchronously inside the flow before anything reaches Dataverse.

  • Click the + below the Extract information from invoices action.
  • Search for Run a prompt and select the AI Builder Run a prompt action.
  • In the Prompt dropdown, select Invoice Risk Classifier.
  • Three input fields appear: vendor, amount, and dueDate.
  • For vendor, open the dynamic content picker and select Vendor name from the Extract information from invoices outputs.
  • For amount, select Amount due (the text value) from the extraction outputs.
  • For dueDate, select Due date (the text value) from the extraction outputs.

What does Run a prompt do?

The Run a prompt action sends your mapped values to the custom prompt you built in the previous step. It returns a Text output containing the risk classification: High, Medium, or Low.

This action was previously named "Create text with GPT using a prompt." If you see references to that old name in community resources, look for Run a prompt instead.

Prompt not appearing in the dropdown?

The prompt must be published before it shows in the dropdown. Return to AI Hub > Prompts and confirm your Invoice Risk Classifier has a Published status. Also verify you are working in the same Power Platform environment where you created the prompt.

Help me find my custom prompt in the dropdown.

Map extracted data to Dataverse and test the flow

The final action writes the extracted and enriched invoice data into your Dataverse table. Once saved, the Spend Category prompt column fires asynchronously to categorize the record.

  • Click the + below the Run a prompt action.
  • Search for Add a new row and select the Microsoft Dataverse Add a new row action.
  • In the Table Name dropdown, select Invoice.
  • Map the following fields using the dynamic content picker:
  • Invoice ID: select Invoice Id from the extraction outputs.
  • Vendor Name: select Vendor name from the extraction outputs.
  • Invoice Date: select Invoice date from the extraction outputs.
  • Due Date: select Due date from the extraction outputs.
  • Amount Due: select the Amount due number value from the extraction outputs.
  • Invoice Total: select the Invoice total number value from the extraction outputs.
  • Risk Classification: select Text from the Run a prompt action outputs.
  • Processing Status: set to Processed.
  • Source File URL: open the dynamic content picker and select the Link to item property from the trigger outputs.
  • Confidence Score: select the Confidence score from the extraction outputs.
  • Click Save in the top-left corner to save your flow.

Why two AI integration patterns?

This project uses two distinct patterns. The Run a prompt action executes synchronously during the flow run, giving you the risk classification before the Dataverse row is created.

The Spend Category prompt column executes asynchronously after the row lands in Dataverse. This means there is a short delay before that column populates. Both patterns are valuable depending on whether you need the result immediately or can tolerate a brief wait.

Now test the full pipeline by uploading a sample invoice.

  • Find a sample invoice PDF. You can use any invoice PDF you have, or search online for "sample invoice PDF" to download a test document.
  • Navigate to your SharePoint Invoices library.
  • Click Upload and select your sample invoice PDF.
  • Return to Power Automate and open your flow. Click the flow run history to confirm it triggered.
  • Wait for the run to complete (typically 30-60 seconds). Verify each action shows a green checkmark.
  • Open the Invoice table in Power Apps (make.powerapps.com). Confirm a new row appears with extracted data, a Risk Classification value, and the Processing Status set to Processed.
  • Wait 1-2 minutes, then refresh the table. The Spend Category column should now show a value generated by the prompt column.

Why is Spend Category delayed?

The Spend Category is a Dataverse prompt column. It executes asynchronously after the row is created or its input columns (Vendor Name, Amount Due) are updated. A short delay before the value appears is expected behavior.

Flow run failed?

Click on the failed run to see which action errored. Common issues include:

  • The Site Address in Get file content does not match the trigger. Both must point to the same SharePoint site.
  • The File Identifier field was left empty or uses a hard-coded path instead of the dynamic Identifier from the trigger.
  • AI Builder credits are exhausted. Check your credit balance in the Power Platform admin center.

Help me troubleshoot my failed flow run.

Your automated invoice pipeline is live. Next up, you will build a model-driven app to surface all this data with AI-powered summaries and dashboards.

Build the Model-Driven App with Row Summary and Dashboard

Your automated flow is extracting invoice data, classifying risk, and storing everything in Dataverse. Now you need a way for business users to actually see and interact with this data.

A model-driven app builds its interface directly from your Dataverse table structure. In this step, you will create an app with filtered views, AI-generated row summaries, and a generative dashboard page.

In this step, get ready to:
  • Create a model-driven app with three custom views for the Invoice table.
  • Configure an AI-generated row summary for invoice records.
  • Add a generative page dashboard showing invoice metrics and charts.
Create the model-driven app and configure views

Views control how records are displayed in a model-driven app. You will create three views that let users quickly filter invoices by risk level or group them by vendor.

  • Return to Power Apps at make.powerapps.com.
  • Select Solutions in the left navigation pane.
  • Open the solution that contains your Invoice table.
  • Click New > App > Model-driven app.
  • Enter Invoice Intelligence App as the name and click Create.

What is a model-driven app?

A model-driven app generates its forms, views, and navigation automatically from your Dataverse table schema. You define the data model and the app builds the UI around it.

This is different from a canvas app where you design every pixel manually. Model-driven apps are ideal for data-heavy business applications like invoice management.

  • In the app designer, click Add page on the command bar.
  • Select Dataverse table.
  • Search for and select your Invoice table, then click Add.
  • Click Save on the command bar.

Now you will create the three custom views. Start with the "All Invoices" view that shows every record.

  • In the left navigation, expand Tables and select the Invoice table.
  • Select the Views area.
  • Click New view.
  • Enter All Invoices as the name and click Create.
  • In the view designer, use + View column to add columns: Vendor Name, Invoice Date, Amount Due, Risk Classification, and Spend Category.
  • Click Save and publish.

Next, create a filtered view that shows only high-risk invoices.

  • Return to the Views area and click New view again.
  • Enter High Risk Invoices as the name and click Create.
  • Add the same columns as the All Invoices view.
  • Select the header of the Risk Classification column and choose Filter by.
  • Set the condition to Equals and enter High as the value.
  • Click Save and publish.

Finally, create the By Vendor view that groups invoices by vendor name.

  • Return to the Views area and click New view.
  • Enter By Vendor as the name and click Create.
  • Add the same columns as the other views.
  • Select the header of the Vendor Name column and choose Group by.
  • Click Save and publish.

Now set the All Invoices view as the default view for the table.

  • Return to the Views area.
  • Click the More commands icon (three dots) next to All Invoices and select Set as default view.

Why three different views?

Each view serves a different workflow. The "All Invoices" view gives a complete picture. The "High Risk Invoices" view lets finance teams quickly prioritize urgent payments. The "By Vendor" view groups spending by supplier for relationship management.

Don't see the Filter by option?

Make sure you are clicking directly on the column header text, not the area around it. The dropdown menu appears with sorting and filtering options.

If the Risk Classification column is not showing data yet, confirm your test invoice flow ran successfully in Step 4.

Help me filter a view by a specific column value in Power Apps.

Configure the row summary

Row summaries use AI to generate a quick overview of each record. When a user selects an invoice, the Insights bar displays a natural language summary highlighting the most important fields.

  • Navigate to the Invoice table in your solution.
  • Select Customizations > Row summary.
  • In the prompt editor, write the following custom prompt:
Summarize this invoice record highlighting the vendor, total amount, risk level, spend category, and due date urgency. Keep it to 2-3 sentences.

What does this prompt do?

This prompt instructs the AI to focus on the five most important fields when generating a summary. It also constrains the output to 2-3 sentences, keeping it concise enough to scan at a glance in the Insights bar.

  • Click Save to save the row summary configuration.

The row summary requires the AI insight cards environment setting to be enabled. Verify this is turned on for your environment.

  • Open the Power Platform admin center.
  • Navigate to Copilot > Settings > Power Apps > Summary.
  • Confirm the Row summaries toggle is turned On. If it is already on, no changes are needed.

Not seeing the Row summary option?

The row summary feature requires a Power Apps premium license. Verify your license is active for the environment you are working in.

If the Customizations menu does not show Row summary, check that your environment is in a supported region (United States, Great Britain, Australia, or Singapore).

Help me enable row summaries for my Invoice table.

Add a generative page dashboard and publish the app

Generative pages let you describe a dashboard in plain English, and Power Apps builds it automatically. You will create a page that shows invoice processing metrics and charts.

  • Return to the app designer for your Invoice Intelligence App.
  • Click Add page on the command bar.
  • Select Generative page.

What is a generative page?

A generative page turns a natural language description into a working dashboard. Behind the scenes, Power Apps generates the layout and connects it to your Dataverse data. You can link up to 6 tables per generative page.

Your Power Platform environment must be in the United States, Great Britain, Australia, or Singapore to use this feature.

  • In the description field, enter the following text:
Create a dashboard showing invoice processing status. Include a card showing total invoices processed, a breakdown by Risk Classification (High/Medium/Low) as a bar chart, a breakdown by Spend Category as a pie chart, and a list of recent invoices sorted by Due Date.
  • Add the Invoice table as the data source.
  • Click Generate and wait for the page to be created.
  • Review the generated dashboard. It should display a total invoices card, a Risk Classification bar chart, a Spend Category pie chart, and a recent invoices list.
  • Click Publish on the command bar to publish the entire app.

Refine the generated page

If the initial output does not match your expectations, edit the description to be more specific. For example, you can specify exact chart colors, card positions, or which columns to display in the list.

Now verify the app works end to end.

  • Click Play on the command bar to open the published app.
  • Confirm that invoice records display in the All Invoices view.
  • Use the view selector to switch to High Risk Invoices and By Vendor to confirm the filter and grouping work.
  • Select an invoice record. In the Insights bar on the right side of the form, verify the AI-generated row summary appears.
  • Navigate to the generative page in the app's left navigation. Confirm the dashboard shows invoice metrics and charts.

Row summary shows after a short delay

Row summaries generate on first access for each record. You may see a brief loading indicator before the summary text appears in the Insights bar. This is normal behavior.

Row summary not appearing in the Insights bar?

Confirm the AI insight cards setting is turned on in the Power Platform admin center under Copilot > Settings > Power Apps > Summary.

Make sure you have saved the record at least once. Summaries only generate for saved records, not new unsaved forms.

Help me troubleshoot my missing row summary.

Secret mission

Build an On-Demand Invoice Scanner Canvas App

Your automated flow handles invoices dropped into SharePoint. But what about invoices that arrive on the spot during a meeting, or ones you need to scan from a photo on your phone? In this mission, you will build a standalone canvas app that lets users scan invoices on-demand using Power Fx and the AI Builder invoice model directly.

Clean Up Your Resources

Clean Up Your Resources

This project uses AI Builder credits from your Power Apps premium license. The Power Automate flow consumes credits each time it processes an invoice. Decide whether to keep your resources running, pause them to come back later, or delete them entirely.

Cost warning

While the flow remains active, every invoice PDF dropped into the SharePoint Invoices library triggers AI Builder credit consumption. The custom prompt also uses credits on each execution. Monitor your usage in the Power Platform admin center to avoid unexpected depletion of your AI Builder credit pool.

Resources you used:

  • SharePoint document library (Invoices).
  • Dataverse Invoice table (with Spend Category prompt column).
  • Power Automate cloud flow (Invoice Processing Flow).
  • Custom AI prompt (Invoice Risk Classifier).
  • Model-driven app (Invoice Intelligence App).
  • Canvas app (Invoice Scanner).

Keep everything running

No action needed. Choose this if you are still actively building on top of this solution or plan to continue processing invoices.

  • The flow will process any new invoices dropped in the SharePoint Invoices library automatically.
  • Monitor your AI Builder credit consumption in the Power Platform admin center under Billing > Licenses.
  • The Spend Category prompt column will continue executing asynchronously for every new or updated Invoice row in Dataverse.

Pause - I'll come back to this later

Shut down the automated flow to stop credit consumption. All your data, apps, and configuration remain intact so you can resume later.

  • Open Power Automate (make.powerautomate.com).
  • Select My flows in the left navigation pane.
  • Find the Invoice Processing Flow, select the vertical ellipsis (⋮), then select Turn off.
  • All apps, the Dataverse table, the SharePoint library, and the custom prompt remain unchanged.
  • When you are ready to resume, return to My flows, select the flow, and choose Turn on.

Delete - I don't want to use this again

Remove all project resources and start fresh. Follow each step below in order.

  • Delete the Power Automate flow: open Power Automate (make.powerautomate.com), select My flows, select the vertical ellipsis (⋮) next to the Invoice Processing Flow, then select Delete. Confirm by selecting Delete in the message box.
  • Delete the canvas app: in Power Apps (make.powerapps.com), select Apps from the left pane, select the Invoice Scanner app, select Delete from the top menu, then select Delete from cloud.
  • Delete the model-driven app: in Power Apps, select Apps, select the Invoice Intelligence App, then select Delete on the command bar. Choose Delete from this environment.
  • Delete the Dataverse Invoice table: in Power Apps, select Tables in the left navigation, select the Invoice table, then select Delete from the menu. Confirm the deletion. This permanently removes all invoice data.
  • Delete the custom AI prompt: navigate to AI hub > Prompts, select the Invoice Risk Classifier prompt, then select Delete.
  • Delete the SharePoint document library: open your SharePoint site, navigate to the Invoices library from the left Quick Launch bar, select the gear icon (Settings), then select Library settings. Under Permissions and Management, select Delete this document library. Confirm by selecting OK.

Nice Work!

Nice Work!

Nice work! You have built an end-to-end intelligent document processing solution that turns raw invoice PDFs into structured, AI-enriched business data.

You've learned how to:

  • Built a SharePoint-to-Dataverse invoice ingestion pipeline using AI Builder's prebuilt invoice model and a Power Automate cloud flow.
  • Created a custom AI prompt for risk classification and configured a prompt column for automatic spend categorization on record creation.
  • Designed a model-driven app with risk-based views, AI-generated row summaries, and a generative page dashboard built with natural language.
  • Secret Mission: Built a canvas app that scans invoices on-demand using Power Fx and the AI Builder invoice processing model.

Ready to quiz yourself?