logo

NJP

AI Identified Risks: Data Fetch and Configuration Logic

New article articles in ServiceNow Community · Oct 16, 2026 · article

Our first post introduced AI Identified Risks in Project Workspace. The most common question since then has been the one we left at a high level: what exactly does the AI look at, and why does it sometimes find nothing?

 

This article walks through the topics it considers, how far back it looks, where the thresholds live, and what the severity labels mean.

 

How Risks Are Generated

 

A set of rule-based checks run against your project data first and produce plain-language findings, like “this task is 12 days past its end date”, “this resource is at 140% in October”. Only those findings go to the model, along with your project details and the risks already on your RIDAC register. The AI’s job is to group related findings into well-written risks with an impact, probability, rationale, and suggested mitigation plan.

 

Each run follows a six-step pipeline. Steps 2 to 4 are deterministic, they use rules and thresholds to turn project data into short insight statements. Step 5 is a single LLM call that consolidates those statements into risks.

 

VibhaSharma_0-1792135528048.png

 

Output Structure

 

The final output per run consists of:

  • Risks: Up to five risks, each with short_description, description, probability, impact, mitigation_plan and an HTML ai_rationale.
  • Record Links: numberToSysIdMaps returned alongside the risks so record numbers in the rationale render as clickable links.

 

Data Fetch Window

 

AI Identified Risks uses the project insights cadence to size its data window. NARIDACGenerationContextualDataProvider.fetchConfigDetails() reads the project's email insight configuration (sn_spm_gen_ai_email_insight_config). If one exists, run_type sets the cadence and report_configurations sets effort_type and heatmap_view. If none exists, the defaults below apply.

VibhaSharma_1-1792135624864.png

VibhaSharma_2-1792135664785.png

 

How to Read This Guide

 

Each data source is presented with the following information:

  • What It Fetches: A plain-language description of the data loaded.
  • Fetch Query: The table, access type and filter conditions used.
  • Fields Loaded: The columns read for each record.
  • When It Fires: The conditions under which an insight is produced from that data.
  • Default Configuration: The thresholds in effect.
  • Data Scope: What date range or project scope bounds the fetch.
  • Severity and Sent to the LLM As: How urgency is labelled and what the prompt receives.

 

All 12 RIDAC Data Sources at a Glance

 

VibhaSharma_3-1792135863262.png

 

Detailed Breakdown of Each Data Source

 

The following sections take a closer look at each of the 12 RIDAC data sources:

VibhaSharma_5-1792136296266.png

 

 

VibhaSharma_7-1792136561225.png

 

VibhaSharma_8-1792136639419.png

 

VibhaSharma_9-1792136775028.png

 

VibhaSharma_10-1792136840854.png

 

VibhaSharma_11-1792136934673.png

VibhaSharma_12-1792137034487.png

VibhaSharma_13-1792137115880.png

VibhaSharma_14-1792137182987.png

 

Context Data (Risks and Project Details):

VibhaSharma_15-1792137307059.png

VibhaSharma_16-1792137361752.png

VibhaSharma_17-1792137416981.png

 

Why You Might See No Risks

 

Cause 1: No Configured Threshold Is Crossed

The project data does not cross any configured threshold. Risks are generated only from issues found in project tasks, milestones, resource assignments and financials, based on the thresholds defined in the risk assessment configuration (for example, tasks or milestones delayed by at least 1 day, resources allocated above 101 percent, or a budget or cost variance). If no issue is found, the AI is instructed to return no risks.

Where: NARiskGenerationLLMService.getRIDACRiskAssessmentConfig() (script include function).

 

Cause 2: The Issues Are Already Covered by Existing Risks

The AI is instructed not to create risks that duplicate or overlap risks already on the project, including AI risks that were accepted earlier.

Where: Project RIDAC generation skill (prompt instructions).

 

Cause 3: There Is Not Enough Project Content for the AI to Provide Insights

In this case, the request returns the message "There is not enough content for AI to provide insights" and no risks are created.

Where: NARiskGenerationLLMService.errorHandler() (script include function).

 

Cause 4: The AI Response Contains No Risks, or the Response Is Not in the Expected Format

Risks are read only from the risks list in the AI response. If the list is empty or the response cannot be read, the message "No risks were generated" is shown.

Where: NARiskGenerationLLMService._extractRisks() (script include function).

 

Cause 5: The User Does Not Have Permission to Create Risk Records

Risks are saved using the logged-in user's access rights. If a create ACL on the risk table blocks the insert, the record is not created and no error is shown.

Where: NARisksGenerationDataService.saveRisks() (script include function).

 

Quickest Way to Prove It End to End: Take a test project, set a task’s end date to last week, leave the actual end date empty, and click "Generate AI Risks." That’s the simplest condition that should produce a draft.

 

I hope this helps clarify how AI Identified Risks evaluates project data and generates risks. Have feedback or questions? Drop them in the comments below!


Related Articles

 

 

 

View original source

https://www.servicenow.com/community/spm-articles/ai-identified-risks-data-fetch-and-configuration-logic/ta-p/3611058