<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Perficient Blogs</title>
	<atom:link href="https://blogs.perficient.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://blogs.perficient.com/</link>
	<description>Expert Digital Insights</description>
	<lastBuildDate>Tue, 29 Sep 2026 22:49:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://blogs.perficient.com/wp-content/uploads/2026/03/cropped-Perficient-Favicon-512-150x150.png</url>
	<title>Perficient Blogs</title>
	<link>https://blogs.perficient.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">30508587</site>	<item>
		<title>Building a Pattern-Based Engine to Migrate ADF Pipelines from Synapse to Databricks</title>
		<link>https://blogs.perficient.com/building-a-pattern-based-engine-to-migrate-adf-pipelines-from-synapse-to-databricks/</link>
		
		<dc:creator><![CDATA[Mukesh Kumar]]></dc:creator>
		<pubDate>Tue, 29 Sep 2026 22:49:22 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392471</guid>

					<description><![CDATA[<p>How we automated the migration of 500+ orchestration activities across 37 data factories — with zero manual JSON editing Target audience: Data engineers migrating Azure&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/building-a-pattern-based-engine-to-migrate-adf-pipelines-from-synapse-to-databricks/">Building a Pattern-Based Engine to Migrate ADF Pipelines from Synapse to Databricks</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>How we automated the migration of 500+ orchestration activities across 37 data factories — with zero manual JSON editing</em></p>
<p><strong>Target audience: </strong>Data engineers migrating Azure cloud data platforms; technical architects evaluating ADF-to-Databricks strategies<strong><br />
Estimated read time: </strong>12 minutes</p>
<h2>The Problem</h2>
<p>Your organization runs dozens of Azure Data Factory (ADF) factories containing hundreds of pipelines. Many of those pipelines read from or write to Azure Synapse Analytics (formerly SQL Data Warehouse) — and the decision has been made to migrate that workload to Databricks Unity Catalog.</p>
<p>A manual approach would require teams to open each pipeline in the ADF portal, replace activities, test, repeat. At 500+ impacted activities across 37 factories, that&#8217;s months of tedious, error-prone work.</p>
<p>We took a different approach: <strong>treat ADF pipeline JSON as a parseable AST, and build a compiler-like engine that rewrites it programmatically.</strong></p>
<p>This post walks through the architecture, the key technical decisions, and the patterns that made it work.</p>
<h2>Architecture Overview: A Two-Phase Pipeline Compiler</h2>
<p>The framework operates in two distinct phases, orchestrated by a single parameterized notebook:</p>
<h3>Phase 1: Normalize (&#8220;Load Clean&#8221;)</h3>
<p>ADF&#8217;s REST API export format is not the same as the ADF Git/authoring format that the portal and CI/CD tooling expect. Before migration, we normalize every pipeline JSON through four transformations:</p>
<ol>
<li><strong>Strip ARM envelope fields — </strong>id, type, etag are Azure Resource Manager metadata, not pipeline logic</li>
<li><strong>Convert snake_case keys to camelCase — </strong>the REST API returns linked_service_name; ADF authoring expects linkedServiceName</li>
<li><strong>Nest activity-specific fields under typeProperties — </strong>the API export flattens them; authoring format nests them</li>
<li><strong>Wrap top-level fields under properties — </strong>activities, variables, annotations belong inside a properties block</li>
</ol>
<p><strong>The critical subtlety: </strong>Not all keys should be camelCased. ADF pipeline variables, parameters, and stored procedure parameters are user-defined identifiers referenced literally in expressions like @{variables(&#8216;Config_Schema&#8217;)}. Converting Config_Schema to configSchema would silently break every expression in the pipeline.</p>
<p>The solution: maintain a set of &#8220;user-defined containers&#8221; whose immediate child keys are exempt from case conversion:</p>
<pre>USER_DEFINED_CONTAINERS = {

"variables",

"parameters",

"globalParameters",

"storedProcedureParameters",

}




def convert_keys_camel(obj, parent_key=None):

if isinstance(obj, dict):

skip = parent_key in USER_DEFINED_CONTAINERS

return {

(k if skip else snake_to_camel(k)): convert_keys_camel(v, parent_key=k)

for k, v in obj.items()

}

elif isinstance(obj, list):

return [convert_keys_camel(item, parent_key=parent_key) for item in obj]

return obj

</pre>
<h3>Phase 2: Migrate</h3>
<p>Once normalized, the engine scans every activity in every pipeline, determines whether it references a Synapse resource, classifies the migration pattern, and generates a replacement activity.</p>
<pre>┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐

│  ADF REST API   │    │   Normalized    │    │   Migrated       │

│  Export (raw)   │──&#x25b6;│   Pipeline JSON  │──&#x25b6;│   Pipeline JSON   │

│  snake_case     │    │   camelCase      │    │   Databricks     │

└─────────────────┘    └─────────────────┘    └─────────────────┘

     Phase 1: Load Clean          Phase 2: Activity Migration</pre>
<h2>Zero-Config Migration: Auto-Discovering the Blast Radius</h2>
<p>The first hard question in any migration is: <strong>what actually needs to change?</strong></p>
<p>Manually cataloging Synapse-dependent resources across 37 factories, 2,200+ JSON files, and dozens of linked services is a recipe for missed dependencies. Instead, the framework auto-discovers its own migration scope by scanning the ADF export artifacts.</p>
<h3>The Discovery Chain</h3>
<pre>linked_services/*.json          datasets/*.json              pipelines/*.json

        │                            │                           │

        ▼                            ▼                           ▼

  Filter by type:              Match dataset → LS:         Match activity → dataset:

  AzureSqlDW or                "Which datasets point       "Which activities reference

  AzureSynapseAnalytics         to a Synapse LS?"           a Synapse dataset?"

        │                            │                           │

        ▼                            ▼                           ▼

    SYNAPSE_LS[ ]              SYNAPSE_DATASETS[ ]         Migration targets

    LS_TO_SECRET{ }            DS_TO_LS{ }

</pre>
<p><strong>Step 1: Identify Synapse linked services. </strong>Scan linked_services/ for JSON files where properties.type is AzureSqlDW or AzureSynapseAnalytics. While scanning, extract the Key Vault secret name from the connection string definition — this is needed later when generating JDBC parameters for the replacement notebook.</p>
<p><strong>Step 2: Identify Synapse datasets. </strong>Scan datasets/ and keep any dataset whose linkedServiceName.referenceName points to a LS from Step 1.</p>
<p><strong>Step 3: Classify pipeline activities. </strong>For each activity in each pipeline, check five reference patterns:</p>
<table>
<tbody>
<tr>
<td width="192"><strong>Pattern</strong></td>
<td width="192"><strong>Where to look</strong></td>
<td width="192"><strong>What it means</strong></td>
</tr>
<tr>
<td width="192"><strong>activity.inputs[].referenceName ∈ Synapse DS</strong></td>
<td width="192">Copy source side</td>
<td width="192">Data is READ from Synapse</td>
</tr>
<tr>
<td width="192"><strong>activity.outputs[].referenceName ∈ Synapse DS</strong></td>
<td width="192">Copy sink side</td>
<td width="192">Data is WRITTEN to Synapse</td>
</tr>
<tr>
<td width="192"><strong>typeProperties.dataset.referenceName ∈ Synapse DS</strong></td>
<td width="192">Lookup activity</td>
<td width="192">Query runs against Synapse</td>
</tr>
<tr>
<td width="192"><strong>typeProperties.linkedServiceName ∈ Synapse LS</strong></td>
<td width="192">Stored procedure</td>
<td width="192">SP executes on Synapse</td>
</tr>
<tr>
<td width="192"><strong>activity.linkedServiceName ∈ Synapse LS</strong></td>
<td width="192">Root-level LS ref</td>
<td width="192">Script/SP on Synapse</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>This three-step chain means the framework needs <strong>zero manual configuration</strong> for a new factory — just point it at the ADF export folder and run.</p>
<h2>Handling Nested Control Flow: Recursive Activity Tree Walking</h2>
<p>ADF pipelines are not flat lists of activities. They contain container activities that nest child activities arbitrarily deep:</p>
<ul>
<li><strong>ForEach</strong> — typeProperties.activities[]</li>
<li><strong>IfCondition</strong> — typeProperties.ifTrueActivities[] and typeProperties.ifFalseActivities[]</li>
<li><strong>Until</strong> — typeProperties.activities[]</li>
<li><strong>Switch</strong> — typeProperties.cases[].activities[]</li>
</ul>
<p>A Synapse-dependent Lookup might be three levels deep inside a ForEach → IfCondition → activities array. A flat scan would miss it entirely.</p>
<p>The solution is a recursive descent function that walks every branch of the activity tree:</p>
<pre>def migrate_activities(activities, migration_log):

    migrated = []

    for activity in activities:

        is_target, pattern, ref = is_synapse_activity(activity)




        if is_target:

            new_act = apply_migration_pattern(activity, pattern, ref)

            migration_log.append(build_log_entry(activity, pattern, ref))

            migrated.append(new_act)

        else:

            new_act = deepcopy(activity)

            tp = new_act.get('typeProperties', {})




            if 'activities' in tp:          # ForEach / Until

                tp['activities'] = migrate_activities(tp['activities'], log)

            if 'ifTrueActivities' in tp:    # IfCondition

                tp['ifTrueActivities'] = migrate_activities(tp['ifTrueActivities'], log)

            if 'ifFalseActivities' in tp:

                tp['ifFalseActivities'] = migrate_activities(tp['ifFalseActivities'], log)

            if 'cases' in tp:               # Switch

                for case in tp['cases']:

                    if 'activities' in case:

                        case['activities'] = migrate_activities(case['activities'], log)


            migrated.append(new_act)

    return migrated</pre>
<p><strong>Key design decision: </strong>Non-Synapse activities are deepcopy&#8217;ed and passed through unchanged. The engine only touches what it needs to. This means the output JSON is a perfect copy of the input, except for the specific activities that were replaced — a property we validate later.</p>
<h2>The Pattern Catalog: Three Migration Strategies for Three Activity Types</h2>
<p>Not every Synapse-dependent activity can be replaced the same way. The framework defines a pattern catalog — a mapping from source activity type to target Databricks activity, based on what the activity actually does.</p>
<h3>Pattern A: Copy Activity → DatabricksNotebook</h3>
<p><strong>Source: </strong>ADF Copy activity reading from Synapse via SqlDWSource or AzureSqlSource</p>
<p><strong>Target: </strong>A DatabricksNotebook activity that calls a parameterized Generic Ingestion Framework notebook</p>
<p>The replacement notebook uses JDBC to connect to the source database (credentials fetched from Key Vault at runtime), executes the original SQL query, and writes the result using the original sink format.</p>
<p><strong>The sink-type-aware design </strong>is the critical detail here. The original Copy activities don&#8217;t all write to the same destination format — some write Parquet to ADLS, some write CSV, some write to SQL tables. Simply replacing everything with Delta writes would break downstream consumers.</p>
<p>The framework inspects the original activity&#8217;s sink.type and maps it:</p>
<pre>SINK_TYPE_MAP = {

    "ParquetSink":       "parquet",

    "DelimitedTextSink": "csv",

    "AvroSink":          "avro",

    "AzureSqlSink":      "delta",

    "SqlDWSink":         "delta",

}

</pre>
<p>For file-based sinks, it also extracts the output dataset&#8217;s container, path, and filename parameters (which may be static strings or ADF dynamic expressions) and passes them through to the notebook.</p>
<h3>Pattern B: Lookup Activity → WebActivity (SQL Statement Execution API)</h3>
<p>Lookup activities query config tables, watermarks, or CDC flags. They&#8217;re lightweight — spinning up a notebook cluster for a single SELECT MAX(watermark) is overkill.</p>
<p>Instead, the framework replaces these with a WebActivity that calls the Databricks SQL Statement Execution API directly:</p>
<pre>{

  "type": "WebActivity",

  "typeProperties": {

    "url": "https://&lt;workspace&gt;/api/2.0/sql/statements",

    "method": "POST",

    "body": {

      "warehouse_id": "&lt;sql_warehouse_id&gt;",

      "statement": "&lt;original_query&gt;",

      "catalog": "&lt;target_catalog&gt;",

      "wait_timeout": "30s"

    },

    "authentication": {

      "type": "MSI",

      "resource": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d"

    }

  }

}

</pre>
<p>This is cheaper, faster, and doesn&#8217;t require a running cluster — the SQL warehouse handles it.</p>
<p><strong>But not all Lookups are read-only. </strong>Some contain DML (INSERT, EXEC stored_proc). The framework includes a query classifier that inspects the SQL text — including dynamically generated ADF expressions — to route:</p>
<ul>
<li>Read-only SELECT / WITH → WebActivity (Pattern B)</li>
<li>DML / stored procedure calls → DatabricksNotebook (Pattern C)</li>
</ul>
<h3>Pattern C: Stored Procedure → DatabricksNotebook</h3>
<p>Synapse stored procedures have no direct equivalent in Databricks. These are replaced with a DatabricksNotebook activity, and the stored procedure logic itself must be rewritten as SparkSQL or PySpark in a dedicated notebook.</p>
<p>The framework generates the activity scaffolding; the actual logic translation is a separate workstream.</p>
<h2>Preserving ADF Expressions Across Migration</h2>
<p>ADF pipelines are full of dynamic expressions: @pipeline().parameters.SourceSchema, @activity(&#8216;Lookup1&#8217;).output.firstRow.watermark, @concat(&#8230;). These are evaluated at runtime by the ADF engine.</p>
<p>The migration framework must handle three scenarios:</p>
<ol>
<li><strong> Static values</strong> — pass through as {&#8220;value&#8221;: &#8220;dbo&#8221;, &#8220;type&#8221;: &#8220;String&#8221;}</li>
<li><strong> ADF expressions that still work</strong> — pipeline parameters and variable references don&#8217;t change when the target activity changes. These are preserved verbatim:</li>
</ol>
<pre>{"value": "@pipeline().parameters.SourceSchema", "type": "Expression"}</pre>
<ol start="3">
<li><strong> Expressions that break</strong> — The biggest one: Lookup result access.</li>
</ol>
<p>In native ADF:</p>
<pre>@activity('MyLookup').output.firstRow.watermark_value</pre>
<p>When the Lookup is replaced by a WebActivity calling the SQL Statement Execution API, the output shape changes. ADF reads notebook output via runOutput, and we wrap the result in a JSON envelope:</p>
<pre>@json(activity('MyLookup').output.runOutput).firstRow.watermark_value</pre>
<p>For WebActivity replacements, the output is the raw API response, requiring a different access pattern:</p>
<pre>@activity('MyLookup').output.result.data_array[0][0]</pre>
<p>The framework detects which downstream activities reference the migrated Lookup and annotates the migration report with the required expression changes. This is one area where full automation gives way to guided manual review — the combinatorial space of downstream expression patterns is too large to safely auto-rewrite.</p>
<h2>Trust But Verify: A Five-Point Validation Suite</h2>
<p>Automated migration is only valuable if you can trust the output. The framework runs five validation checks after every migration:</p>
<ol>
<li><strong> Passthrough integrity.</strong> For pipelines with zero Synapse dependencies, the output JSON must be byte-identical to the input. Any difference means the normalization or deepcopy logic introduced a bug.</li>
<li><strong> File count verification.</strong> The all/ output folder must contain exactly as many files as the source. The impacted/ folder must match the number of pipelines that had at least one activity migrated.</li>
<li><strong> Linked service reference check.</strong> Every migrated activity (identifiable by the [MIGRATED from Synapse] description tag) must reference the Databricks linked service. If any still point to the old Synapse LS, the replacement logic has a gap.</li>
<li><strong> Synapse dataset removal.</strong> Scan all migrated pipelines for any remaining references to Synapse datasets. A DatabricksNotebook activity should never reference a Synapse dataset in its inputs/outputs.</li>
<li><strong> False positive detection.</strong> Verify that only Synapse-linked activities were migrated. If an activity referencing an ADLS linked service or a REST API was converted, the detection logic is too aggressive.</li>
</ol>
<p>These five checks give us a green/red signal per factory, and they run in seconds. In practice, checks 3-5 caught real bugs during development — edge cases where the LS reference was at the activity root instead of inside typeProperties, or where a dataset name appeared in both Synapse and non-Synapse contexts.</p>
<h2>One Notebook, 37 Factories: Parameterization at Scale</h2>
<p>The framework is a single notebook with widget parameters:</p>
<table>
<tbody>
<tr>
<td width="288"><strong>Parameter</strong></td>
<td width="288"><strong>Purpose</strong></td>
</tr>
<tr>
<td width="288"><strong>factory_name</strong></td>
<td width="288">Which ADF factory to migrate</td>
</tr>
<tr>
<td width="288"><strong>target_catalog</strong></td>
<td width="288">Destination Unity Catalog catalog</td>
</tr>
<tr>
<td width="288"><strong>databricks_ls</strong></td>
<td width="288">Databricks linked service name in ADF</td>
</tr>
<tr>
<td width="288"><strong>dry_run</strong></td>
<td width="288">Preview mode — no files written</td>
</tr>
<tr>
<td width="288"><strong>notebook_base</strong></td>
<td width="288">Production notebook path for generated activities</td>
</tr>
<tr>
<td width="288"><strong>workspace_url</strong></td>
<td width="288">Databricks workspace URL (for WebActivity endpoints)</td>
</tr>
<tr>
<td width="288"><strong>sql_warehouse_id</strong></td>
<td width="288">SQL warehouse for Lookup-to-WebActivity pattern</td>
</tr>
</tbody>
</table>
<p>Changing factory_name is all it takes to migrate a different factory. The auto-discovery chain rebuilds the Synapse LS list, dataset list, and secret mappings from scratch for each factory.</p>
<p>The two-phase architecture is composed via %run:</p>
<pre>%run "./Load_Clean_Pipelines"  ← Phase 1 (normalize)

# ... then Phase 2 (migrate) runs in the same notebook</pre>
<p>This means a single &#8220;Run All&#8221; executes the complete pipeline: normalize → discover → classify → migrate → generate templates → validate → report.</p>
<h3>Output Artifacts</h3>
<p>For each factory, the framework generates:</p>
<ul>
<li><strong>migrated_pipelines/all/</strong> — Complete set of pipeline JSONs, deployable to ADF via CI/CD. Non-impacted pipelines pass through unchanged.</li>
<li><strong>migrated_pipelines/impacted/</strong> — Only the pipelines that had activity-level changes (suffixed _UC for disambiguation during parallel deployment).</li>
<li><strong>notebooks/</strong> — Template notebooks (generic ingestion framework, delta lookup query) parameterized to work with any source table.</li>
<li><strong>migration_report.json</strong> — Machine-readable report: every activity migrated, its original type, the pattern applied, source dataset, linked service, and sink type.</li>
</ul>
<h2>Lessons Learned</h2>
<h3>1. ADF&#8217;s REST API export and Git format are NOT the same</h3>
<p>This was the single biggest time sink. We initially assumed we could migrate directly from the API export. The snake_case keys, flat activity structure, and missing properties wrapper meant every downstream tool — ADF portal import, CI/CD pipelines, validation scripts — rejected the output. Building the normalization phase as a separate, testable step was the right call.</p>
<h3>2. User-defined identifiers hide in plain sight</h3>
<p>The camelCase conversion bug was subtle. Everything looked correct until we tested a pipeline that used a variable called Config_Schema. The expression @{variables(&#8216;Config_Schema&#8217;)} silently failed because the variable had been renamed to configSchema in the JSON. The fix — exempting user-defined container keys from conversion — required understanding ADF&#8217;s evaluation model, not just its JSON schema.</p>
<h3>3. Sink-type preservation matters more than you think</h3>
<p>Our first version replaced everything with Delta table writes. It worked — until we discovered downstream SSIS packages, Power BI dataflows, and third-party tools that consumed Parquet and CSV files at specific ADLS paths. Preserving the original sink format and output path was non-negotiable for a drop-in replacement.</p>
<h3>4. Auto-discovery beats manual configuration every time</h3>
<p>For the first factory, we hand-built a JSON config listing every Synapse LS and dataset. For factory #2, we realized the linked service JSON files already contain everything we need — the type, the connection string, the Key Vault reference. Scanning them programmatically eliminated a class of errors (missed datasets, typos in LS names) and made the framework truly zero-config.</p>
<h3>5. Validation is not optional when you&#8217;re rewriting pipelines</h3>
<p>We caught real bugs in production-bound output through automated validation: a linked service reference at the activity root instead of inside typeProperties, a dataset that appeared in both Synapse and non-Synapse contexts, and a passthrough pipeline that was accidentally modified by the normalization step. Five automated checks run in seconds and saved hours of debugging in ADF.</p>
<h3>6. AI pair programming accelerated the iteration cycle</h3>
<p>The framework was developed iteratively with AI coding assistance. The pattern was: describe the desired behavior → generate code → run against real data → inspect edge cases → refine. This was especially effective for the recursive tree walker (where getting the JSON path names right for each container type was fiddly) and the query classifier (where the combinatorial space of ADF expression patterns benefited from rapid prototyping). The human&#8217;s role was domain judgment: deciding which patterns to support, validating business rules, and making architectural choices the AI couldn&#8217;t infer from code alone.</p>
<h2>Conclusion</h2>
<p>Migrating ADF pipelines from Synapse to Databricks is not a lift-and-shift — it&#8217;s a targeted rewrite of specific activities within a larger orchestration graph. By treating pipeline JSON as a parseable tree, auto-discovering the migration scope from artifact metadata, and applying a pattern catalog with recursive traversal, we turned a months-long manual effort into a parameterized, repeatable, validated process.</p>
<p>The framework processed 37 factories, identified 245 impacted pipelines, and migrated 526 activities with zero manual JSON editing. Every output was validated against five automated checks before deployment.</p>
<h3>Key Takeaways:</h3>
<ul>
<li>Treat pipeline JSON as an AST, not a config file</li>
<li>Auto-discover scope from the artifacts themselves — don&#8217;t rely on manual inventories</li>
<li>Define a pattern catalog that maps source activity types to specific target implementations</li>
<li>Preserve sink formats and ADF expressions — migration is not the time to change data contracts</li>
<li>Validate aggressively: passthrough integrity, reference checks, false positive detection</li>
<li>Parameterize everything — the 37th factory should be as easy as the first</li>
</ul>
<p><em>Have questions about migrating ADF pipelines to Databricks? Reach out — we&#8217;ve seen the edge cases so you don&#8217;t have to.</em></p>
<p>The post <a href="https://blogs.perficient.com/building-a-pattern-based-engine-to-migrate-adf-pipelines-from-synapse-to-databricks/">Building a Pattern-Based Engine to Migrate ADF Pipelines from Synapse to Databricks</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/iStock-828938138-1-1-1-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392471</post-id>	</item>
		<item>
		<title>AI Tools Briefing &#8211; NotebookLM and Wispr Flow: AI-Powered Research and Content Creation</title>
		<link>https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/</link>
		
		<dc:creator><![CDATA[Venkata Sreeram Murthy Gonella]]></dc:creator>
		<pubDate>Mon, 28 Sep 2026 15:06:16 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392458</guid>

					<description><![CDATA[<p>1. NotebookLM — AI-Powered Research and Content Creation NotebookLM is Google&#8217;s free AI research assistant, available at notebook.google. Unlike a general chatbot, it only answers&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/">AI Tools Briefing &#8211; NotebookLM and Wispr Flow: AI-Powered Research and Content Creation</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 style="margin: 10.0pt 0in 8.0pt 0in"><b><span style="font-size: 17.0pt;color: #1e1b4b">1. NotebookLM — AI-Powered Research and Content Creation</span></b></h2>
<figure id="attachment_392461" aria-describedby="caption-attachment-392461" style="width: 600px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" data-attachment-id="392461" data-permalink="https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/notebooklm-1/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/NotebookLM-1.png" data-orig-size="600,338" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Notebooklm 1" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/NotebookLM-1.png" class="wp-image-392461 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/NotebookLM-1.png" alt="Notebooklm 1" width="600" height="338" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/NotebookLM-1.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/NotebookLM-1-300x169.png 300w" sizes="(max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-392461" class="wp-caption-text">From raw sources to structured, citable output — NotebookLM as a research layer.</figcaption></figure>
<p>NotebookLM is Google&#8217;s free AI research assistant, available at <a href="https://notebook.google/">notebook.google</a>. Unlike a general chatbot, it only answers from the sources you give it — PDFs, Google Docs, websites, YouTube videos, audio files, even Slides — which keeps its output grounded and reduces the made-up-fact problem that affect open-ended AI chat. Every answer comes with inline citations pointing back to the exact source.</p>
<p>It has grown well beyond note-taking. The current version runs on Google&#8217;s Gemini models and includes a genuine &#8220;Deep Research&#8221; mode that can browse the web on its own, pull in outside sources, and compile an annotated research report. From there, a built-in Studio can turn that research into slide decks, infographics, mind maps, flashcards, quizzes, and its well-known podcast-style &#8220;Audio Overviews,&#8221; plus AI-narrated video summaries.</p>
<h3><strong>Key Features</strong></h3>
<ul>
<li><strong>Source-grounded answers: </strong>responses cite the specific document, page, or timestamp they come from, which matters for anything that needs to be fact-checked before it&#8217;s published.</li>
<li><strong>Deep Research mode: </strong>the tool browses the web, gathers relevant sources, and produces a structured report or explainer on its own.</li>
<li><strong>Studio outputs: </strong>one click turns a notebook into a slide deck, infographic, mind map, briefing doc, or an audio/video overview.</li>
<li><strong>Free tier: </strong>up to 100 notebooks and 50 sources each are available on a standard Google account, with higher limits on paid plans.</li>
<li><strong>Google Workspace integration: </strong>Drive documents can sync directly into a notebook, so it stays current as source files are updated.</li>
</ul>
<h3><strong>Use Case in Practice</strong></h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>The quarterly competitor teardown</strong></p>
<p>→  Drop 10-12 competitor blog posts, two analyst PDFs, and a couple of earnings-call transcripts into one notebook.</p>
<p>→  Ask it to build a comparison table of how each competitor positions itself, what they&#8217;re pricing against, and which claims they repeat most.</p>
<p>→  Ask follow-up questions in chat — every answer cites the exact source, so anything contested can be checked in one click.</p>
<p>→  Use Studio to turn the notebook into a briefing doc for the team and a slide deck for the Monday review.</p>
<p><strong>Result: </strong><em>A research job that normally eats two or three days becomes a focused afternoon, with citations attached.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>Turning product docs into launch content</strong></p>
<p>→  Upload the product spec, the release notes, two customer interview transcripts, and the support team&#8217;s FAQ list.</p>
<p>→  Ask for the five questions customers are most likely to ask, drawn only from those sources.</p>
<p>→  Generate a first-draft launch blog post and an FAQ page, both grounded in what the product actually does.</p>
<p>→  Generate an Audio Overview so the sales team can listen to the launch summary on their commute.</p>
<p><strong>Result: </strong><em>Launch copy that doesn&#8217;t overclaim, because the tool can only work from the real documentation.</em></td>
</tr>
</tbody>
</table>
<h2 style="margin: 10.0pt 0in 8.0pt 0in"><b><span style="font-size: 17.0pt;color: #1e1b4b">2. Wispr Flow — Voice-First Writing, Everywhere You Type</span></b></h2>
<figure id="attachment_392462" aria-describedby="caption-attachment-392462" style="width: 513px" class="wp-caption alignnone"><img decoding="async" data-attachment-id="392462" data-permalink="https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/wispr2/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/Wispr2.png" data-orig-size="513,289" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Wispr2" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/Wispr2.png" class="wp-image-392462 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/Wispr2.png" alt="Wispr2" width="513" height="289" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/Wispr2.png 513w, https://blogs.perficient.com/wp-content/uploads/2026/09/Wispr2-300x169.png 300w" sizes="(max-width: 513px) 100vw, 513px" /><figcaption id="caption-attachment-392462" class="wp-caption-text">Speak naturally; Wispr Flow cleans it into polished text wherever your cursor is.</figcaption></figure>
<p>Wispr Flow (<a href="https://wisprflow.ai/">wisprflow.ai</a>) is a system-wide AI dictation tool built by Wispr AI, a San Francisco startup founded by ex-Apple and ex-Meta engineers. It&#8217;s not a plain transcription app — a hotkey or wake word activates it in any text field, on any app, and it turns spoken speech into clean, formatted, context-aware text. That means the filler words, false starts, and &#8220;ums&#8221; of natural speech never make it into the final draft.</p>
<p>It runs on Mac, Windows, iPhone, and Android, and works inside virtually anything with a text box — Gmail, Slack, Notion, Google Docs, Word, and AI chat tools included. People who write a lot report roughly 3-4x their typing speed once they&#8217;re used to it, since natural speech runs at 150+ words per minute against a typing average closer to 40.</p>
<h3><strong>Key Features</strong></h3>
<ul>
<li><strong>Context-aware cleanup: </strong>automatically removes filler words, fixes sentence structure, and adjusts tone and formatting for the app you&#8217;re dictating into.</li>
<li><strong>Universal app support: </strong>works as a system-level voice keyboard rather than a feature inside one app, so it follows you across your whole workflow.</li>
<li><strong>100+ languages, </strong>including mixed-language dictation such as Hinglish.</li>
<li><strong>Command Mode and snippets: </strong>supports voice commands and a reusable snippet library for text you type often.</li>
<li><strong>Cross-device sync: </strong>one account carries your vocabulary, snippets, and preferences across Mac, Windows, iOS, and Android.</li>
</ul>
<h3><strong>Use Case in Practice</strong></h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>The campaign brief written straight after the client call</strong></p>
<p>→  The call ends and the context is still fresh — but typing a full brief means 40 minutes at the keyboard.</p>
<p>→  Open the brief template, hit the hotkey, and talk through the objective, audience, channels, and constraints the way you&#8217;d explain them to a colleague.</p>
<p>→  Flow strips the &#8220;ums&#8221; and half-sentences, punctuates it, and formats it into clean paragraphs in the document.</p>
<p>→  Spend the remaining time editing for accuracy rather than producing the first draft from scratch.</p>
<p><strong>Result: </strong><em>A 600-word brief captured in five or six minutes, while the details are still sharp.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>Clearing a backlog of Slack replies and client emails</strong></p>
<p>→  Twenty unanswered messages across Slack and Gmail, most needing two or three considered sentences.</p>
<p>→  Dictate each reply in place — Flow picks up the app you&#8217;re in and adjusts tone, keeping Slack casual and email more formal.</p>
<p>→  Use saved snippets for the boilerplate that repeats: meeting links, standard turnaround times, sign-offs.</p>
<p>→  For anyone working in Hinglish or switching languages mid-sentence, it handles the mix without breaking.</p>
<p><strong>Result: </strong><em>An hour of typing compressed into roughly twenty minutes of talking.</em></td>
</tr>
</tbody>
</table>
<h2 style="margin: 10.0pt 0in 8.0pt 0in"><b><span style="font-size: 17.0pt;color: #1e1b4b">3. AI Ads &amp; Content Creation: Where the Industry Is Headed</span></b></h2>
<figure id="attachment_392464" aria-describedby="caption-attachment-392464" style="width: 600px" class="wp-caption alignnone"><img decoding="async" data-attachment-id="392464" data-permalink="https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/ai3/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/AI3.png" data-orig-size="600,338" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ai3" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/AI3.png" class="wp-image-392464 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/AI3.png" alt="Ai3" width="600" height="338" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/AI3.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/AI3-300x169.png 300w" sizes="(max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-392464" class="wp-caption-text">Generative AI has moved from a marketing experiment to default infrastructure.</figcaption></figure>
<p>Generative AI is no longer a novelty in advertising — it&#8217;s baseline infrastructure. Salesforce&#8217;s State of Marketing 2026 found that 87% of marketers now run generative AI in at least one recurring workflow, up from roughly half in 2024. The competitive edge has shifted: nearly everyone has access to the same tools now, so the gap that matters in 2026 is between teams turning AI output into real return and teams just producing more content.</p>
<p>Three shifts stand out this year. Generative video is now the default rather than the exception — most leading ad-creative platforms generate video first, not static images. Ad operations are becoming agentic: tools don&#8217;t just generate creative anymore, they pick winning variants, reallocate ad spend, and refresh fatigued creative automatically. And brand consistency has caught up with generation speed, with brand-kit and fine-tuning features now standard on major platforms so AI-generated variants stay on-brand at scale.</p>
<h3>The Numbers</h3>
<table>
<tbody>
<tr>
<td><strong>Metric</strong></td>
<td><strong>Statistic</strong></td>
<td><strong>Citation Link</strong></td>
</tr>
<tr>
<td>Marketing organizations using AI</td>
<td><strong>75%</strong></td>
<td><a href="https://www.salesforce.com/news/stories/state-of-marketing-2026/" target="_blank" rel="noopener">https://www.salesforce.com/news/stories/state-of-marketing-2026/</a></td>
</tr>
<tr>
<td>Marketers who say customers expect two-way conversations with brands</td>
<td><strong>83%</strong></td>
<td><a href="https://www.salesforce.com/news/stories/state-of-marketing-2026/" target="_blank" rel="noopener">https://www.salesforce.com/news/stories/state-of-marketing-2026/</a></td>
</tr>
<tr>
<td>Marketers who would trust AI to help respond to customers at scale</td>
<td><strong>81%</strong></td>
<td><a href="https://www.salesforce.com/news/stories/state-of-marketing-2026/" target="_blank" rel="noopener">https://www.salesforce.com/news/stories/state-of-marketing-2026/</a></td>
</tr>
<tr>
<td>Advertisers using or planning to use Generative AI for video ad creation</td>
<td><strong>86%</strong></td>
<td><a href="https://www.iab.com/news/nearly-90-of-advertisers-will-use-gen-ai-to-build-video-ads/" target="_blank" rel="noopener">https://www.iab.com/news/nearly-90-of-advertisers-will-use-gen-ai-to-build-video-ads/</a></td>
</tr>
<tr>
<td>Video ads expected to use Generative AI creative by 2026</td>
<td><strong>~40%</strong></td>
<td><a href="https://www.iab.com/news/nearly-90-of-advertisers-will-use-gen-ai-to-build-video-ads/" target="_blank" rel="noopener">https://www.iab.com/news/nearly-90-of-advertisers-will-use-gen-ai-to-build-video-ads/</a></td>
</tr>
</tbody>
</table>
<h3><strong>What This Means for Us</strong></h3>
<ul>
<li><strong>Treat AI creative as production infrastructure, </strong>not an experiment — competitors are already using it to cut creative production time and test more variants per campaign.</li>
<li><strong>Keep a human in the loop on brand voice. </strong>AI-generated copy and video move fast, but the teams winning with it are pairing it with human strategy and review, not replacing that step.</li>
<li><strong>Start with A/B testing at scale. </strong>generating dozens of ad variants for a single campaign is now realistic; the bottleneck shifts to deciding which few to actually run.</li>
<li><strong>Budget for it explicitly. </strong>AI ad tools are increasingly a line item, not a side tool — worth scoping into next quarter&#8217;s marketing tooling budget.</li>
</ul>
<h3><strong>Use Case in Practice</strong></h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>Festive-season campaign: 3 creatives become 30</strong></p>
<p>→  Traditionally: one shoot, three hero creatives, run them across every segment and hope the averages work out.</p>
<p>→  With AI generation: feed the brand kit, product URL, and a reference reel, and generate variants across audience segments, languages, and aspect ratios.</p>
<p>→  Run them as a structured test — the agentic layer identifies early winners and shifts spend toward them automatically.</p>
<p>→  Refresh fatigued creative mid-flight instead of waiting for the next production cycle.</p>
<p><strong>Result: </strong><em>More shots on goal per rupee of media spend, with the winner found in days rather than at the post-mortem.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>Localising one campaign across markets</strong></p>
<p>→  A campaign built for one market now needs to run across several regions and languages.</p>
<p>→  Generate copy and video variants per market from the same brand kit, so visual identity stays locked while the message adapts.</p>
<p>→  Have local marketers review for cultural fit and idiom — the AI produces the draft; people make the judgment call.</p>
<p>→  Keep a record of what was AI-generated for disclosure and brand-safety review.</p>
<p><strong>Result: </strong><em>Weeks of localisation work reduced to days, without each market drifting into its own look and voice.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The post <a href="https://blogs.perficient.com/ai-tools-briefing-notebooklm-and-wispr-flow-ai-powered-research-and-content-creation/">AI Tools Briefing &#8211; NotebookLM and Wispr Flow: AI-Powered Research and Content Creation</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/seminar-presentation-1-1-1024x576.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392458</post-id>	</item>
		<item>
		<title>Dreamforce 2026: AI Has Left the Pilot. Now Comes the Hard Part.</title>
		<link>https://blogs.perficient.com/dreamforce-2026-ai-has-left-the-pilot-now-comes-the-hard-part/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Fri, 25 Sep 2026 21:24:47 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[df26]]></category>
		<category><![CDATA[dreamforce]]></category>
		<category><![CDATA[salesforce]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392455</guid>

					<description><![CDATA[<p>For the past few years, enterprise AI strategy has revolved around a simple question: What can AI do? It can summarize customer histories, generate campaigns,&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/dreamforce-2026-ai-has-left-the-pilot-now-comes-the-hard-part/">Dreamforce 2026: AI Has Left the Pilot. Now Comes the Hard Part.</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>For the past few years, enterprise AI strategy has revolved around a simple question: <strong><em>What can AI do?</em></strong></p>
<p>It can summarize customer histories, generate campaigns, prepare sellers for meetings, resolve service requests, and execute increasingly complex sequences of tasks. The more interesting question emerging from Dreamforce is what happens when those capabilities stop living inside isolated pilots and begin operating across the enterprise.</p>
<p>Rather than center Dreamforce on a single breakthrough model or another generation of copilots, Salesforce outlined pieces of a much broader agentic architecture: AIforce as a new interface layer, specialized reasoning through Koa, increasingly autonomous agents, and an enterprise framework intended to govern agents and models across ecosystems.</p>
<p>Taken together, these announcements point to a larger shift:</p>
<p style="text-align: center"><strong><em>Enterprise AI is moving from a feature inside software to a layer connecting people, data, decisions, and actions across the business. </em></strong></p>
<p>The challenge isn’t simply adopting more AI. It’s deciding how applications, interfaces, data, governance, and human judgment should work when AI becomes an active participant in the enterprise.</p>
<h2>The Future of Enterprise Software May Be Less About the Interface</h2>
<p>One of the biggest ideas shared at Dreamforce was also one of the simplest: <strong><em>What if users don’t have to open an application to benefit from everything behind it?</em></strong></p>
<p><a href="https://www.salesforce.com/news/stories/aiforce-announcement/">AIforce</a> is Salesforce’s answer. Positioned above Data 360, Customer 360, and Agentforce, AIforce is intended to make Salesforce data, workflows, and permissions available through the environments where people already operate. Its initial surfaces illustrate the strategy: Claudeforce brings Salesforce into Claude, Slackforce brings Salesforce context to Slack, and Agentforce Coworker provides an AI teammate within Salesforce itself.</p>
<p>Enterprise applications have traditionally asked users to come to them. Users learn the interface, find the right record, navigate the right workflow, and move information from one application to another.</p>
<p>Agentic interfaces potentially reverse that relationship. The system comes to the user, bringing the appropriate data, permissions, and actions with it.</p>
<h2>One Model Isn’t Going to Run the Enterprise</h2>
<p>Another highlight is an enterprise AI environment where different models perform different jobs.</p>
<p><a href="https://www.bing.com/ck/a?!&amp;&amp;p=4c5dbfbaef6ef8c3d8debad7dad864e0a81a71f9de6d914351422f70c2063f02JmltdHM9MTc5MDI5NDQwMA&amp;ptn=3&amp;ver=2&amp;hsh=4&amp;fclid=1ec9f0f3-21f4-6ce6-3b36-e77b20af6db7&amp;psq=salesforce+koa&amp;u=a1aHR0cHM6Ly93d3cuc2FsZXNmb3JjZS5jb20vYWdlbnRmb3JjZS9rb2Ev">Koa</a>, Salesforce’s new CRM-specific reasoning model, is one example. Rather than positioning it as a replacement for general purpose models, Salesforce designed Koa for specialized CRM reasoning while models like Claude or ChatGPT can continue handling more general tasks.</p>
<p>This reflects a maturation in enterprise AI strategy.</p>
<p>Early generative AI encouraged organizations to think in terms of model selection: <strong><em>Which model is best? Which provider should become our standard? Which one wins?</em></strong></p>
<p>The more likely enterprise architecture is heterogeneous. A general-purpose model may be appropriate for one interaction; a domain-specific reasoning model may outperform it for another. Some processes may require deterministic logic alongside probabilistic reasoning. Different cloud environments or data constraints may introduce still more options.</p>
<p>Salesforce’s growing partnerships with Anthropic, AWS, Google Cloud, NVIDIA, and others reinforce that direction.</p>
<p>The strategic advantage may not come from picking a single model. It may come from building an architecture capable of choosing the right intelligence for the right task without forcing the enterprise to rebuild everything around it.</p>
<h2>Agents Are Becoming More Specialized and More Autonomous</h2>
<p>Dreamforce also revealed another notable change in how Salesforce talks about agents. They increasingly look less like generic AI features and more like specialized digital roles.</p>
<p>Salesforce introduced agents spanning customer service, IT and HR, commerce, supply chain, lead qualification, and outbound sales.</p>
<p>For example, <a href="https://www.bing.com/ck/a?!&amp;&amp;p=b7b854246c14fa2709833aad638f9b384ff22a2f1bfa2043063b0563219e2586JmltdHM9MTc5MDI5NDQwMA&amp;ptn=3&amp;ver=2&amp;hsh=4&amp;fclid=1ec9f0f3-21f4-6ce6-3b36-e77b20af6db7&amp;psq=salesforce+hunter+agent&amp;u=a1aHR0cHM6Ly93d3cuc2FsZXNmb3JjZS5jb20vc2FsZXMvYWktc2FsZXMtYWdlbnQvb3V0Ym91bmQv">Hunter</a>, Salesforce’s outbound sales agent, is built on what Salesforce describes as a long-horizon runtime. Rather than handling a single interaction and stopping, it’s designed to maintain a goal across days or weeks, use memory, and adjust as circumstances change.</p>
<p>As agents become capable of operating across longer time horizons, leaders will need to define not only what agents can do, but what they should own. Which decisions can they make independently? Which actions require approval? What conditions should trigger human intervention? Who is accountable when an autonomous sequence produces an unexpected result?</p>
<h2>The AI Stack is Getting More Complex Just as the Interface Gets Simpler</h2>
<p>For the user, AI may make enterprise technology simpler. Ask a question in Claude, Slack, or an AI coworker and let the underlying systems determine what data, model, or agent should respond.</p>
<p>Behind that simplicity, however, the technology environment becomes considerably more complicated.</p>
<p>Organizations may have agents from Salesforce alongside agents from other platforms. Multiple models may reason over the same business context. An agent could call another agent or cross several enterprise systems before completing an action. This makes governance less of a policy exercise and more of an architectural requirement.</p>
<p>Salesforce’s <a href="https://www.salesforce.com/news/stories/enterprise-ai-harness/">Trusted Enterprise AI Harness</a> reflects this. Its framework brings together context, agency, action, governance, security, and models, supported by an AI Control Plane intended to help organizations discover, register, and monitor agents, including third-party agents.</p>
<p>Organizations have historically governed access primarily around people and applications. An agentic enterprise introduces another participant: nonhuman actors capable of accessing information, making decisions, and taking action.</p>
<p>This requires organizations to rethink identity, permissions, observability, and accountability at the same time they’re expanding AI access. The companies that solve this well won’t simply have stronger guardrails – they’ll have greater freedom to experiment because they’ll understand where their agents are, what they can access, and what they’re doing.</p>
<h2>AI Readiness is Really Enterprise Readiness</h2>
<p>All of this makes the path from pilot to production more demanding than another round of technology deployment. AIforce can expose business functionality through new interfaces. Specialized models can improve reasoning in targeted contexts. Long-horizon agents can pursue objectives over time. An enterprise AI architecture can govern interactions among them.</p>
<p>An AI-powered interface can’t compensate for customer data employees themselves don’t trust. An autonomous agent can’t reliably execute a process that the organization can’t clearly define. Model orchestration does little good if systems can’t exchange context or actions consistently. And agent governance becomes difficult when permissions were never designed with nonhuman actors in mind.</p>
<p>That’s why adding another AI pilot can create the illusion of progress.</p>
<p>A controlled pilot asks whether a technology can succeed under favorable conditions. Scale exposes everything around the technology that isn&#8217;t ready.</p>
<p>Organizations preparing for this next phase should be asking:</p>
<ul>
<li>Is the data sufficiently trusted and contextualized for an agent to act on it?</li>
<li>Can agents carry identity and permissions appropriately across systems?</li>
<li>Which decisions require human judgment, and which can safely be delegated?</li>
<li>Can actions move reliably across the applications required to complete an outcome?</li>
<li>Can the enterprise monitor agents across platforms rather than one ecosystem at a time?</li>
<li>What happens when an agent fails, encounters ambiguity, or behaves unexpectedly?</li>
<li>How will users’ responsibilities change as agents take on more persistent roles?</li>
</ul>
<h2>The Real Opportunity Isn&#8217;t More AI. It&#8217;s a Different Enterprise.</h2>
<p>Dreamforce provided plenty of individual technologies to evaluate. AIforce challenges where employees interact with enterprise systems. Claudeforce and Slackforce demonstrate how business context can escape the traditional application interface. Koa points toward a multi-model future. Longer-running agents expand the boundaries of autonomous action. And Salesforce&#8217;s emerging governance architecture acknowledges the complexity all of this creates.</p>
<p>Enterprise software itself is being reassembled. The interface is becoming more fluid. Intelligence is becoming more specialized. Agents are becoming more persistent. Platforms are becoming more interoperable. Governance is moving deeper into the architecture.</p>
<p>This should change how leaders approach AI investment.</p>
<p>The next step isn&#8217;t to accumulate as many agents, models, or pilots as possible. It’s to decide what kind of enterprise those technologies are entering.</p>
<p>Where should intelligence live? Which systems should remain sources of truth even when users no longer interact with them directly? Which decisions should AI influence versus own? What capabilities need to be shared across every model and agent? And where will human judgment become more important because automation has taken over everything around it?</p>
<p>The first phase of enterprise AI proved that the technology can do remarkable things. <strong>The next phase is about building an enterprise that can trust it to do them at scale.</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://blogs.perficient.com/dreamforce-2026-ai-has-left-the-pilot-now-comes-the-hard-part/">Dreamforce 2026: AI Has Left the Pilot. Now Comes the Hard Part.</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/1000008154.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392455</post-id>	</item>
		<item>
		<title>Determinism on a Non-Deterministic Platform: The AI Challenge for Healthcare Payers</title>
		<link>https://blogs.perficient.com/determinism-on-a-non-deterministic-platform-the-ai-challenge-for-healthcare-payers/</link>
		
		<dc:creator><![CDATA[Phani Jaladi]]></dc:creator>
		<pubDate>Tue, 22 Sep 2026 20:33:05 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392444</guid>

					<description><![CDATA[<p>Health insurance organizations face a fundamental technology mismatch.  Claims processing, prior authorization, utilization management, risk adjustment, and member benefits operate under precise policies, effective dates,&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/determinism-on-a-non-deterministic-platform-the-ai-challenge-for-healthcare-payers/">Determinism on a Non-Deterministic Platform: The AI Challenge for Healthcare Payers</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Health insurance organizations face a fundamental technology mismatch.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Claims processing, prior authorization, utilization management, risk adjustment, and member benefits operate under precise policies, effective dates, audit requirements, and legal accountability. Yet the AI technologies being introduced into these workflows, including large language models, generative AI, and machine learning, are probabilistic by design.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The same clinical document processed twice may produce slightly different summaries. A fraud model retrained on newer claims data may assign a different score to an unchanged claim. A benefits assistant may interpret “Is PT covered?” differently from “Does the member have physical therapy benefits?”</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">This variability is not simply a defect that better prompting will eliminate. It is a characteristic of this technology.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The real challenge is not to make every AI component deterministic. It is to build a controlled, reproducible, and auditable system around non-deterministic components.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Why Healthcare Payers Are Different</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">In consumer applications, small variations in recommendations or generated language may be acceptable. In payer operations, the same variation can influence coverage, payment, provider review, coding, or a member’s financial decisions.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">In prior authorization, AI can extract clinical facts and summarize lengthy medical records. However, an omitted diagnosis, unsupported statement, or incorrect policy association can affect a consequential determination.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">In claims adjudication, identical claims evaluated with the same data, policy, rules, and effective date should produce the same result. AI may assist with classification, extraction, and exception routing, but deterministic services should continue to calculate the final outcome.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">In fraud, waste, and abuse, a high anomaly score is not a defensible explanation by itself. The model version, contributing features, threshold, supporting evidence, rules, and investigator actions must be traceable.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The same principle applies to coordination of benefits. If AI identifies another insurer or suggests a coverage order, the system should show the member and policy information supporting that recommendation, the checks performed, and the final reviewer decision.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">These are not merely model-accuracy problems. They are system-accountability problems. </span></p>
<h2><b><span data-contrast="auto">More Instructions Do Not Guarantee More Control</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">A common response to inconsistent AI behavior is to expand the prompt:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Follow every policy.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Check all eligibility conditions.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Never hallucinate.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Apply every exception.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Cite the source.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">Return the required structure.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto">Escalate uncertain cases.</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><span data-contrast="auto">More instructions may improve performance initially, but long prompts eventually introduce instruction saturation. Policies, examples, retrieved documents, conversation history, formatting constraints, and business rules compete for the model’s attention.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">This creates exposure to the “lost-in-the-middle” effect, where relevant information may be present in a long context but not used consistently, particularly when critical evidence or instructions are buried between other content.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The architectural implication is straightforward:</span><span data-contrast="auto"> </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">If a requirement must always be followed, it should not exist only as a prompt instruction.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Critical requirements should be implemented as executable rules, schemas, effective-dated queries, validations, authorization controls, and workflow gates.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Separate Language from Decisions</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">A Benefit Assist use case for example illustrates the right architectural pattern.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">When a member asks whether physical therapy is covered, the answer may depend on the member’s plan, plan year, date of service, eligibility, network tier, benefit limits, accumulators, authorization requirements, riders, exclusions, and coordination of benefits.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">A language model should not infer these facts or calculate the benefit.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The LLM should identify the intent, normalize the question, and explain the validated response. Deterministic services should retrieve the applicable data, and a rules engine should calculate the benefit.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">A controlled Benefit Assist flow should:</span><span data-ccp-props="{}"> </span></p>
<ol>
<li><span data-contrast="auto">Identify the member’s intent.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Map the request to a defined benefit category.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Retrieve eligibility, plan, network, accumulator, and policy data.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Apply effective-dated business rules.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Assemble the result using an approved response structure.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Allow the LLM to simplify the language without changing the determination.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Cite the source, effective date, and data timestamp.</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto">Escalate ambiguous, unsupported, or high-risk questions.</span><span data-ccp-props="{}"> </span></li>
</ol>
<p><span data-contrast="auto">This separation preserves conversational usability without allowing the model to become the source of truth.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Engineering Deterministic Boundaries</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">High-impact AI workflows should version the model, prompt, tools, retrieval configuration, embedding model, policy corpus, rules package, output schema, and post-processing logic. Model and prompt changes should be treated as controlled releases with regression testing and approval gates.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Generated outputs should follow defined schemas. Required evidence, citations, rule identifiers, confidence measures, missing information, and escalation reasons should be explicit. Invalid or unsupported outputs should fail validation rather than flow silently downstream.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Human oversight must also be designed into the architecture. AI may extract, classify, summarize, and recommend. Authorized people should approve consequential outcomes, particularly when policy ambiguity, incomplete evidence, clinical complexity, or member impact is high.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Confidence alone should never determine automation. A confident response can still be ungrounded, based on an expired policy, or inconsistent with structured member data.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Evaluate the System, Not Just the Model</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Traditional accuracy metrics are insufficient for agentic payer workflows. Evaluation should include:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Idempotency:</span></b><span data-contrast="auto"> Does the same request, data, model, tools, and rules produce the same business outcome?</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">Rules compliance:</span></b><span data-contrast="auto"> Were the correct rules, exceptions, effective dates, and precedence conditions applied?</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Groundedness:</span></b><span data-contrast="auto"> Is every consequential claim supported by an authorized source?</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="auto">Retrieval quality:</span></b><span data-contrast="auto"> Did the system retrieve the correct document version and relevant passage?</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><b><span data-contrast="auto">Consistency:</span></b><span data-contrast="auto"> Do equivalent questions produce the same intent, retrieval, rule execution, and material answer?</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><b><span data-contrast="auto">Regression:</span></b><span data-contrast="auto"> Do model, prompt, retrieval, or policy changes alter critical outcomes?</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><span data-contrast="auto">Groundedness alone is not enough. An answer can be grounded in the wrong plan document and still be operationally incorrect. Reliability must therefore be measured across the complete execution path.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">That path must also be reconstructable. A regulator-ready audit trail should capture the request, idempotency key, source-data versions, model and prompt versions, tool calls, retrieved evidence, rules evaluated, raw output, validation results, human actions, and final outcome.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">The Mental Model That Changes Everything</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">The AI model is not the system.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">It is one probabilistic component within a larger platform of authoritative data, deterministic retrieval, executable rules, validation gates, human accountability, monitoring, and audit controls.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The objective is not identical wording across every model response. The objective is a workflow that produces consistent, evidence-based, policy-compliant, explainable, and reproducible business outcomes.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The healthcare payers that succeed with AI will not necessarily be those that deploy it fastest. They will be those that build the governance and engineering infrastructure required to operate it safely at scale.</span><span data-ccp-props="{}"> </span></p>
<h3><b><span data-contrast="auto">Control is not the opposite of innovation. Control is what makes sustainable innovation possible.</span></b><span data-ccp-props="{}"> </span></h3>
<p>The post <a href="https://blogs.perficient.com/determinism-on-a-non-deterministic-platform-the-ai-challenge-for-healthcare-payers/">Determinism on a Non-Deterministic Platform: The AI Challenge for Healthcare Payers</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/Appointment-consulting-doctor-visit-on-mobile-app-1-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392444</post-id>	</item>
		<item>
		<title>AI Tools Briefing: From Idea to Interface to Working Code</title>
		<link>https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/</link>
		
		<dc:creator><![CDATA[Venkata Sreeram Murthy Gonella]]></dc:creator>
		<pubDate>Mon, 21 Sep 2026 16:06:28 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392404</guid>

					<description><![CDATA[<p>Three tools that cover the full build path — Google Stitch for design, Google AI Studio for prototyping with AI, and Claude Code for shipping&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/">AI Tools Briefing: From Idea to Interface to Working Code</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" data-attachment-id="392406" data-permalink="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/software-blog-1/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-1.png" data-orig-size="600,262" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Software Blog 1" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-1.png" class="alignnone wp-image-392406 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-1.png" alt="Software Blog 1" width="600" height="262" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-1.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-1-300x131.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p><em>Three tools that cover the full build path — Google Stitch for design, Google AI Studio for prototyping with AI, and Claude Code for shipping the actual code.</em></p>
<h2>How to Read This</h2>
<p>The three tools below sit at three different points of the same journey. Stitch turns an idea into screens you can look at. AI Studio turns an idea into a working AI prototype you can click. Claude Code turns a decision into code that&#8217;s committed to your repository. Used together they compress the distance from &#8220;what if we built…&#8221; to something real.</p>
<p>Each section shows what the tool looks like in use, lists what it does, and walks through two concrete scenarios. The screenshots are illustrative mockups of the workflow, not captures of anyone&#8217;s account — the intent is that someone who has never opened these tools can look at a page and understand what happens.</p>
<h2 style="margin: 10.0pt 0in 8.0pt 0in">1. Google Stitch — Describe a Screen, Get the Design</h2>
<figure id="attachment_392407" aria-describedby="caption-attachment-392407" style="width: 600px" class="wp-caption alignnone"><img loading="lazy" decoding="async" data-attachment-id="392407" data-permalink="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/software-blog-2/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-2.png" data-orig-size="600,338" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Software Blog 2" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-2.png" class="wp-image-392407 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-2.png" alt="Software Blog 2" width="600" height="338" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-2.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-2-300x169.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-392407" class="wp-caption-text">One sentence in, real interface screens out — with theme variants generated alongside.</figcaption></figure>
<p>Stitch is Google&#8217;s AI-powered UI design tool, built by Google Labs and powered by Gemini. You describe the interface you want in plain language — or upload a hand-drawn sketch or a screenshot — and it generates high-fidelity screens for web or mobile. From there you keep refining conversationally: ask for a darker theme, a different layout, an extra screen, and it updates the design.</p>
<p>The reason it matters isn&#8217;t just speed of mockups. Stitch closes the gap between design and development: the same screens can be exported to Figma for a designer to refine or exported directly as front-end code (HTML/CSS, Tailwind, React) for a developer to build on. That removes the usual handoff step where a design has to be rebuilt from scratch in code.</p>
<h2>What It Looks Like in Practice</h2>
<figure id="attachment_392410" aria-describedby="caption-attachment-392410" style="width: 600px" class="wp-caption alignnone"><img loading="lazy" decoding="async" data-attachment-id="392410" data-permalink="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/software-blog-3/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-3.png" data-orig-size="600,514" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Software Blog 3" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-3.png" class="wp-image-392410 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-3.png" alt="Software Blog 3" width="600" height="514" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-3.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-3-300x257.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-392410" class="wp-caption-text">The Stitch workflow end to end: prompt, generated screens, and export options.</figcaption></figure>
<h3>Key Features</h3>
<ul>
<li><strong>Text-to-design: </strong>describe the screen in normal language and get a complete, laid-out interface with colours, spacing, and components.</li>
<li><strong>Image-to-UI: </strong>upload a napkin sketch, a wireframe, or a competitor&#8217;s screenshot and get a clean, editable design in that direction.</li>
<li><strong>Theme controls: </strong>switch light and dark mode, set primary colours, corner radii, and fonts from a sidebar — changes cascade across every screen at once.</li>
<li><strong>Annotate: </strong>mark up a generated screen with comments and visual notes; the AI reads the annotations and applies the changes.</li>
<li><strong>Interactive prototyping: </strong>link screens into a clickable flow so a journey can be walked through rather than just described.</li>
<li><strong>Export both ways: </strong>push designs to Figma for design refinement, or take the generated front-end code straight into development.</li>
</ul>
<h3>Use Case in Practice</h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>Getting a concept in front of stakeholders the same day</strong></p>
<p>→  A stakeholder asks what a new self-service portal might look like. Normally: book a designer, wait a week for mockups.</p>
<p>→  Describe the portal in a few sentences — the screens needed, the audience, the tone.</p>
<p>→  Stitch generates the screens; use Theme controls to match brand colours and fonts.</p>
<p>→  Link the screens into a clickable flow and share it in the afternoon meeting.</p>
<p><strong>Result: </strong><em>The conversation moves from abstract debate to pointing at real screens, in hours instead of a sprint.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>From whiteboard sketch to developer-ready design</strong></p>
<p>→  A workshop ends with a whiteboard full of rough wireframes — useful to the people who were there, unusable to anyone else.</p>
<p>→  Photograph the sketches and upload them to Stitch as image input.</p>
<p>→  Stitch converts each sketch into a clean, consistent, high-fidelity screen using one shared theme.</p>
<p>→  Export to Figma for the design team to refine, and hand the generated front-end code to developers as a starting scaffold.</p>
<p><strong>Result: </strong><em>Workshop output stops dying on the whiteboard and becomes something the team can actually build from.</em></td>
</tr>
</tbody>
</table>
<p><strong>A practical note: </strong>Stitch is still a Labs-stage product, so results vary — it&#8217;s excellent for exploration, early concepts, and getting alignment quickly, but treat its output as a strong first draft rather than a finished design system. Teams that need generated UI constrained to their own production component library will still want a designer in the loop.</p>
<h2>2. Google AI Studio — The Fastest Way to Prototype With AI</h2>
<figure id="attachment_392432" aria-describedby="caption-attachment-392432" style="width: 498px" class="wp-caption alignnone"><img loading="lazy" decoding="async" data-attachment-id="392432" data-permalink="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/software-blog-4/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-4.png" data-orig-size="498,281" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Software Blog 4" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-4.png" class="wp-image-392432 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-4.png" alt="Software Blog 4" width="498" height="281" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-4.png 498w, https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-4-300x169.png 300w" sizes="auto, (max-width: 498px) 100vw, 498px" /><figcaption id="caption-attachment-392432" class="wp-caption-text">A prompt on the left, model and parameter controls on the right, exportable code underneath.</figcaption></figure>
<p>Google AI Studio is a free, browser-based workspace for building with Gemini, Google&#8217;s AI model family. At its simplest it&#8217;s a prompt playground: write a prompt, pick a model, adjust settings like temperature and max tokens, and see the result instantly — no setup, no billing, no installation. Sign in with a Google account and start.</p>
<p>What makes it more than a playground is what comes after the prompt works. &#8220;Get code&#8221; exports the exact API call as Python, JavaScript, or cURL so a developer can drop it into a real application. It issues free API keys. It handles text, images, audio, and video in the same interface. And its Build mode can generate and deploy whole working apps from a natural-language description, including full-stack web apps and native Android apps, with Google Workspace integrations wired up automatically.</p>
<h3><strong>Key Features</strong></h3>
<ul>
<li><strong>Prompt playground: </strong>test and compare prompts across Gemini models, and tune parameters like temperature and top-P to control how creative or deterministic the output is.</li>
<li><strong>Multimodal input: </strong>work with text, images, audio, and video in one place rather than needing separate tools.</li>
<li><strong>Get code: </strong>export any working prompt as a ready-to-paste API call in Python, JavaScript, or cURL.</li>
<li><strong>Free API keys: </strong>generate a key from a single Google account — no cloud project or billing setup required to start.</li>
<li><strong>Build mode: </strong>describe an app in plain language and have it generated, previewed, and deployed; supports full-stack web apps and native Android apps.</li>
<li><strong>Large context window: </strong>Gemini models in AI Studio handle very long inputs, so entire documents or transcripts can go in at once.</li>
</ul>
<h3><strong>Use Case in Practice</strong></h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>Proving an AI idea works before anyone writes a line of production code</strong></p>
<p>→  The team wonders whether AI could auto-triage incoming support tickets by urgency and topic.</p>
<p>→  Paste twenty real (anonymised) tickets into AI Studio and write a prompt that classifies each one and returns structured JSON.</p>
<p>→  Adjust the prompt and lower the temperature until the classification is consistent across all twenty.</p>
<p>→  Click &#8220;Get code&#8221; and hand the working API call to a developer to wire into the ticketing system.</p>
<p><strong>Result: </strong><em>A day of experimentation replaces a multi-week build-and-hope cycle — and if it doesn&#8217;t work, you&#8217;ve lost a day, not a quarter.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>Building a small internal tool without a development project</strong></p>
<p>→  A team repeatedly needs the same thing: paste in a long report, get back a summary in a fixed house format.</p>
<p>→  In Build mode, describe the tool — an input box, a summarise button, output in the required template.</p>
<p>→  AI Studio generates the app, and it can be previewed in the browser and iterated on by chatting with it.</p>
<p>→  Deploy it so the whole team can use it, rather than each person re-prompting a chatbot by hand.</p>
<p><strong>Result: </strong><em>Small repeated tasks get their own tool instead of sitting in a backlog behind bigger projects.</em></td>
</tr>
</tbody>
</table>
<h2>3. Claude Code — An AI Agent That Works in Your Codebase</h2>
<figure id="attachment_392435" aria-describedby="caption-attachment-392435" style="width: 600px" class="wp-caption alignnone"><img loading="lazy" decoding="async" data-attachment-id="392435" data-permalink="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/software-blog-5/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-5.png" data-orig-size="600,338" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Software Blog 5" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-5.png" class="wp-image-392435 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-5.png" alt="Software Blog 5" width="600" height="338" srcset="https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-5.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/09/software-blog-5-300x169.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-392435" class="wp-caption-text">Describe the problem in plain English; Claude Code searches, edits, tests, and reports back.</figcaption></figure>
<p>Claude Code is Anthropic&#8217;s agentic coding tool. Rather than being a chat window you copy code out of, it runs where the work already happens — in the terminal, in your IDE, in the desktop app, or in the browser — with direct access to your project. You describe what you want in plain English and it plans, reads the relevant files, makes the edits, runs the tests, and tells you what it did.</p>
<p>It works in a loop: gather context, take action, verify results, and repeat until the task is done. You can interrupt and redirect at any point. Because it can run commands and edit files directly, it handles the full task rather than the snippet — finding the bug, fixing it, running the test suite, and offering to commit. It also connects through MCP to outside sources like Google Drive, Figma, Slack, or Jira, so it can read a design doc or update a ticket as part of the same job.</p>
<h3><strong>Key Features</strong></h3>
<ul>
<li><strong>Build features from descriptions: </strong>explain what you want in plain English; it makes a plan, writes the code, and checks that it works.</li>
<li><strong>Debug and fix: </strong>paste an error message or describe the bug, and it traces the cause through the codebase and implements a fix.</li>
<li><strong>Understands the whole project: </strong>it keeps awareness of your project structure, so you can ask questions about an unfamiliar codebase and get real answers.</li>
<li><strong>Takes action directly: </strong>edits files, runs commands, runs tests, and creates commits, rather than handing back text for you to paste.</li>
<li><strong>Works everywhere: </strong>terminal, VS Code, JetBrains, desktop app, browser, Slack, and CI pipelines — the same agent across surfaces.</li>
<li><strong>Scriptable and automatable: </strong>it can be piped into and run non-interactively, so routine jobs can run automatically in CI.</li>
<li><strong>Extensible via MCP: </strong>connect it to Google Drive, Figma, Slack, Jira, or internal tooling so it can pull real context into a task.</li>
</ul>
<h3><strong>Use Case in Practice</strong></h3>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 1</strong></p>
<p><strong>Fixing a production bug in an unfamiliar part of the codebase</strong></p>
<p>→  A checkout total comes out wrong whenever a coupon is applied, and the developer who wrote that module has left.</p>
<p>→  Describe the symptom to Claude Code in plain language — no need to know which file is responsible.</p>
<p>→  It searches the codebase, identifies that the discount is applied before tax rather than after, and makes the fix.</p>
<p>→  It runs the test suite to confirm nothing else broke, then offers to commit the change.</p>
<p><strong>Result: </strong><em>A bug that would have started with an hour of code archaeology is diagnosed and fixed in one pass.</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="672">
<tbody>
<tr>
<td width="672"><strong>EXAMPLE 2</strong></p>
<p><strong>Clearing the maintenance work nobody wants to do</strong></p>
<p>→  A backlog of small, tedious jobs: lint errors, outdated dependencies, missing tests, release notes nobody has written.</p>
<p>→  Hand them over in plain English — &#8220;add unit tests for the payment module&#8221;, &#8220;write release notes from the commits since the last tag&#8221;.</p>
<p>→  Claude Code does the work in the repository, running tests as it goes so regressions surface immediately.</p>
<p>→  For recurring jobs, script it into CI so it runs automatically rather than being asked each time.</p>
<p><strong>Result: </strong><em>The maintenance backlog stops competing with feature work for developer attention.</em></td>
</tr>
</tbody>
</table>
<h2><strong>Where Each Tool Fits</strong></h2>
<p>A quick reference for deciding which tool a given task belongs to.</p>
<table width="672">
<tbody>
<tr>
<td width="453">I need to show someone what a screen could look like</td>
<td width="219"><strong>Google Stitch</strong></td>
</tr>
<tr>
<td width="453">I have a sketch and need a real design</td>
<td width="219"><strong>Google Stitch</strong></td>
</tr>
<tr>
<td width="453">I want to test whether AI can do a specific task</td>
<td width="219"><strong>Google AI Studio</strong></td>
</tr>
<tr>
<td width="453">I need a working API call to hand to a developer</td>
<td width="219"><strong>Google AI Studio</strong></td>
</tr>
<tr>
<td width="453">I need a small internal tool, fast</td>
<td width="219"><strong>Google AI Studio (Build mode)</strong></td>
</tr>
<tr>
<td width="453">I need code written, fixed, or tested in a real repo</td>
<td width="219"><strong>Claude Code</strong></td>
</tr>
<tr>
<td width="453">I need to understand a codebase nobody owns anymore</td>
<td width="219"><strong>Claude Code</strong></td>
</tr>
</tbody>
</table>
<h2><strong>Closing Thought</strong></h2>
<p><em>What these three have in common is that they lower the cost of trying something. A design concept, an AI feature, a fix to a messy piece of code — each used to be expensive enough that it needed justifying in advance.</em></p>
<p>The post <a href="https://blogs.perficient.com/ai-tools-briefing-from-idea-to-interface-to-working-code/">AI Tools Briefing: From Idea to Interface to Working Code</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/iStock-863101634-1-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392404</post-id>	</item>
		<item>
		<title>Agentic Commerce Readiness Starts with Product Data</title>
		<link>https://blogs.perficient.com/agentic-commerce-readiness-starts-with-product-data/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 15:05:34 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392395</guid>

					<description><![CDATA[<p>Most experiences described as agentic today are still assistive. They help buyers search, compare, and navigate options — but they do not independently complete the&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/agentic-commerce-readiness-starts-with-product-data/">Agentic Commerce Readiness Starts with Product Data</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Most experiences described as agentic today are still assistive. They help buyers search, compare, and navigate options — but they do not independently complete the full buying process. That distinction matters. Commerce leaders need a clear view of what agents can do now, what comes next, and what their organizations must build before autonomous buying becomes routine.</p>
<p>We’re proud to share that several Perficient experts were interviewed as part of the research process for Forrester’s <em>The State of Agentic Commerce, Q2 2026</em> (Forrester Research, Inc., May 2026). To Perficient, their participation reflects more than where the market is heading. It reflects where Perficient is already delivering today, bringing AI, data, commerce platforms, customer experience, and operations together to create measurable outcomes.</p>
<h2>What the Report Reveals</h2>
<p>Forrester&#8217;s report examines how agentic commerce could reshape product discovery and purchasing across consumer and business markets — and the gap between the current hype and where the technology actually stands today.</p>
<p>That gap should not be mistaken for a reason to wait.</p>
<p>According to Forrester,</p>
<blockquote><p><em>Currently, approximately one in 10 users who regularly use answer engines are authorizing answer engines to act semi-autonomously (i.e., without direct supervision) to complete tasks for them. Another 23% say they haven&#8217;t done so yet but would in the future.</em></p></blockquote>
<p>Fully autonomous commerce may still be taking shape, but AI-powered interfaces are already changing how buyers find and evaluate products. Answer engines and AI assistants can assemble recommendations before a buyer reaches a website, contacts a sales representative, or requests a quote.</p>
<p>The buying journey is not disappearing.  Buyers are entering it through new channels.</p>
<p>For commerce leaders, that raises a more immediate question: Can AI systems find, understand, and accurately represent their products?</p>
<h2>Product Data Determines Whether Agents Find You</h2>
<p>Traditional commerce strategies have focused heavily on websites, search, marketplaces, and sales channels. Those experiences remain important. But an AI agent does not evaluate a product the way a person does.</p>
<p>The agent relies on available data to understand technical attributes, applications, pricing, availability, delivery options, and compatibility. When that information is incomplete or inconsistent, the product can leave the consideration set before the company receives any signal of buyer interest.</p>
<p>A person may contact sales for clarification. An AI agent can simply recommend a competitor.</p>
<p>This is especially critical in B2B commerce, where companies manage thousands of complex SKUs, account-specific catalogs, negotiated prices, and configuration-dependent products. Product information management cannot remain a one-time cleanup project. It must become an operating discipline supported by governance, structured attributes, consistent syndication, and clear ownership.</p>
<h2>Agentic Commerce Readiness Goes Beyond Discovery</h2>
<p>Product data is the foundation, but readiness does not end there.</p>
<p>Agent-driven transactions will place new demands on commerce platforms, order management systems, inventory services, and fulfillment operations. If an agent cannot confirm stock, validate account pricing, reserve inventory, or provide an accurate delivery date, it will route the transaction elsewhere.</p>
<p>That loss may happen quietly. No abandoned-cart alert. No support ticket. No opportunity for a sales team to intervene.</p>
<p>Measurement must evolve as well. A buyer may discover a product in an answer engine and complete the purchase through a distributor, marketplace, procurement platform, or sales representative. Traditional analytics may capture the transaction without recognizing where the decision began.</p>
<p>Commerce teams need to treat AI-mediated discovery as an influence channel. That means tracking answer-engine referrals, assisted conversions, agent interactions, and the product attributes that improve visibility.</p>
<h2>How Perficient Helps Commerce Organizations Prepare</h2>
<p>Our team connects commerce strategy, data, AI, customer experience, and delivery. We help organizations tie pilots to the data, platforms, and operating processes needed to measure results.</p>
<p>That work includes strengthening product data foundations, modernizing commerce and order management architectures, improving product findability, deploying practical AI use cases, and building measurement models for emerging customer journeys.</p>
<p>Our AI-first approach applies AI where it removes friction, improves decisions, and produces measurable results. That is what it means to be Different for real: AI-first solutions backed by disciplined delivery and measurable outcomes.</p>
<h2>Preparing for What Comes Next</h2>
<p>Commerce leaders do not need to predict exactly when agentic commerce will reach full autonomy. They need to prepare for a buying environment in which agents play a larger role in discovery, evaluation, and transactions.</p>
<p>Strengthen product data first. Then test real-time fulfillment capabilities and measure AI-driven discovery. Build a readiness roadmap using short execution cycles.</p>
<p>Agentic commerce is still maturing. The companies building the right foundations now will be ready when buyer behavior catches up.</p>
<p>Forrester clients can access <a href="https://www.forrester.com/report/the-state-of-agentic-commerce-q2-2026/RES195671">The State of Agentic Commerce, Q2 2026 directly through Forrester.</a></p>
<p>The post <a href="https://blogs.perficient.com/agentic-commerce-readiness-starts-with-product-data/">Agentic Commerce Readiness Starts with Product Data</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/2026_ARInclusion_Forre-1200x800-px-High-Quality-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392395</post-id>	</item>
		<item>
		<title>How AI is Transforming the Monthly Financial Close Process</title>
		<link>https://blogs.perficient.com/how-ai-is-transforming-the-monthly-financial-close-process/</link>
		
		<dc:creator><![CDATA[Matt Hopkins]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 17:07:03 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[Account Reconciliation]]></category>
		<category><![CDATA[AI Close]]></category>
		<category><![CDATA[Consolidations]]></category>
		<category><![CDATA[Financial Close]]></category>
		<category><![CDATA[Office of Finance]]></category>
		<category><![CDATA[OneStream]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Cloud EPM]]></category>
		<category><![CDATA[Oracle EPM]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392380</guid>

					<description><![CDATA[<p>Closing the books at month-end has long been one of the most time-consuming, rushed and potentially error-prone tasks in accounting. From late entries to generating&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/how-ai-is-transforming-the-monthly-financial-close-process/">How AI is Transforming the Monthly Financial Close Process</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Closing the books at month-end has long been one of the most time-consuming, rushed and potentially error-prone tasks in accounting. From late entries to generating adjusted reports, accounting and finance teams often face tight deadlines, fragmented systems, and a flood of data. But now, Artificial Intelligence (AI) is changing the game.</span></p>
<h3><b><span data-contrast="auto">1. Smart Reconciliations</span></b></h3>
<p><span data-contrast="auto">One of the most powerful applications of AI in the financial close process is automating reconciliations. Traditional methods require manual comparisons of transactions across systems—tedious and time-intensive work. AI algorithms can analyze vast amounts of transactional data, identify anomalies, and automatically match records with high accuracy. This not only accelerates the process but also flags exceptions for human review, ensuring both speed and accuracy.</span></p>
<h3><b><span data-contrast="auto">2. Predictive Close and Error Detection</span></b></h3>
<p><span data-contrast="auto">AI can learn from historical close data to predict how long each step in the process will take and where issues are likely to arise. This proactive insight helps accounting and finance leaders allocate resources more effectively and avoid surprises. Machine learning models can also detect irregular patterns or inconsistencies that might indicate errors or fraud, giving teams more confidence in the numbers.</span></p>
<h3><b><span data-contrast="auto">3. Natural Language Processing (NLP) for Reporting</span></b></h3>
<p><span data-contrast="auto">AI-driven NLP tools can generate narrative summaries of financial performance, explaining variances and trends in plain language. This reduces the time spent preparing management reports and makes financial insights more accessible to non-financial stakeholders.</span></p>
<h3><b><span data-contrast="auto">4. Workflow Automation</span></b></h3>
<p><span data-contrast="auto">AI can optimize the close checklist by tracking task dependencies, monitoring progress, and sending automated alerts to keep the process on schedule. It acts like a digital project manager—ensuring nothing falls through the cracks.</span></p>
<h3><b><span data-contrast="auto">5. Continuous Close Capabilities</span></b></h3>
<p><span data-contrast="auto">With AI, the concept of a continuous close becomes more feasible. Instead of waiting until month-end to reconcile and report, AI tools can process and analyze data in real time throughout the month. This creates a faster, more agile accounting and finance function with more timely insights.</span><span data-ccp-props="{}"> </span></p>
<h4><b><span data-contrast="auto">Final Thoughts</span></b><span data-ccp-props="{}"> </span></h4>
<p><span data-contrast="auto">AI doesn’t replace accounting or finance professionals—it empowers them. While this may sound cliché, AI provides a starting point and developed approach that can be reviewed and completed by the human team.  By automating routine tasks and providing smarter insights, AI allows accounting and finance teams to focus on strategic activities, reduce errors, and close the books faster. For organizations looking to modernize their finance operations, investing in AI-driven close solutions is no longer a futuristic idea—it’s becoming a competitive necessity.</span><span data-ccp-props="{}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/how-ai-is-transforming-the-monthly-financial-close-process/">How AI is Transforming the Monthly Financial Close Process</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/iStock-664584874-1-1-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392380</post-id>	</item>
		<item>
		<title>Perficient Achieves Databricks Brickbuilder Recognition Across the Full Platform</title>
		<link>https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 18:54:17 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391072</guid>

					<description><![CDATA[<p>Perficient has earned four Databricks Brickbuilder Specializations, achieving recognition across the full suite of Databricks product specializations. This confirms what our clients experience every day:&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/">Perficient Achieves Databricks Brickbuilder Recognition Across the Full Platform</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="none">Perficient has earned four Databricks Brickbuilder Specializations, achieving recognition across the full suite of Databricks product specializations. This confirms what our clients experience every day: we bring the technical depth, industry insight, and measurable outcomes needed to advance data and AI initiatives in regulated, high-stakes environments.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"><br />
</span></p>
<h2 style="text-align: left"><b><span data-contrast="none">Brickbuilder Specialization: Lakeflow</span></b></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="392358" data-permalink="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/2026-partner-program-badge-brickbuilder-specialization-lakeflow/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-lakeflow.png" data-orig-size="468,658" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="2026 Partner Program Badge Brickbuilder Specialization Lakeflow" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-lakeflow.png" class="size-medium wp-image-392358 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-lakeflow-213x300.png" alt="2026 Partner Program Badge Brickbuilder Specialization Lakeflow" width="213" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-lakeflow-213x300.png 213w, https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-lakeflow.png 468w" sizes="auto, (max-width: 213px) 100vw, 213px" /></p>
<div>
<p>Data pipelines are no longer just back-end infrastructure. They&#8217;re the engine that powers analytics, AI, and business decision-making. Yet many organizations struggle with fragmented data ingestion processes, unreliable pipelines, and manual workflows that create bottlenecks, increase costs, and slow innovation.</p>
<p>Perficient&#8217;s Databricks Lakeflow Specialization recognizes our expertise in helping organizations streamline data engineering, automate pipelines, and accelerate AI-ready data delivery on the Databricks Data Intelligence Platform. By leveraging Lakeflow&#8217;s unified capabilities for ingestion, transformation, orchestration, and monitoring, along with Perficient&#8217;s Assetflow accelerators and implementation frameworks, we help enterprises build reliable, scalable data operations that move at the speed of business. This approach reduces deployment complexity, accelerates pipeline modernization, and helps organizations establish trusted data products faster.</p>
<p><strong>We empower enterprises to:</strong></p>
<ul>
<li>Automate data ingestion and pipeline orchestration across batch and streaming workloads from a single platform</li>
<li>Reduce operational complexity with declarative ETL and simplified pipeline management</li>
<li>Improve data reliability through built-in monitoring, observability, and automated quality controls</li>
<li>Accelerate delivery of analytics and AI initiatives with trusted, ready-to-use data products</li>
<li>Scale data operations efficiently while reducing engineering overhead and manual intervention</li>
<li>Enable real-time insights and business responsiveness with continuously updated data pipelines</li>
</ul>
<p>We deliver modern data operations that turn raw data into business value faster, more reliably, and at scale.</p>
</div>
<h2 style="text-align: left"><b><span data-contrast="none">Brickbuilder Specialization: Security &amp; Governance</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:312}"> </span></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="391289" data-permalink="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/2026-partner-program-badge-brickbuilder-specialization-security-governance/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-security-governance.png" data-orig-size="468,658" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2026 Partner Program Badge Brickbuilder Specialization Security Governance" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-security-governance.png" class="alignnone size-medium wp-image-391289 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-security-governance-213x300.png" alt="2026 Partner Program Badge Brickbuilder Specialization Security Governance" width="213" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-security-governance-213x300.png 213w, https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-security-governance.png 468w" sizes="auto, (max-width: 213px) 100vw, 213px" /></p>
<p><span data-contrast="none">Data governance isn&#8217;t a compliance checkbox. It&#8217;s the foundation that determines whether your organization can scale AI, maintain trust, and operate across regulatory boundaries without breaking. Most enterprises run scattered governance models that fragment security, slow analytics, and block AI adoption before it starts.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">Perficient&#8217;s Databricks Brickbuilder Specialization for Security &amp; Governance recognizes our deep expertise in helping organizations confidently secure, govern, and scale their data and AI on the Databricks Data Intelligence Platform. With Unity Catalog at the center, we build governance frameworks that enable security without sacrificing speed.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><b><span data-contrast="none">We empower enterprises to:</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Establish unified, enterprise-grade governance frameworks across data, analytics, and AI workloads</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Strengthen security with fine-grained access controls and automated data lineage tracking</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Improve data quality, trust, and discoverability with consistent governance patterns across domains</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Enable secure, seamless data sharing across clouds and partners with Delta Sharing</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}">Empower business teams with AI-driven insights through AI/BI Genie, governed analytics experiences, and Perficient&#8217;s AI/BI Genie workshop designed to help organizations identify high-value use cases and accelerate adoption</span></span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Monitor and optimize platform health, performance, and cost with native Lakehouse Observability</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
</ul>
<p><span data-contrast="none">We deliver governance that scales with your business — not against it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<h2 style="text-align: left"><b><span data-contrast="none">Brickbuilder Specialization: Data Warehouse Migration</span></b></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="391288" data-permalink="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations.png" data-orig-size="468,658" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2026 Partner Program Badge Brickbuilder Specialization Data Warehouse Migrations" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations.png" class="alignnone size-medium wp-image-391288 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations-213x300.png" alt="2026 Partner Program Badge Brickbuilder Specialization Data Warehouse Migrations" width="213" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations-213x300.png 213w, https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-data-warehouse-migrations.png 468w" sizes="auto, (max-width: 213px) 100vw, 213px" /></p>
<p><span data-contrast="none">Legacy data warehouses trap data in silos, slow modernization efforts, and break when you try to scale. Most migration approaches either lift-and-shift technical debt into the cloud or drag timelines into multi-year efforts that never fully deliver. Neither model works.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">Perficient&#8217;s Databricks Brickbuilder Specialization for Data Warehouse Migrations recognizes our proven expertise in modernizing legacy data warehouses and migrating organizations to the Databricks Data Intelligence Platform. </span>Through our Agentic Migration Factory, agent-assisted migration methodology, and specialized automation frameworks, we transform migration from a risk-heavy project into a repeatable, accelerated path to modern lakehouse architectures. Our approach combines AI-powered assessment, code conversion, validation, and optimization to reduce effort while improving migration quality and speed.</p>
<p><b><span data-contrast="none">We empower enterprises to:</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">Migrate from legacy systems and cloud warehouses to modern lakehouse architectures that unify analytics and AI</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">Accelerate migration timelines and reduce costs using pre-built code and automated tools</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">Leverage Unity Catalog and Databricks SQL for unified analytics, AI workloads, and improved performance</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">Move beyond &#8220;lift and shift&#8221; to true data modernization with enhanced reliability and cost-efficiency</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">De-risk complex migrations with repeatable frameworks that reduce manual effort and technical complexity</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="7" data-aria-level="1">Leverage Perficient&#8217;s Agentic Migration Factory, proprietary IP, and automation accelerators to streamline assessment, conversion, validation, and modernization</li>
</ul>
<p><span data-contrast="none">We deliver migrations that modernize your data infrastructure — transforming legacy constraints into competitive advantages with speed, precision, and proven methodology.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<h2 style="text-align: left"><b><span data-contrast="none">Brickbuilder Specialization: AI</span></b></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="391290" data-permalink="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/2026-partner-program-badge-brickbuilder-specialization-ai/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-ai.png" data-orig-size="468,658" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2026 Partner Program Badge Brickbuilder Specialization Ai" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-ai.png" class="alignnone size-medium wp-image-391290 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-ai-213x300.png" alt="2026 Partner Program Badge Brickbuilder Specialization Ai" width="213" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-ai-213x300.png 213w, https://blogs.perficient.com/wp-content/uploads/2026/04/2026-partner-program-badge-brickbuilder-specialization-ai.png 468w" sizes="auto, (max-width: 213px) 100vw, 213px" /></p>
<p><span data-contrast="none">Most AI initiatives stall in pilot mode. The challenge isn&#8217;t model sophistication — it&#8217;s building AI systems that perform reliably in production, govern effectively, and scale across the enterprise. Fragmented tools, incomplete data foundations, and unclear operationalization paths keep AI stuck in experimentation.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">Perficient&#8217;s Databricks Brickbuilder Specialization for AI recognizes our deep expertise in deploying Generative AI, machine learning, and agentic solutions on the Databricks Data Intelligence Platform. </span>Using Databricks, we move from AI experimentation to operationalized AI outcomes with proven accelerators designed for enterprise complexity, including Perficient&#8217;s AI Studio and AI AMP frameworks that help organizations rapidly design, deploy, govern, and scale AI solutions.</p>
<p><b><span data-contrast="none">With Brickbuilder Accelerators and specialized frameworks, we empower enterprises to:</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">Build production-grade AI agents with a focus on creation, evaluation, governance, and deployment</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">Accelerate time to value with pre-built code and industry-specific AI solutions</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">Enrich models tailored to unique datasets for summarization, classification, and beyond</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">Deploy AI-driven analytics for healthcare, life sciences, financial services, and retail sectors</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
<li value="6">Accelerate AI development and governance with Perficient AI Studio and reusable enterprise AI frameworks</li>
<li value="7">Move from AI strategy to implementation with <a href="https://www.perficient.com/AI-First-Solutions/AI/AI-AMP">AI AMP</a> workshops designed to identify, prioritize, and operationalize high-value AI opportunities</li>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">Scale Generative AI and machine learning initiatives with confidence on trusted data foundations</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:80,&quot;335559739&quot;:80,&quot;335559740&quot;:384}"> </span></li>
</ul>
<p><span data-contrast="none">We deliver AI that moves beyond experimentation — transforming AI potential into measurable business impact with speed, precision, and industry expertise.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<h2><b><span data-contrast="none">What Brickbuilder Specializations Mean</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:312}"> </span></h2>
<p><span data-contrast="none">Databricks Brickbuilder Specializations validate more than technical capability. They confirm proven delivery, measurable outcomes, and deep expertise in the domains that determine whether data and AI initiatives succeed at scale.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">Our specializations reflect what we deliver every day: security and governance frameworks that enable scale without breaking compliance, migration expertise that modernizes legacy systems without multi-year timelines, and AI capabilities that move from pilots to production. </span>These specializations are further strengthened by Perficient&#8217;s proprietary accelerators, including Assetflow, AI/BI Genie Workshops, Agentic Migration Factory, AI Studio, and AI AMP, which help clients reduce risk, accelerate delivery, and achieve measurable business outcomes faster.</p>
<p><span data-contrast="none">These aren&#8217;t credentials we pursued for marketing. They&#8217;re recognition of the work we&#8217;ve already delivered — and validation of the outcomes our clients rely on.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<h2><b><span data-contrast="none">Building on a Foundation of Proven Expertise</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:312}"> </span></h2>
<p><span data-contrast="none">As a Databricks Gold Partner with over 200 certified professionals, 6 Databricks Champions, and now 4 Databricks specializations, Perficient delivers unified data, analytics, and AI systems that perform under operational pressure.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">We don&#8217;t chase certifications. We pursue outcomes — solutions that hold up in production, scale with your business, and deliver measurable results on the Databricks Data Intelligence Platform.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><span data-contrast="none">Ready to transform your data and AI from potential to production?</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p><a href="https://www.perficient.com/partners/databricks"><span data-contrast="none">Learn more about our Databricks capabilities</span></a><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:180,&quot;335559739&quot;:180,&quot;335559740&quot;:384}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/perficient-achieves-databricks-brickbuilder-specializations/">Perficient Achieves Databricks Brickbuilder Recognition Across the Full Platform</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/02/2026_prft_blog_1400x931_Databricks-1024x681.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391072</post-id>	</item>
		<item>
		<title>How to Test a RAG System: RAGAS, Hallucination Detection, and the Complete GenAI CI/CD Pipeline</title>
		<link>https://blogs.perficient.com/how-to-test-a-rag-system-ragas-hallucination-detection-and-the-complete-genai-ci-cd-pipeline/</link>
		
		<dc:creator><![CDATA[Venkata Sreeram Murthy Gonella]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 17:34:50 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392365</guid>

					<description><![CDATA[<p>Series: Enterprise GenAI &#38; RAG Architecture — Part 5 of 5  Why Testing a RAG System is Different Testing a traditional API is straightforward: given input&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/how-to-test-a-rag-system-ragas-hallucination-detection-and-the-complete-genai-ci-cd-pipeline/">How to Test a RAG System: RAGAS, Hallucination Detection, and the Complete GenAI CI/CD Pipeline</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0"><strong>Series</strong>: </span></span><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0">Enterprise GenAI &amp; RAG Architecture — Part 5 of 5</span></span><span class="EOP Selected SCXW192786497 BCX0" data-ccp-props="{&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></em></p>
<h2><strong>Why Testing a RAG System is Different</strong></h2>
<p>Testing a traditional API is straightforward: given input X, expect output Y. Testing a RAG system is categorically different. You are simultaneously validating:</p>
<ul>
<li>Data quality — are the right documents ingested correctly?</li>
<li>Chunking quality — are chunks meaningful and complete?</li>
<li>Embedding quality — do similar topics score highly together?</li>
<li>Retrieval accuracy — are the most relevant chunks returned?</li>
<li>LLM output quality — is the answer grounded, accurate, and complete?</li>
<li>Security — is the system resistant to prompt injection and PII leakage?</li>
</ul>
<p>Each layer can fail independently. A perfect LLM with bad retrieval still produces bad answers. This is why RAG testing requires a layered, systematic approach.</p>
<blockquote><p><strong>The most expensive RAG failure is silent degradation — retrieval quality slowly drifts as documents change, and nobody notices until users stop trusting the system.</strong></p></blockquote>
<h2><strong>The RAG Testing Pyramid — 4 Layers</strong></h2>
<p>Borrow the concept of the traditional test pyramid and apply it to RAG. Build from the foundation up:</p>
<table width="100%">
<thead>
<tr>
<td><strong>Layer</strong></td>
<td><strong>What is Tested</strong></td>
<td><strong>Tools</strong></td>
<td><strong>Runs In Pipeline</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Layer 1 — Data Testing (Foundation)</td>
<td>Missing docs, duplicates, empty chunks, bad metadata</td>
<td>PyTest, Great Expectations</td>
<td>Every commit</td>
</tr>
<tr>
<td>Layer 2 — Embedding Testing</td>
<td>Correct dimensions, similarity scores, semantic coherence</td>
<td>Python, DeepEval</td>
<td>Every commit</td>
</tr>
<tr>
<td>Layer 3 — Retrieval Testing</td>
<td>Top-K precision, context recall, relevant chunks returned</td>
<td>RAGAS</td>
<td>Every commit</td>
</tr>
<tr>
<td>Layer 4 — LLM Response Testing</td>
<td>Hallucination, accuracy, completeness, answer relevance</td>
<td>RAGAS, DeepEval, PromptFoo</td>
<td>Every commit</td>
</tr>
</tbody>
</table>
<h2><strong>Layer 1: Data Quality Testing</strong></h2>
<p>This is the cheapest, fastest layer — and the most overlooked. Bad data causes silent failures downstream.</p>
<ul>
<li>Are all expected source documents present in the vector DB?</li>
<li>Are there any duplicate chunks (same content stored twice)?</li>
<li>Are any chunks empty, too short (&lt; 50 tokens), or garbled text?</li>
<li>Is metadata complete — source filename, page number, and ingestion date?</li>
</ul>
<pre>def test_no_empty_chunks(chunks):
    for chunk in chunks:
        assert len(chunk.text.strip()) &gt; 50, f'Empty chunk: {chunk.id}'
        assert chunk.metadata['source'] is not None

def test_no_duplicate_chunks(chunks):
    texts = [c.text for c in chunks]
    assert len(texts) == len(set(texts)), 'Duplicate chunks detected'

def test_document_count(vector_db, expected_count):
    actual = vector_db.get_document_count()
    assert actual &gt;= expected_count, f'Expected {expected_count}, got {actual}'</pre>
<h2><strong>Layer 2: Embedding Quality Testing</strong></h2>
<ul>
<li>Embedding generated for every chunk — no nulls or errors</li>
<li>Correct vector dimensions: 1536 (Azure), 1024 (AWS/OCI)</li>
<li>Semantically similar chunks score above 0.80 cosine similarity</li>
<li>Unrelated chunks score below 0.30 — no false positives</li>
</ul>
<pre>def test_embedding_dimensions(embedding):

    assert len(embedding) == 1536  # For Azure text-embedding-3-small

def test_semantic_similarity():

    score = cosine_similarity(

        embed('annual leave entitlement'),

        embed('how many days holiday do I get?')

    )

    assert score &gt; 0.80, f'Similarity too low: {score}'

def test_dissimilar_chunks_score_low():

    score = cosine_similarity(

        embed('leave policy'), embed('network firewall rules')

    )

    assert score &lt; 0.30, f'False similarity detected: {score}'</pre>
<h2><strong>Layer 3: Retrieval Testing with RAGAS</strong></h2>
<p>RAGAS (Retrieval Augmented Generation Assessment) is the industry-standard framework for evaluating RAG systems. It provides metric-driven, reproducible evaluation across your entire pipeline.</p>
<h4><strong>Context Precision — &#8216;Is what we retrieved actually relevant?&#8217;</strong></h4>
<p>Measures the proportion of retrieved chunks that are genuinely relevant to the question.</p>
<pre># Example calculation:
# Retrieved 5 chunks for: 'What is the expense claim limit?'
# Relevant: chunks 1, 3, 4  (about expenses)
# Irrelevant: chunks 2, 5  (about leave policy, office hours)
# Context Precision = 3/5 = 0.60  --&gt;  FAIL (threshold: 0.80)</pre>
<h4><strong>Context Recall — &#8216;Did we retrieve everything needed?&#8217;</strong></h4>
<pre>Measures whether all facts required to answer correctly were present in the retrieved context.

# Example calculation:
# Ground truth answer requires 4 key facts
# Retrieved context contains 3 of those facts
# Context Recall = 3/4 = 0.75  --&gt;  PASS (threshold: 0.75)

from ragas import evaluate

from ragas.metrics import context_precision, context_recall

results = evaluate(
    dataset=test_dataset,  # questions + ground truths + retrieved contexts
    metrics=[context_precision, context_recall]
)

assert results['context_precision'] &gt;= 0.80, 'Precision below threshold'
assert results['context_recall']    &gt;= 0.75, 'Recall below threshold'
print(f"Precision: {results['context_precision']:.2f}")
print(f"Recall:    {results['context_recall']:.2f}")

</pre>
<h2><strong>Layer 4: LLM Response Testing — Hallucination Detection</strong></h2>
<h3><strong>The Four Response Quality Metrics</strong></h3>
<table width="100%">
<thead>
<tr>
<td><strong>Metric</strong></td>
<td><strong>Definition</strong></td>
<td><strong>Minimum Threshold</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Faithfulness</td>
<td>Is the answer grounded ONLY in the retrieved context? This is your hallucination score.</td>
<td>≥ 0.85</td>
</tr>
<tr>
<td>Answer Relevance</td>
<td>Does the generated answer actually address what the user asked?</td>
<td>≥ 0.80</td>
</tr>
<tr>
<td>Accuracy</td>
<td>Does the answer match known ground truth answers in your golden dataset?</td>
<td>Domain-specific</td>
</tr>
<tr>
<td>Completeness</td>
<td>Does the answer cover all the key facts needed to fully address the question?</td>
<td>≥ 0.75</td>
</tr>
</tbody>
</table>
<h3><strong>Hallucination in Detail</strong></h3>
<p>Faithfulness measures whether every claim in the LLM&#8217;s answer can be traced back to the retrieved context. A claim that cannot be traced is a hallucination.</p>
<pre># Context says: 'Employees are entitled to 20 days annual leave per year'
#
# BAD answer: 'Employees get 25 days plus 5 bonus days for performance'
# --&gt; '25 days' and 'bonus days' are NOT in context
# --&gt; Faithfulness = 0.0  --&gt;  HALLUCINATION  --&gt;  FAIL
#
# GOOD answer: 'According to company policy, employees receive 20 days annual leave'
# --&gt; Every claim traces back to the context
# --&gt; Faithfulness = 1.0  --&gt;  PASS</pre>
<p>Additional hallucination detection tools:</p>
<ul>
<li>DeepEval HallucinationMetric — standalone hallucination scorer with explanation</li>
<li>PromptFoo — test known Q&amp;A pairs, flag when answers deviate from expected output</li>
<li>LangSmith — full chain tracing to see exactly what context was passed and what was generated</li>
</ul>
<h2><strong>The Complete Enterprise CI/CD Pipeline</strong></h2>
<p>Every RAG system change — whether code, documents, or configuration — must go through this automated quality gate before reaching production.</p>
<table width="100%">
<thead>
<tr>
<td><strong>Pipeline Stage</strong></td>
<td><strong>Actions</strong></td>
<td><strong>Blocking on Failure?</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Planning</td>
<td>Jira / ADO ticket created, developer assigned</td>
<td>N/A</td>
</tr>
<tr>
<td>Development</td>
<td>Code pushed to Git, PR created</td>
<td>N/A</td>
</tr>
<tr>
<td>Stage 1: Unit Tests</td>
<td>PyTest — chunking, extractors, prompt templates</td>
<td>Yes — blocks immediately</td>
</tr>
<tr>
<td>Stage 2: Integration Tests</td>
<td>API health, vector DB connection, embedding API</td>
<td>Yes</td>
</tr>
<tr>
<td>Stage 3: Document Ingestion</td>
<td>Full ingestion run on test document set</td>
<td>Yes</td>
</tr>
<tr>
<td>Stage 4: Vector DB Validation</td>
<td>Chunk count, metadata integrity, sample queries</td>
<td>Yes</td>
</tr>
<tr>
<td>Stage 5: RAGAS Evaluation</td>
<td>All 4 RAGAS metrics against thresholds</td>
<td>Yes — quality gate</td>
</tr>
<tr>
<td>Stage 6: Prompt Regression</td>
<td>50+ golden Q&amp;A pairs via PromptFoo/DeepEval</td>
<td>Yes</td>
</tr>
<tr>
<td>Stage 7: Security Tests</td>
<td>OWASP LLM Top 10 — injection, PII, access control</td>
<td>Yes — critical findings block</td>
</tr>
<tr>
<td>Deployment</td>
<td>Blue/Green or Canary to staging then production</td>
<td>Smoke tests block</td>
</tr>
<tr>
<td>Production Monitoring</td>
<td>Continuous RAGAS scoring, latency, user feedback</td>
<td>Alerts trigger re-evaluation</td>
</tr>
</tbody>
</table>
<blockquote><p><strong>The most important insight: RAGAS evaluation is NOT just a one-time quality check. Run it continuously in production. Retrieval quality drifts as your document base evolves.</strong></p></blockquote>
<h2><strong>QA Automation Framework — The Complete Stack</strong></h2>
<p>As a QA Lead or SDET on a RAG project, this is your complete toolbox:</p>
<table width="100%">
<thead>
<tr>
<td><strong>Check Type</strong></td>
<td><strong>Tool</strong></td>
<td><strong>What is Validated</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> API Testing</td>
<td>PyTest + Requests</td>
<td>REST endpoints, response codes, latency SLA</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Vector DB Validation</td>
<td>PyTest</td>
<td>Chunk count, metadata integrity, index health</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Retrieval Accuracy</td>
<td>RAGAS</td>
<td>Context Precision ≥ 0.80, Context Recall ≥ 0.75</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hallucination Detection</td>
<td>DeepEval / RAGAS Faithfulness</td>
<td>Faithfulness ≥ 0.85</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prompt Regression</td>
<td>PromptFoo</td>
<td>Golden Q&amp;A dataset — no degradation vs baseline</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LLM Tracing</td>
<td>LangSmith</td>
<td>Full chain traces, latency profiling, error diagnosis</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Performance Testing</td>
<td>Locust / k6</td>
<td>Embedding API P95, vector search P95, LLM P95 ≤ 3s</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Security Testing</td>
<td>Custom + OWASP</td>
<td>Prompt injection, PII leakage, OWASP LLM Top 10</td>
</tr>
<tr>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> UI / E2E Testing</td>
<td>Playwright</td>
<td>Chat interface, user workflows, accessibility (WCAG)</td>
</tr>
</tbody>
</table>
<h3><strong>Recommended Test Folder Structure</strong></h3>
<pre>tests/
├── data/
│   ├── test_ingestion.py        # All source docs ingested
│   ├── test_chunking.py         # No empty or duplicate chunks
│   └── test_metadata.py         # Source, page, date correct
├── embeddings/
│   ├── test_embedding_dim.py    # Vector shape correct
│   └── test_similarity.py       # Semantic similarity scores
├── retrieval/
│   ├── test_ragas_precision.py  # Context Precision &gt;= 0.80
│   └── test_ragas_recall.py     # Context Recall &gt;= 0.75
├── llm/
│   ├── test_faithfulness.py     # Hallucination detection
│   ├── test_relevance.py        # Answer relevance
│   └── test_promptfoo.py        # Golden Q&amp;A regression
└── security/
    ├── test_prompt_injection.py  # Injection blocked
    └── test_pii_leakage.py       # No PII in responses</pre>
<h2><strong>Series Summary — 9 Principles to Remember</strong></h2>
<ol>
<li><strong> RAG is the enterprise standard. </strong>Private data + LLM = grounded, accurate answers. No retraining needed.</li>
<li><strong> Every pipeline stage needs testing. </strong>Ingest → Chunk → Embed → Store → Retrieve → Generate — each can fail independently.</li>
<li><strong> Chunking quality determines retrieval quality. </strong>512 tokens + 10% overlap is your safe default. Invest time tuning this.</li>
<li><strong> Never switch embedding models without re-indexing. </strong>It will silently break your entire retrieval layer.</li>
<li><strong> RAGAS is non-negotiable. </strong>Context Precision + Recall measure retrieval. Faithfulness + Relevance measure LLM output.</li>
<li><strong> CI/CD for RAG is mandatory. </strong>Every document change can silently break retrieval. Automate your quality gate.</li>
<li><strong> Choose cloud by ecosystem. </strong>Microsoft shop → Azure. Multi-model → AWS. Oracle DB customers → OCI.</li>
<li><strong> Security testing for LLMs is different. </strong>OWASP LLM Top 10 is your checklist. Prompt injection is your highest risk.</li>
<li><strong> Monitoring never stops. </strong>Set up continuous RAGAS evaluation in production. Drift is silent and inevitable.</li>
</ol>
<p><strong>References</strong></p>
<ul>
<li>RAGAS — <a href="https://docs.ragas.io" target="_blank" rel="noopener">https://docs.ragas.io</a></li>
<li>DeepEval — <a href="https://docs.confident-ai.com" target="_blank" rel="noopener">https://docs.confident-ai.com</a></li>
<li>PromptFoo — <a href="https://promptfoo.dev" target="_blank" rel="noopener">https://promptfoo.dev</a></li>
<li>LangSmith — <a href="https://smith.langchain.com" target="_blank" rel="noopener">https://smith.langchain.com</a></li>
<li>Azure AI Search — <a href="https://learn.microsoft.com/en-us/azure/search/" target="_blank" rel="noopener">https://learn.microsoft.com/en-us/azure/search/</a></li>
<li>AWS Bedrock — <a href="https://docs.aws.amazon.com/bedrock" target="_blank" rel="noopener">https://docs.aws.amazon.com/bedrock</a></li>
<li>Oracle AI Vector Search — <a href="https://docs.oracle.com/en/database/oracle/oracle-database/23/vecse/" target="_blank" rel="noopener">https://docs.oracle.com/en/database/oracle/oracle-database/23/vecse/</a></li>
<li>OWASP LLM Top 10 — <a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/" target="_blank" rel="noopener">https://owasp.org/www-project-top-10-for-large-language-model-applications/</a></li>
</ul>
<p>The post <a href="https://blogs.perficient.com/how-to-test-a-rag-system-ragas-hallucination-detection-and-the-complete-genai-ci-cd-pipeline/">How to Test a RAG System: RAGAS, Hallucination Detection, and the Complete GenAI CI/CD Pipeline</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/09/iStock-840579474-1-1-1024x684.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392365</post-id>	</item>
		<item>
		<title>Snowflake Horizon Catalog: Transforming Metadata Into Business Context for the AI Era</title>
		<link>https://blogs.perficient.com/snowflake-horizon-catalog-transforming-metadata-into-business-context-for-the-ai-era/</link>
		
		<dc:creator><![CDATA[Vivek Nigam]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 18:42:01 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392356</guid>

					<description><![CDATA[<p>As organizations accelerate their AI and analytics initiatives, many are discovering that success depends on more than just having access to data. It requires trusted&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/snowflake-horizon-catalog-transforming-metadata-into-business-context-for-the-ai-era/">Snowflake Horizon Catalog: Transforming Metadata Into Business Context for the AI Era</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">As organizations accelerate their AI and analytics initiatives, many are discovering that success depends on more than just having access to data. It requires trusted context.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">While enterprises have invested heavily in modern data platforms, data governance, and cloud infrastructure, many still struggle to answer fundamental questions: What does this data mean? Where did it come from? Can it be trusted? And how should AI systems interpret it?</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Snowflake Horizon Catalog is designed to help solve these challenges. By transforming metadata into an active layer of business intelligence, Horizon Catalog helps organizations improve data discovery, governance, analytics adoption, and AI readiness.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Currently in private preview, Horizon Catalog represents Snowflake&#8217;s vision for creating a unified understanding of enterprise data across people, applications, analytics tools, and AI agents.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="auto">Why Metadata Matters More Than Ever</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">As data ecosystems continue to grow, enterprises often face a common challenge: critical business knowledge is scattered across databases, dashboards, data pipelines, and cloud platforms.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">This fragmentation creates obstacles for both human users and AI systems:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Data teams spend excessive time answering questions about data definitions and lineage.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Business users struggle to find trusted data assets.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Governance teams lack complete visibility into how information moves through the organization.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">AI applications risk generating inaccurate outputs when business context is unclear.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><span data-contrast="auto">Snowflake Horizon Catalog addresses these challenges by creating a centralized intelligence layer that collects, enriches, and activates metadata across the enterprise.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Rather than functioning as a passive inventory of assets, Horizon Catalog helps organizations create a living, governed representation of their data ecosystem.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="auto">Horizon Catalog&#8217;s Three-Stage Approach</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">At its core, Horizon Catalog follows a three-stage architecture designed to transform raw metadata into actionable business context:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Collect → Enrich → Activate</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">This framework enables organizations to move beyond simply documenting data and toward making it truly understandable and usable across analytics and AI workloads.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Stage 1: Collect Metadata Across the Enterprise</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">The first step is collecting metadata from across the modern data landscape.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Organizations today operate across numerous systems, including cloud storage platforms, SaaS applications, databases, business intelligence tools, and transformation frameworks. Without a unified approach to metadata collection, visibility becomes fragmented and governance becomes increasingly difficult.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Horizon Catalog connects to a broad ecosystem of technologies, including:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Data Lakes and Cloud Storage</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">AWS S3</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Azure Data Lake Storage</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Google Cloud Storage</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Iceberg, Delta, and Parquet-based environments</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><b><span data-contrast="auto">Enterprise Applications</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">SAP</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Salesforce</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Workday</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><b><span data-contrast="auto">Databases</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">PostgreSQL</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">SQL Server</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Oracle</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">MySQL</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Amazon Redshift</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><b><span data-contrast="auto">Analytics and Data Integration Tools</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Tableau</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Power BI</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">dbt</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Fivetran</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Sigma</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><span data-contrast="auto">By bringing metadata into a centralized framework, organizations gain a consistent view of data assets regardless of where they reside.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">For enterprise leaders pursuing AI initiatives, this unified visibility becomes increasingly important as data sources continue to multiply.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Stage 2: Enrich Metadata With Business and Technical Intelligence</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Collecting metadata is only the beginning.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">To make data useful at scale, organizations need additional context that helps explain how information is structured, governed, consumed, and connected.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Horizon Catalog enriches metadata across six key dimensions:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Schema Intelligence</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Schema enrichment captures structural details such as column types, relationships, and dependencies, providing foundational understanding of data assets.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Lineage Visibility</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Cross-platform, column-level lineage helps teams understand how data moves from source systems through transformations and ultimately into dashboards, reports, and applications.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">This visibility supports governance, troubleshooting, compliance, and impact analysis efforts across the organization.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">AI-Generated Descriptions</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Natural language descriptions help make technical assets easier to understand for both business and technical stakeholders.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">This capability can significantly improve self-service adoption by reducing reliance on tribal knowledge.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Tags and Classifications</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Business and technical metadata can be categorized using governance tags and classifications, helping organizations improve discovery, compliance, and policy enforcement.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Popularity and Usage Insights</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Understanding how datasets are used provides valuable context around adoption, trust, and business value.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Usage signals help teams identify high-value assets and prioritize governance efforts accordingly.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Semantic Views</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Semantic views create business-friendly abstractions on top of physical data structures.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">By establishing shared business definitions, organizations can reduce reporting inconsistencies and improve alignment across analytics initiatives.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Stage 3: Activate Context Across Analytics and AI</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">The true value of Horizon Catalog emerges when enriched metadata is activated across the organization.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Many traditional catalogs stop at documentation. Horizon Catalog extends beyond that model by making context available directly within analytics workflows and AI-powered experiences.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">This activation layer is enabled through Horizon Context, which helps ensure that data consumers and AI systems have access to trusted enterprise knowledge when making decisions.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Potential downstream applications include:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Snowflake CoCo</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Snowflake CoWork</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Cortex Agents</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Business intelligence platforms</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Custom applications and experiences</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><span data-contrast="auto">As enterprises move toward AI-assisted decision-making, the ability to ground AI interactions in governed business context becomes increasingly critical.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Organizations that can provide consistent definitions, lineage, and governance information to AI models will be better positioned to generate reliable outcomes while maintaining trust in AI-generated insights.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="auto">Horizon Context: The Foundation for Enterprise AI</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">One of the most significant aspects of Horizon Catalog is Horizon Context, which serves as an active context layer for analytics and AI solutions.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Key capabilities include:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Level-of-Detail Expressions</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Organizations can define metrics at multiple levels of granularity without creating redundant data structures.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Composable Semantics</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Reusable semantic components allow teams to build business logic efficiently while maintaining consistency across reporting and analytics experiences.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">User-Defined Materializations</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Performance optimization techniques allow expensive calculations to be cached while maintaining freshness requirements.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Semantic Studio</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">A visual workspace enables teams to build, manage, and govern semantic views across the organization.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Semantic View Autopilot</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">AI-assisted tools help accelerate semantic model development by generating business context directly from table structures.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Together, these capabilities help bridge the longstanding gap between technical data models and business understanding.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Improving Data Discovery Through Intelligent Search</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Finding the right data remains one of the most persistent challenges facing modern organizations.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Horizon Catalog addresses this challenge through a hybrid search approach that combines multiple discovery mechanisms:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Keyword Search</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Traditional search capabilities support users who know exactly what they are looking for.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Semantic Search</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Vector-based search enables discovery based on meaning rather than exact terminology, helping users uncover related assets they may not have known existed.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">Intelligent Re-Ranking</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Machine learning-powered relevance scoring evaluates factors such as user context, popularity, and asset freshness to surface the most useful results.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">For organizations seeking to increase self-service analytics adoption, improved discoverability can significantly reduce the time required to locate trusted data assets.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="auto">Expanding Metadata Intelligence Through Select Star</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">Snowflake&#8217;s partnership with Select Star highlights a growing enterprise need for metadata management that extends beyond a single platform.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">The collaboration introduces capabilities such as:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Unified metadata visibility across multiple technologies</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Cross-platform lineage tracking</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Column-level impact analysis</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Enhanced user experiences for both business and technical users</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Integration with Snowflake AI workflows</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><span data-contrast="auto">As organizations continue adopting multi-platform architectures, the ability to establish consistent governance and visibility across ecosystems becomes increasingly important.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><b><span data-contrast="auto">What This Means for Enterprise Data Leaders</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">From a strategic perspective, Horizon Catalog represents more than another data governance tool.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">It reflects a broader shift in how organizations think about metadata.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Historically, metadata was viewed primarily as documentation. Today, metadata is becoming a foundational asset for AI readiness, business intelligence, data governance, and self-service analytics.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">Organizations that can effectively collect, govern, and activate metadata will be better positioned to:</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Scale AI initiatives with confidence</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Improve data quality and trust</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Accelerate analytics adoption</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Strengthen governance and compliance efforts</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Reduce time spent searching for and validating data</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">Create consistent business definitions across teams</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></li>
</ul>
<h2><b><span data-contrast="auto">Perficient&#8217;s Perspective</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">At Perficient, we see Horizon Catalog as an important evolution in the enterprise data management landscape.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">As organizations invest in generative AI, data products, and modern analytics platforms, trusted context becomes just as important as the data itself. Business leaders need confidence that AI systems are grounded in governed, accurate, and explainable information.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span><span data-contrast="auto">Snowflake Horizon Catalog helps address this challenge by turning metadata into an active intelligence layer that supports both human decision-making and AI-powered experiences.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">For organizations pursuing enterprise-scale AI, this shift from passive governance to active context management may become a critical component of building a trusted, scalable data foundation.</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="auto">Ready to Build an AI-Ready Data Foundation?</span></b><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">Perficient helps organizations maximize their Snowflake investments through modern data architecture, governance, analytics, and AI strategy services. Whether you&#8217;re exploring Horizon Catalog, strengthening your data governance framework, or scaling enterprise AI initiatives, our experts can help you create the trusted data foundation needed to drive measurable business outcomes. </span><a href="https://www.perficient.com/partners/snowflake"><span data-contrast="none">Learn more about Perficient’s Snowflake practice.</span></a><span data-contrast="auto"> </span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:2,&quot;335559740&quot;:300}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/snowflake-horizon-catalog-transforming-metadata-into-business-context-for-the-ai-era/">Snowflake Horizon Catalog: Transforming Metadata Into Business Context for the AI Era</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/Copy-of-Emma_S_Snowflake_Premier-1.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">392356</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin


Served from: blogs.perficient.com @ 2026-09-29 18:35:12 by W3 Total Cache
-->