Competitive Intelligence RSS Summarizer
Pulls RSS feeds for tracked competitors on a schedule, generates a concise digest of the most notable updates via Azure OpenAI, persists signals to Dataverse, and emails the strategy team on high-impact items.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This RSS-triggered flow watches a configured competitor RSS feed, sends each new item to Azure OpenAI for classification + signal extraction, writes the structured result into the flowlibs_competitiveintel Dataverse table, and emails the strategy team only when the signal is flagged high-impact. It's a strong reference pattern for "RSS in → AOAI categorize → Dataverse persist → conditional notification" pipelines.
Use Case
Sales, Marketing, and Strategy teams want to know when competitors announce a product, a partnership, or a leadership change — but nobody wants to scroll RSS feeds all day. Generic RSS-to-email or RSS-to-Teams adapters dump every item indiscriminately, drowning the signal in noise. This flow uses Azure OpenAI to extract structured signals (topic, urgency, summary) from each feed item and only pages the strategy team when the model flags a high-impact event.
The flow is ideal for teams that:
- One row per signal in Dataverse — historical analysis and Power BI on top come for free.
- LLM-driven categorization + impact scoring keeps the inbox quiet.
- AOAI configuration in env vars — swap deployments or model versions without touching the flow.
- Strategy team email recipient lives in an env var — no flow edit to re-route on team changes.
Flow Architecture
When a feed item is published
RSSFires on every new item in the configured competitor RSS feed.
Init 6 variables
InitializeVariablevarAoaiEndpoint, varAoaiDeployment, varAoaiApiKey, varStrategyTeamEmail, varAoaiApiVersion, varSystemPrompt.
Call Azure OpenAI
HTTPPOST to {endpoint}/openai/deployments/{deployment}/chat/completions?api-version={version} with system prompt + feed item as user message.
Parse AOAI Response / Parse Extracted Signal
ParseJson / ComposeExtracts choices[0].message.content and parses the LLM JSON into topic, summary, impact level.
Create Competitive Intel Record
Dataverse AddRecordPersists the signal in flowlibs_competitiveintel with feed-item URL, title, parsed fields.
Notify Strategy Team On High Impact Signal
If conditionBranches on toLower(impact) == 'high'.
- Send High Impact Email — Outlook SendEmailV2 to flowlibs_StrategyTeamEmail with the structured signal summary.
Empty branch — record persisted, no notification.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_CompetitiveIntelRSSFeed | String | — | Absolute URL of the RSS feed the trigger watches. |
| flowlibs_CompetitiveIntelTable | String | flowlibs_competitiveintels | Entity-set name for the Dataverse signal table. |
| flowlibs_AOAIEndpoint | String | — | Azure OpenAI resource endpoint. |
| flowlibs_AOAIDeployment | String | — | Deployment name of the chat-completion model (e.g. `gpt-4o-mini`). |
| flowlibs_AOAIApiKey | String | — | Azure OpenAI API key — stored as a Secret env var. |
| flowlibs_StrategyTeamEmail | String | — | Recipient address for the high-impact signal email. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| RSS | shared_rss | OnNewFeed (trigger) |
| Dataverse | shared_commondataserviceforapps | AddRecord (persists the parsed signal) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (high-impact alert to the strategy team) |
| HTTP | shared_http | POST (Azure OpenAI chat-completions endpoint) |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Fan out to multiple feeds
- Replace the trigger with Recurrence + List feed items (V4) loop iterating an array env var of feed URLs.
- Post to Teams on high-impact
- Add Post adaptive card in a chat or channel inside the True branch with an env-var-driven channel ID.
- Mirror to a SharePoint Marketing Intel list
- Add a Create item action after Create Competitive Intel Record to fan out the same fields to SharePoint.
- Add a digest mode
- Drop a Recurrence + Dataverse List rows at midnight to aggregate the day's signals and email a single digest.
- Switch model providers
- Swap the AOAI HTTP call for an OpenAI/Anthropic equivalent — only the URL and auth header change.
- Promote varSystemPrompt to an env var
- Lets you tune the prompt without redeploying the flow.
- Add deduping
- Before insert, query flowlibs_competitiveintel for a matching feed-item URL and skip if already present.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Read AOAI endpoint env var
Standard env-var read at flow start.
EXPR.02Build AOAI URL
Concatenates endpoint + deployment + version into the chat-completions URL.
EXPR.03Pull message content from AOAI response
Reads choices[0].message.content from the response.
EXPR.04High-impact branch test
Drives the If condition.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.