The Problem Is Not Missing Contracts. It Is Missing Context.
Most procurement teams have all their contracts somewhere. SharePoint, a shared drive, maybe a dedicated folder someone set up three years ago and hasn't been touched since. The contracts are there. The problem is that nobody is reading them systematically — and the information buried in them (renewal windows, auto-renewal clauses, price escalation triggers, liability caps) only matters on specific dates, most of which nobody has written down anywhere.
The pattern is familiar: a supplier invoice arrives in March with a 4% price increase. Someone pulls up the contract and finds a CPI escalation clause that technically allows it. The clause was in the original document, signed two years ago. Nobody flagged it at the time because reading every contract closely on the day it lands is not how teams actually work. The contract was filed and forgotten.
This flow does not replace contract management software. It does not build a full contract register or send you reminders 90 days before expiry based on a curated database. What it does is much simpler: every time a new contract lands in your SharePoint folder, it reads the file, extracts the key dates and commercial clauses, and posts a clean summary to your Teams channel within two minutes. No chasing. No manual reading. No missed context.
What You Need Before You Start
This is genuinely a short build. Before you open Power Automate, sort out two things:
- A dedicated SharePoint folder for incoming contracts. One folder, one purpose. Every new contract that needs to be reviewed goes here. The flow watches this folder and triggers on every new file. Do not mix this with your general documents library.
- A Teams channel where the summary should land. This can be an existing procurement channel or a dedicated one. The key is that the right people see it — whoever is responsible for acting on contract information should be in this channel.
The 5-Step Flow
Step 1 — Trigger: new file in the SharePoint contracts folder
In Power Automate, create a new automated cloud flow. Set the trigger to "When a file is created (properties only)" from the SharePoint connector. Point it at the site and folder you prepared. This trigger fires every time a new document is uploaded — Word, PDF, or any other format your contracts arrive in.
Step 2 — Get file content
Add the "Get file content" action from the SharePoint connector. Pass in the file identifier from the trigger output. This retrieves the full binary content of the document — no separate text conversion step needed. AI Builder accepts the file directly in this format, which keeps the flow clean and avoids encoding issues you can run into if you try to convert to text first.
Step 3 — Set today's date as a variable
Add an "Initialize variable" action. Name it TodayDate, type String, and set the value to:
formatDateTime(utcNow(), 'dd.MM.yyyy')
This step exists for one reason: AI models handle relative date expressions inconsistently. If a contract says "renewal within 90 days of expiry" and the model does not know today's date, you can get a hallucinated year or a vague "coming soon" interpretation. Injecting today's date explicitly into the prompt context fixes this. It takes 20 seconds to add and prevents the most common source of incorrect output from contract parsing.
Step 4 — Run a custom prompt with the contract file
Add the "Create text with GPT using a prompt" action from AI Builder (you may see it listed as "Create text with a prompt" depending on your environment). Pass in the file content from step 2 and the TodayDate variable from step 3.
For the prompt itself, write the basic instructions — what fields you want extracted and in what format. A starting point:
"You are a procurement assistant. Today's date is [TodayDate]. Read the attached contract and extract: supplier name, contract start date, contract end date or renewal date, notice period for termination, price adjustment clause (if any — include the exact mechanism), and contract value if stated. Format the output as a Markdown table with two columns: Field and Value. If a field is not present in the document, write 'Not specified'."
Step 5 — Post the summary to Teams
Add the "Post message in a chat or channel" action from the Microsoft Teams connector. Set the target to your contracts channel. For the message body, use the output text from the AI Builder step — it already comes back as Markdown, which Teams renders natively. Add a header line before the table so the message is immediately readable in the channel feed:
"📄 New contract uploaded: [Trigger file name] — here is the summary:" followed by the AI Builder output on the next line.
The result is a clean two-column Markdown table in the Teams channel within about 30 seconds of the file being uploaded. Supplier, dates, price clause, value — everything that matters, visible to whoever is in the channel, without anyone having to open the PDF.
| Field | Value |), bold with **asterisks**, line breaks with a blank line. If you want to route the output to Outlook instead, switch to the Office 365 Outlook "Send an email" action and wrap the AI output in basic HTML tags (<table>, <tr>, <td>). The AI Builder step is identical either way — only the delivery action changes.
What This Actually Replaces
The immediate win is not efficiency — it is awareness. Before this flow, a contract landed in SharePoint, someone maybe skimmed the signature page, and the rest sat unread until a problem surfaced. Now, within 30 seconds of upload, the channel has a structured summary that anyone can scan in 20 seconds. Price escalation clauses get noticed. Renewal windows get noted. The person who was out the week the contract was uploaded does not miss it because it is sitting in the channel history.
The contract was always there. What was missing was the 30-second summary that tells you whether you need to read it now or in six months.
Where You Can Take This Next
This flow is deliberately simple — it is a proof of concept that takes under 30 minutes to build and immediately produces visible value. Once it has been running for a month without issues, the natural next steps are straightforward: write the AI output to a SharePoint list instead of (or in addition to) posting to Teams, and you have a contract register that builds itself. From there, a second scheduled flow can query that list daily for contracts expiring within 90 days and send a digest to the responsible owner. None of that requires rethinking the architecture — it is additions to what you have already built.
If your team manages a significant contract volume, a Dataverse table gives you more querying flexibility than a SharePoint list — but that is a later problem. Start with the 5-step version. Run it on real contracts for two weeks. The gaps it exposes will tell you exactly what to build next.
For a similar flow applied to a different operational problem — company car booking approvals — see Car Booking Automation. For the broader question of where contract monitoring fits in a procurement AI strategy, Where to Start With AI in Procurement is a useful starting point.