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

<channel>
	<title>Microsoft Community at Perficient, Inc.</title>
	<atom:link href="https://blogs.perficient.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://blogs.perficient.com/</link>
	<description>Perficient is one of only 40 Microsoft National Systems Integrators. We are a national IT consulting firm serving the world's most successful and innovative companies.</description>
	<lastBuildDate>Thu, 18 Jun 2026 20:36:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</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>Exploring Lakehouse//RT and Reyden: Can Databricks Handle FHIR Data at Scale?</title>
		<link>https://blogs.perficient.com/exploring-lakehouse-rt-and-reyden-can-databricks-handle-fhir-data-at-scale/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 20:36:33 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391632</guid>

					<description><![CDATA[<p>by Nick Passero, Director AI Data &#38; Analytics, Databricks Practice Lead and Balu Muthiah, Sr. Solutions Architect, AI Data Platforms At DAIS 2026, Databricks announced Lakehouse//RT,&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/exploring-lakehouse-rt-and-reyden-can-databricks-handle-fhir-data-at-scale/">Exploring Lakehouse//RT and Reyden: Can Databricks Handle FHIR Data at Scale?</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>by Nick Passero, Director AI Data &amp; Analytics, Databricks Practice Lead and Balu Muthiah, Sr. Solutions Architect, AI Data Platforms</em></p>
<p><span data-contrast="auto">At DAIS 2026, <a href="https://www.databricks.com/product/lakehouse/real-time-lakehouse">Databricks announced Lakehouse//RT</a>, powered by Reyden, a ground-up engine rewrite and not an update to Photon. It runs against existing Delta and Iceberg tables without restructuring, requires Unity Catalog, and keeps data in open formats.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Databricks frames the value proposition around three costs of maintaining a separate serving layer: data duplication into proprietary storage, governance policies that don&#8217;t travel with the data out of Unity Catalog, and the ongoing engineering burden of owning a second pipeline.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Official performance claims include up to 16x better performance versus real-time serving layers, with response times as low as 10 milliseconds on smaller datasets and sub-100 milliseconds on larger ones.</span></p>
<h2><b><span data-contrast="auto">How We&#8217;re Using It</span></b><span data-ccp-props="{}"> </span></h2>
<p><span class="TextRun SCXW128060769 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW128060769 BCX0">A healthcare client came to us with a straightforward problem: their FHIR data was already in Databricks, and they </span><span class="NormalTextRun SCXW128060769 BCX0">didn&#8217;t</span><span class="NormalTextRun SCXW128060769 BCX0"> want another system to manage it. </span><span class="NormalTextRun SCXW128060769 BCX0">Standing up a dedicated FHIR server (HAPI, Azure FHIR API</span><span class="NormalTextRun SCXW128060769 BCX0">, Smile CDR</span><span class="NormalTextRun SCXW128060769 BCX0">) means another deployment, another copy of PHI, another governance boundary, another bill, and another </span><span class="NormalTextRun SCXW128060769 BCX0">platform </span><span class="NormalTextRun SCXW128060769 BCX0">someone </span><span class="NormalTextRun SCXW128060769 BCX0">has to</span><span class="NormalTextRun SCXW128060769 BCX0"> debug.</span><span class="NormalTextRun SCXW128060769 BCX0"> The question was whether the </span><span class="NormalTextRun SpellingErrorV2Themed SCXW128060769 BCX0">lakehouse</span><span class="NormalTextRun SCXW128060769 BCX0"> they already had could do the job.</span></span><span class="EOP Selected SCXW128060769 BCX0" data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The system follows a three-layer pattern. Bronze handles raw ingestion and is never modified; it&#8217;s the source of truth, and its immutability is what makes compliance and audit defensible. Silver holds cleaned, validated data optimized for queries. The API layer, built on FastAPI, serves FHIR REST endpoints to consuming systems. Keeping these concerns separated means ingestion, processing, and serving don&#8217;t interfere with each other, and each layer scales independently. In a healthcare setting, that clean boundary between raw and transformed data is useful well beyond performance.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">DBIgnite feeds Bronze directly, pulling from EHRs and APIs or consuming pre-staged landing zones depending on the source system.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The request flow: a FHIR client calls an endpoint → FastAPI validates and translates the FHIR parameters → the service layer generates optimized SQL → Databricks queries Bronze or Silver → results are mapped to the FHIR schema → a JSON response is returned. Each step is independently observable and testable.</span><span data-ccp-props="{}"> </span></p>
<h2><strong>What We Built </strong></h2>
<p><span data-contrast="auto">We explored storing raw FHIR resources in JSON, NDJSON, and Variant format directly in Delta tables. Unity Catalog handled governance. The problem was query performance: deeply nested FHIR JSON in a lakehouse doesn&#8217;t behave like a transactional FHIR server, and the gap on patient-specific lookups was real.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">To put numbers to it, we built a claims query system for Explanation of Benefit (EOB) records: what a patient&#8217;s plan covered, what was billed, how the claim was adjudicated. Runs on Databricks App, ingests via DBIgnite into Delta tables under Unity Catalog. Baseline performance using Databricks SQL: sub-300 milliseconds for search queries, sub-150 milliseconds for direct record retrieval. Workable, but not fast enough to feel invisible.</span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">What We Observed</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Patient-specific EOB lookups across a few billion records, each query returning 50–100 records scattered across all data files with no clean partition shortcut.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">On individual EOB lookups, DBSQL averaged approximately 550 milliseconds. Reyden on a small cluster averaged 86 milliseconds, </span><b><span data-contrast="auto">roughly 84% lower latency</span></b><span data-contrast="auto">. All seven of the seven individual EOB queries improved. Reyden&#8217;s ceiling (111 milliseconds) didn&#8217;t reach DBSQL&#8217;s floor (488 milliseconds). Scaling to a large cluster (4x the compute) produced no meaningful gain: 93 milliseconds versus 86 milliseconds, statistically indistinguishable. One collated EOB query pattern was slower on Reyden across all cluster sizes. One collated EOB query pattern was slower on Reyden across all cluster sizes. Query shape matters, and there are areas worth investigating for further optimization.</span><span data-ccp-props="{}"> </span></p>
<p><b>DBSQL vs. Reyden Execution Times</b></p>
<p>&nbsp;</p>
<table style="font-weight: 400" data-tablestyle="MsoTableGrid" data-tablelook="1184">
<tbody>
<tr>
<td data-celllook="0"><b><span data-contrast="auto">Executed Query</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="0"><b><span data-contrast="auto">DBSQL</span></b><br />
<b><span data-contrast="auto">(Baseline)</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="0"><b><span data-contrast="auto">Reyden</span></b><br />
<b><span data-contrast="auto">(Small)</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="0"><b><span data-contrast="auto">Reyden</span></b><br />
<b><span data-contrast="auto">(Medium)</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="0"><b><span data-contrast="auto">Reyden</span></b><br />
<b><span data-contrast="auto">(Large)</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · multi-cluster · demographics #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.509s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.146s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.154s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.138s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · multi-cluster · demographics #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.566s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.144s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.127s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.136s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · multi-cluster · patient_id #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.543s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.248s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.213s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.215s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · multi-cluster · patient_id #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.586s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.995s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.660s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.798s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · patient-id-cluster #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.563s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.164s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.651s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.133s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · patient-id-cluster #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.522s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.127s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.123s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.122s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Collated EOB · patient-id-cluster #3</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.564s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.118s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.130s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.145s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · multi-cluster · demographics #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.553s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.077s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.075s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.081s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · multi-cluster · demographics #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.542s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.111s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.112s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.109s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · multi-cluster · patient_id #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.547s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.077s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.078s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.073s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · multi-cluster · patient_id #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.584s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.103s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.096s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.110s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · patient-id-cluster #1</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.539s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.075s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.073s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.075s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · patient-id-cluster #2</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.607s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.094s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.097s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.111s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
<tr>
<td data-celllook="0"><span data-contrast="auto">Indv EOB · patient-id-cluster #3</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.488s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.067s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.062s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
<td data-celllook="65536"><span data-contrast="auto">0.093s</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:278}"> </span></td>
</tr>
</tbody>
</table>
<h2><b><span data-contrast="auto">Where This Leaves Us</span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">The case for consolidating FHIR services natively in Databricks is now a serious engineering conversation, not a wish list item. </span></p>
<p><span data-contrast="auto">Reyden delivered sub-100 millisecond patient-specific lookups across billions of records on a small cluster, without a separate serving layer, without a second copy of PHI, and without a second governance boundary to maintain. For healthcare teams already running on Databricks with Unity Catalog deployed, the path to retiring a third-party FHIR server or real-time serving layer is shorter than it has ever been. As Reyden moves toward general availability, we see a real opportunity to consolidate the full FHIR stack: ingestion, governance, and low-latency serving inside a single platform. We will be building on it.</span><span data-ccp-props="{}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/exploring-lakehouse-rt-and-reyden-can-databricks-handle-fhir-data-at-scale/">Exploring Lakehouse//RT and Reyden: Can Databricks Handle FHIR Data at Scale?</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/Screenshot-2026-06-18-145103.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">391632</post-id>	</item>
		<item>
		<title>Why AI Stalls for Health Plans: Turning Data Into Action</title>
		<link>https://blogs.perficient.com/why-ai-stalls-for-health-plans-turning-data-into-action/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 21:15:26 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[AI in Healthcare]]></category>
		<category><![CDATA[Databricks]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391489</guid>

					<description><![CDATA[<p>Health insurers have built real AI infrastructure. Claims data flows into unified analytics platforms. Predictive models score members for risk. Quality programs track hundreds of&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/why-ai-stalls-for-health-plans-turning-data-into-action/">Why AI Stalls for Health Plans: Turning Data Into Action</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Health insurers have built real AI infrastructure. Claims data flows into unified analytics platforms. Predictive models score members for risk. Quality programs track hundreds of clinical measures with precision. And yet the care manager still doesn’t know about the gap before the audit closes. The member still doesn’t get the call in time. The insight sat in a dashboard nobody was watching.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><span data-contrast="auto">This isn’t primarily a technology problem. It’s a distance problem — between what data knows and what care teams can act on. It’s one of the clearest themes emerging from our conversations at this year’s <a href="https://www2.perficient.com/perficient-databricks-data-ai-summit-2026">Databricks Data + AI Summit</a>.</span></p>
<h2><b><span data-contrast="none">The Industry Has Moved Past “AI Is Coming”</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}"> </span></h2>
<p><span data-contrast="auto">The conversation has already shifted. Fewer organizations are asking whether to adopt AI. More are asking why it isn’t producing outcomes yet.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><span data-contrast="auto">This week shows that experimentation has given way to engineering: correctness, explainability, operational intelligence at the point of decision. <strong>The industry is entering its control era</strong>, where trust, context, and governance separate organizations that scale from those that stall.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><span data-contrast="auto">What’s striking is where many organizations actually are. Across the industry, organizations have made significant investments in modern data platforms, but adoption is still unfolding in pockets. The gap between investment and realized value is growing. The commitment is real, but the outcomes haven’t followed.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<h2><b><span data-contrast="none">Three Places the AI Gap Shows Up</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}"> </span></h2>
<p><span data-contrast="auto">Three realities keep surfacing in conversations with health insurer executives this week: </span></p>
<ol>
<li><span data-contrast="auto"><strong>Technical</strong>: Connecting clinical record systems to modern analytics environments remains one of the most persistent barriers to a complete picture of each member. Interoperability mandates have pushed the industry toward better data sharing for years — but while the vision is clear on paper, the pipelines often aren’t.</span></li>
<li><strong>Operational</strong>: The breakdown is most visible in quality performance programs. Metrics are tracked with precision, but that insight rarely reaches care teams early enough to change what happens next. The gap stays open not because the organization didn’t know about it, but because knowing something in a report is very different from having it surface for a care manager at the exact moment a decision needs to be made.</li>
<li><strong>Cultural</strong>: Getting clinical and operational teams to trust AI outputs, change their workflows, and act on new signals requires organizational transformation, not just new software. Technology readiness is often ahead of people readiness, and that mismatch quietly stalls initiatives.</li>
</ol>
<blockquote><p>“<strong>Most health plans don’t fail because of bad models — they fail because insights don’t reach care managers in time</strong>.” — Priyal Priyal, Associate Vice President</p></blockquote>
<h2><b><span data-contrast="none">What Closing the Gap Requires</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}"> </span></h2>
<p><span data-contrast="auto">Two capabilities are needed here, and neither works well without the other.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><strong>A governed, unified data foundation </strong></p>
<ul>
<li data-leveltext="•" data-font="" data-listid="1001" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;•&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="0" data-aria-level="1"><span data-contrast="auto">Brings together claims, clinical, and social determinants of health data into a single trusted layer</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="•" data-font="" data-listid="1001" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&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">Enables AI models to move from development to real-world use without losing the guardrails regulated industries require</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="•" data-font="" data-listid="1001" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&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">Perficient’s Brickbuilder accelerators are designed to compress time-to-value on the Databricks platform, giving health insurers a faster path to that foundation without starting from scratch</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><strong>Operational expertise to connect data to care </strong></p>
<ul>
<li data-leveltext="•" data-font="" data-listid="1002" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&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">Bridges the foundation to clinical workflow, care team behavior, and real change management</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="•" data-font="" data-listid="1002" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&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">Systems can be governed and models can be deployed, but member outcomes don’t improve unless care manager workflows actually change</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="•" data-font="" data-listid="1002" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:480,&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">Healthcare expertise — built from years working with health insurer organizations on quality programs, care management operations, and clinical data integration — is what turns a deployment into a result rather than a proof of concept</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><span data-contrast="auto">Perficient’s work with health insurer organizations sits at that intersection. The platform is a starting point. Producing outcomes that reach patients is the goal.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><em><strong>Read more</strong>: <a href="https://www.perficient.com/insights/perspectives/improve-healthcare-quality-with-data-and-ai">Improve Healthcare Quality With Data &amp; AI </a></em></p>
<h2><b><span data-contrast="none">The Forcing Functions Are Here</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}"> </span></h2>
<p><span data-contrast="auto">Federal interoperability requirements, prior authorization rules, and value-based care contracts are creating pressure that wasn’t there two years ago. For most health insurers, the question of whether to activate data and AI infrastructure is settled. The question is how fast, and with what.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p>From everything we’re seeing at <a href="https://blogs.perficient.com/connect-with-perficient-at-databricks-data-ai-summit-2026/">DAIS this week</a>, one thing is clear: Healthcare AI isn’t broken — but the way it connects to real decisions still is. And until that connection is solved, no investment, no model, no platform will be enough.</p>
<p>The organizations that close that gap won’t just move faster. They’ll be the ones that actually deliver on the promise of AI in healthcare. <span data-contrast="auto">That’s what this week at DAIS keeps coming back to.</span><span data-ccp-props="{&quot;335559738&quot;:180,&quot;335559739&quot;:180}"> </span></p>
<p><em>See where your organization is on the activation curve. Connect with Perficient’s <a href="https://www.perficient.com/industries/healthcare-life-sciences">Healthcare &amp; Life Sciences</a> team to explore our AI-first healthcare offerings and <a href="https://blogs.perficient.com/perficient-earns-databricks-brickbuilder-specialization-for-healthcare-life-sciences/">Brickbuilder accelerators</a> on the <a href="https://www.perficient.com/partners/databricks">Databricks</a> platform or schedule a demo. </em></p>
<p>The post <a href="https://blogs.perficient.com/why-ai-stalls-for-health-plans-turning-data-into-action/">Why AI Stalls for Health Plans: Turning Data Into Action</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/Alyssa_Rename-1024x576.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">391489</post-id>	</item>
		<item>
		<title>Hello World at 30,000 Feet: Setting Up Omnigent En Route to DAIS 2026</title>
		<link>https://blogs.perficient.com/hello-world-at-30000-feet-setting-up-omnigent-en-route-to-dais-2026/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 21:14:07 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391490</guid>

					<description><![CDATA[<p>by Nick Passero, Director AI Data &#38; Analytics, Databricks Practice Lead As I started this project, I was flying over Shenandoah National Park on a&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/hello-world-at-30000-feet-setting-up-omnigent-en-route-to-dais-2026/">Hello World at 30,000 Feet: Setting Up Omnigent En Route to DAIS 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto"><em>by Nick Passero, Director AI Data &amp; Analytics, Databricks Practice Lead<br />
</em><br />
As I started this project, I was flying over Shenandoah National Park on a 6:30 a.m. flight from Charlottesville to Chicago, then onto San Francisco for the Databricks Data and AI Summit 2026.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">I opened my laptop to catch up on last week’s announcements and landed on <a href="https://www.databricks.com/blog/introducing-omnigent-meta-harness-combine-control-and-share-your-agents">Databricks’ release of Omnigent.</a></span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">A couple of hours, reliable WiFi, and a new open-source orchestration layer—good enough conditions to see what this could actually do in practice.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">As I reviewed the announcement and dug into the GitHub repo, I decided to test it in real time—using AI-assisted development (primarily Claude via CLI) as the interface for building and managing the setup.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<h2><b><span data-contrast="none">What Is Omnigent?</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:160,&quot;335559739&quot;:80,&quot;335559740&quot;:300}"> </span></h2>
<p><span data-contrast="auto">Omnigent is an open-source multi-agent AI orchestration platform released by Databricks.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">At its simplest, it acts as a management layer on top of your existing AI development tools—Claude Code, OpenAI Agents SDK, Codex, and others. You’re not replacing your tools—you’re orchestrating them.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">For development teams, the value shows up in structure and scalability:</span><span data-ccp-props="{&quot;201341983&quot;:0,&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;335559683&quot;:0,&quot;335559684&quot;:-2,&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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Persistent sessions with shared context</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&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;335559683&quot;:0,&quot;335559684&quot;:-2,&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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Worktree support for parallel development</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&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;335559683&quot;:0,&quot;335559684&quot;:-2,&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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">A unified interface for managing multiple agents</span><br />
<span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:300}"> </span></li>
</ul>
<p><span data-contrast="auto">Instead of fragmented workflows and one-off sessions, you get reproducibility, visibility, and a foundation teams can collaborate on.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<p><span data-contrast="auto">What’s notable here is the direction: Databricks isn’t just investing in data and AI infrastructure—they’re shaping how engineering teams build on top of it. Omnigent focuses on managing the workflows and agents themselves, not just the underlying data.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559740&quot;:300}"> </span></p>
<h2 id="wall-1-windows">Wall #1: Windows</h2>
<p>First thing I noticed when I went to install, I&#8217;m on Windows. That&#8217;s wall number one. No time for an IT requisition for a MacBook Pro.</p>
<p>Omnigent runs cleanly on Linux/Mac. On Windows you&#8217;ve got a decision to make. Claude started to recommend patching Omnigent, a path I did not want to go down. It was built to run on Linux/Mac for a reason. The easiest answer: <strong>Windows Subsystem for Linux (WSL)</strong>.</p>
<pre><code class="bash">wsl --install
</code></pre>
<p>That&#8217;s honestly most of it. WSL 2 ships with Ubuntu by default. A restart, a few minutes, and I had a clean Linux environment to work in.</p>
<h2 id="the-install-actually-easy">The Install: Actually Easy</h2>
<p>Once inside WSL, the Omnigent install was one command:</p>
<pre><code class="bash">pip install omnigent
</code></pre>
<p>No dependency drama, no version conflicts. The kind of install experience that makes you suspicious something is about to go wrong. Nothing did.</p>
<p>From there, a quick interactive setup gets you configured:</p>
<pre><code class="bash">omnigent setup
</code></pre>
<p>The wizard walks you through choosing your harness (Claude SDK, OpenAI Agents SDK, or others), setting your endpoint, and wiring up your model. It writes a config to <code>~/.omnigent/config.yaml</code>. Two steps — install, configure — and you&#8217;re ready to run.</p>
<h2 id="wall-2-the-ai-gateway">Wall #2: The AI Gateway</h2>
<p>Here&#8217;s the part that actually took time, and it&#8217;s worth understanding because you may hit it too.</p>
<p>At Perficient, we use PortKey as our AI gateway. An AI gateway sits between your agents and the underlying models — it handles routing, cost tracking, observability, and fallbacks. Practically speaking, it means we&#8217;re not hardwiring API keys and model names everywhere, and we have full visibility into what&#8217;s running and what it costs. Worth the extra config step.</p>
<p>When connecting Omnigent to a gateway, the main decision is how you want to serve your models. You&#8217;ve got three paths:</p>
<ol>
<li><strong>Direct to vendor</strong> — simplest setup, point straight at Anthropic or OpenAI. Good for getting started fast, less overhead, less visibility.</li>
<li><strong> AI gateway</strong> (PortKey, LiteLLM, and others) — adds a layer between your agents and the models. You get routing, cost tracking, fallbacks, and observability across providers. If your organization already has one of these in place, this is probably your path.</li>
<li><strong>Databricks Model Serving</strong> — if you&#8217;re already on Databricks, this is worth a look. You serve models through the same platform you&#8217;re already using, with Unity Catalog governance and the observability stack you&#8217;ve already got. For data and ML teams living in Databricks, it&#8217;s the most natural fit — one less integration to manage.</li>
</ol>
<p>Once the right endpoint and model identifier were in, the config clicked into place:</p>
<pre><code class="yaml">providers:
  your-gateway:
    kind: gateway
    default: true
    anthropic:
      base_url: &lt;your-gateway-url&gt;
      api_key_ref: keychain:&lt;your-key-ref&gt;
      models:
        default: &lt;your-model-identifier&gt;
</code></pre>
<p>The structure is the same regardless of which path you take — the endpoint and model identifier are the two values that change. Know your serving layer before you sit down to configure.</p>
<h2 id="hello-world">Hello World</h2>
<p>Once the config was dialed in, I ran the thing.</p>
<p>Typed a message. Got a response.</p>
<p><strong>Hello World.</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>There&#8217;s something about seeing your own agent stack respond — properly routed through your own gateway, with session context, in a clean environment, that makes the setup feel real. It&#8217;s a green light.</p>
<h2 id="whats-next">What&#8217;s Next</h2>
<p>From Hello World, I started pulling in some of the in-flight work I&#8217;m already running — my to-do list, accelerators for our teams, demo scaffolding. That&#8217;s the actual test: not toy prompts, but real development work.</p>
<p>The next step I&#8217;m most interested in: building Databricks apps with this. Not just using Omnigent as a session manager, but running real development workflows, multiple agents across multiple worktrees, working in parallel on the same codebase. Our teams at Perficient are going to put this through its paces properly in the coming weeks.</p>
<p>That&#8217;s the bigger picture here. Databricks isn&#8217;t just extending the data platform, they&#8217;re extending how engineering teams work on top of it. Omnigent is a sign of where this is going: not just better data infrastructure, but better tooling for the people building on it. More to come once we&#8217;ve stress-tested it for real.</p>
<h2 id="lessons-learned">The Real Takeaway</h2>
<ul>
<li><strong>WSL is fast, clean, and the right call.</strong></li>
<li><strong>An AI gateway is worth the extra step.</strong> If your organization doesn&#8217;t have one — look at PortKey. Routing, visibility, and cost control matter at scale.</li>
<li><strong>Know your serving layer.</strong> Direct to vendor, AI gateway, or Databricks Model Serving — each has different tradeoffs. If you&#8217;re already on Databricks, start there.</li>
<li><strong>Hello World matters.</strong> Don&#8217;t skip it. A clean green light before you start real work is worth 5 minutes.</li>
<li><strong>Do it on a plane.</strong> Forced focus, no meetings. Highly recommend.</li>
</ul>
<h2 id="find-me-at-dais-2026">Find Perficient at DAIS 2026</h2>
<p>If you&#8217;re at Databricks Data and AI Summit, <a href="https://www2.perficient.com/perficient-databricks-data-ai-summit-2026">come find me.</a> I&#8217;m happy to talk Omnigent, what we&#8217;re building at Perficient on top of Databricks, or how to get your own setup running.</p>
<p>The post <a href="https://blogs.perficient.com/hello-world-at-30000-feet-setting-up-omnigent-en-route-to-dais-2026/">Hello World at 30,000 Feet: Setting Up Omnigent En Route to DAIS 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/image-1024x639.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">391490</post-id>	</item>
		<item>
		<title>Why Experience Architecture Is Critical for AI-Powered Digital Products</title>
		<link>https://blogs.perficient.com/why-experience-architecture-is-critical-for-ai-powered-digital-products/</link>
		
		<dc:creator><![CDATA[Sean Romer]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 22:34:02 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391463</guid>

					<description><![CDATA[<p>Digital products have become more powerful over the past two decades. Cloud platforms, design tools, and agile delivery models have enabled teams to ship features faster than&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/why-experience-architecture-is-critical-for-ai-powered-digital-products/">Why Experience Architecture Is Critical for AI-Powered Digital Products</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Digital products have become more powerful over the past two decades. Cloud platforms, design tools, and agile delivery models have enabled teams to ship features faster than ever before.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">But speed has come with a side effect.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Many organizations are discovering that while their interfaces look polished and their feature sets grow quickly, the underlying systems are becoming harder for users to understand. Navigation fragments, workflows become inconsistent, and teams spend increasing time fixing usability issues one screen at a time.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The problem often isn’t the interface. It’s the structure underneath it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">As AI-driven capabilities become embedded across digital products, restoring that structural layer of experience design is becoming increasingly important.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">The Layers of Modern Experience Design</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">When organizations talk about digital experience, several related disciplines tend to get grouped together.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">User Experience (UX)</span></b><span data-contrast="auto"> focuses on how people interact with a system to accomplish tasks.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">Customer Experience (CX)</span></b><span data-contrast="auto"> focuses on the broader relationship between people and an organization across touchpoints and time.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">But there is another layer that often receives less attention: </span><b><span data-contrast="auto">Experience architecture.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Experience architecture shapes how information, workflows, and capabilities are organized so that UX and CX can function coherently across a product ecosystem.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">These disciplines operate at different levels:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">UX designs interaction</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">CX designs relationship</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Experience architecture structures the system</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">When the architectural layer is strong, usability improvements scale across the entire product. When its weak, teams end up repeatedly redesigning individual screens while deeper problems persist.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">When Structure Disappears</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Many digital teams today operate under strong pressures: faster release cycles, data-driven decision-making, and constant feature expansion.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">These pressures bring clear advantages, but they also shift attention toward what is easiest to deliver and measure.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The visible surface of products—the UI—often becomes the center of design work.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Over time, deeper structural questions receive less attention:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">How information is organized</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">How workflows connect across systems</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Whether interaction patterns remain consistent</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Whether the system matches how users actually think and work</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">When this happens, organizations begin to see familiar symptoms:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">fragmented navigation</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">inconsistent interaction patterns</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">growing design debt</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">increasing user confusion</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">Many of these problems are not cosmetic. They are architectural.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">A Lesson from Human Factors</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">UX originally emerged from disciplines such as human factors and ergonomics, which studied how people interact with tools in real-world environments.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">One well-known example comes from aviation during World War II.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Pilots were accidentally raising landing gear instead of flaps during landing. The controls were identical in shape and located close together.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Human-factors researcher Alphonse Chapanis redesigned the controls so they could be distinguished by touch. The errors disappeared.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The pilots hadn’t been the problem. The interface had.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The same lesson still applies to digital systems today: </span><b><span data-contrast="auto">Many “user errors” are actually structural design errors.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">Why Architecture Matters Even More with AI</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">The rise of AI-driven systems adds a new level of complexity to digital experiences.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Traditional software typically presents fixed options and predictable outcomes. AI systems behave differently. They generate responses dynamically and adapt to user behavior.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">This changes the UX challenge. The central problem is no longer just interface design. It is </span><b><span data-contrast="auto">intelligibility</span></b><span data-contrast="auto">.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Users need to understand:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="9" 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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">what a system is capable of</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="9" 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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">where its boundaries lie</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="9" 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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">how their actions influence its behavior</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">Without that clarity, AI systems can appear unpredictable or opaque.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Experience architecture plays a critical role here because it structures:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">how AI capabilities are presented</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">how feedback is communicated</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">how users maintain orientation and control</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">In other words, architecture helps ensure that intelligent systems remain understandable to the people who rely on them.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">The Role of UX Architecture</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">UX architecture refers to the structural layer of experience design that determines how a system works from the user’s perspective.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">It includes elements such as:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">information architecture</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">navigation structures</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">task flows</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">interaction models</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">content hierarchy</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">alignment with user mental models</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">This architectural perspective does not replace classic usability principles. Instead, it creates structural conditions that allow those principles to scale across complex systems.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">A simple way to think about it is:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">UI expresses usability.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">UX architecture enables usability.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Just as software architecture precedes code, UX architecture precedes interface design.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">Designing for Long-Term Trust</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">Digital systems operate within relationships of trust. When products become confusing, manipulative, or opaque, short-term metrics may improve—but long-term outcomes often decline.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Customers abandon products. Support costs rise. Regulatory attention increases.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Clarity and transparency are therefore not just design ideals. They are long-term business assets.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Organizations that succeed with complex digital systems often invest in capabilities that reinforce architectural thinking, including:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">systems mapping</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">design research</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">information architecture</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">interaction design</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">design systems and governance</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">These capabilities help ensure that digital ecosystems remain coherent as they grow.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">Closing the AI Value Gap</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">Many organizations today are investing heavily in AI capabilities but struggling to translate those capabilities into meaningful user outcomes.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">One reason is structural.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">AI features are often layered onto systems that were not designed to accommodate them. Without strong experience architecture, even powerful AI capabilities can feel confusing or disconnected from the workflows people actually need.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Closing the AI value gap requires more than adding intelligence to systems.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">It requires designing systems so that people can </span><b><span data-contrast="auto">understand, trust, and effectively use that intelligence.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<h3><b><span data-contrast="auto">Looking Ahead</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></h3>
<p><span data-contrast="auto">The fragmentation of UX, CX, and product disciplines did not occur by accident. It emerged from real market pressures and technological change.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">But as digital ecosystems grow more complex—and as AI becomes embedded across products and services—many organizations are rediscovering a simple truth:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><b><span data-contrast="auto">Interfaces alone cannot sustain coherent experiences.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">What enables durable digital systems is architecture—both technical and experiential.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">When experience architecture provides that foundation:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">UX can support effective interaction</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">CX can guide long-term relationships</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </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;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">product teams can balance business goals and user needs</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">And organizations gain systems that remain understandable and resilient as they scale.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/why-experience-architecture-is-critical-for-ai-powered-digital-products/">Why Experience Architecture Is Critical for AI-Powered Digital Products</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/iStock-1210902063-1024x576.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">391463</post-id>	</item>
		<item>
		<title>What Leading Enterprises Know About Governing AI at Scale</title>
		<link>https://blogs.perficient.com/what-leading-enterprises-know-about-governing-ai-at-scale/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 17:33:58 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[AI governance]]></category>
		<category><![CDATA[AI in Healthcare]]></category>
		<category><![CDATA[Appian]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391478</guid>

					<description><![CDATA[<p>A year ago, enterprise leaders were asking whether AI could deliver operational value. Most have their answer. The question has moved on — and it’s&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/what-leading-enterprises-know-about-governing-ai-at-scale/">What Leading Enterprises Know About Governing AI at Scale</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A year ago, enterprise leaders were asking whether AI could deliver operational value. Most have their answer. The question has moved on — and it’s harder: how do you scale AI without losing control of what you’ve built?</p>
<p>That’s where most strategies hit their limits. Not at the pilot stage, and not for lack of ambition. Because deploying AI and governing it are two different problems — and only one of them has been getting the attention it deserves.</p>
<h2>Organizations Are Scaling AI Faster Than They’re Governing It</h2>
<p>AI fluency is growing quickly across the enterprise. Leaders aren’t asking for basic introductions anymore. Instead, they’re asking where to apply AI, how to scale it, and whether they can trust what they’ve built.</p>
<p>At the same time, a gap is starting to emerge. Widespread experimentation hasn’t translated into real scale—<a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai"><u>nearly two-thirds</u></a> of organizations still haven’t deployed AI across the enterprise. What works in a pilot doesn’t always hold up in production. What works in isolation often creates real complexity once teams embed it into daily operations. So, while moving fast is valuable, it only works when the right foundation is in place to support it.</p>
<h2>Deployed Isn&#8217;t the Same as Governed</h2>
<p>There’s a belief that shows up in many AI conversations, often without being stated directly: once AI is deployed, it’s been operationalized.</p>
<p>In practice, that’s where strategies can run into trouble. AI creates lasting value when organizations embed it inside systems that define its role, validate its outputs, and measure its performance over time. Without that structure, it’s difficult to scale with confidence.</p>
<p>That dynamic was visible at Appian World 2026. In fact, organizations made the most progress when they built AI directly into business processes—not when they ran it alongside them.</p>
<p>That’s what’s shaping the next phase of intelligent automation.</p>
<h2>Governance Is What Separates Experimentation from Operational Performance</h2>
<p>If there’s one thing many organizations are still working through, it’s not what AI can do — it’s what it takes to govern it at scale.</p>
<p>Governance determines where organizations use AI, what it can do, how teams validate its outputs, and how they measure performance over time. As agentic AI enters the picture, that structure becomes even more important.</p>
<p>The potential of agentic systems is real: taking action, coordinating across workflows, and operating with increasing autonomy. That same autonomy, without clear boundaries, introduces risk. Reliability doesn’t come from the model itself — it comes from the processes and safeguards built around it.</p>
<p>In practice, well-governed AI looks like this:</p>
<ul>
<li>Teams embed AI directly into workflows with clearly defined roles</li>
<li>Inputs and expected outputs are specified upfront</li>
<li>Outputs are validated within the process before action is taken</li>
<li>Performance is continuously monitored and refined</li>
</ul>
<blockquote><p>“Agentic AI is exciting&#8230;but it’s still unproven and can’t fully be trusted. Governing it in a controlled set of use cases is critical to establishing trust and measuring the impacts.”- Craig Peterson, Director</p></blockquote>
<p>The organizations seeing the strongest results aren’t trying to scale everything at once. Instead, they start with use cases they can measure, manage for risk, and prove in practice—then build from there.</p>
<p>At this stage, progress is less about how much AI you deploy and more about what you can run reliably and stand behind.</p>
<h2>What Governed AI Looks Like in a Real-World Environment</h2>
<p>Healthcare is one of the clearest examples of why governance matters — and it’s what we’ve seen in practice.</p>
<p>Our <strong>AI Healthcare Concierge </strong>helps patients and members navigate care, handling benefits questions, prior authorizations, referrals, and coordination across voice and chat. What makes it effective in a high-stakes environment is how it operates within a governed system:</p>
<ul>
<li>It handles specific, repeatable tasks rather than open-ended decisions</li>
<li>Outputs feed directly into validated workflows before any action is taken</li>
<li>Every interaction is measurable from the start</li>
<li>Oversight is built into the process</li>
</ul>
<p>While healthcare makes the stakes clear, the underlying principle applies broadly: <strong>AI is only as effective as the system it operates within</strong>. That&#8217;s the approach behind our AI Healthcare Concierge. Governed by design. Built to perform.</p>
<h2>Scaling What You Can Govern Is the Competitive Advantage</h2>
<p>That apprach is reflected in our work every day. As a result, Perficient won <a href="https://blogs.perficient.com/perficient-wins-appian-2026-delivery-excellence-award-for-third-consecutive-year/"><strong><u>Appian’s Delivery Excellence Award</u></strong></a> for the third year in a row because we build solutions designed to hold up in real-world operations.</p>
<p>The organizations making the most progress aren’t necessarily deploying the most AI. They’re being deliberate about where they deploy it — and scaling only what they can govern.</p>
<p>That’s the difference between running experiments and building real advantage. The question isn’t just what’s possible. It’s what you can govern and prove is working.</p>
<p>Ready to move from AI experiments to AI you can stand behind? <a href="https://www.perficient.com/contact-us"><u>Contact us</u></a> to discuss what governed AI looks like in your organization.</p>
<p>The post <a href="https://blogs.perficient.com/what-leading-enterprises-know-about-governing-ai-at-scale/">What Leading Enterprises Know About Governing AI at Scale</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2024/11/iStock-1628553826-scaled-1.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">391478</post-id>	</item>
		<item>
		<title>Six Takeaways from Snowflake Summit 2026</title>
		<link>https://blogs.perficient.com/six-takeaways-from-snowflake-summit-2026/</link>
		
		<dc:creator><![CDATA[Vivek Nigam]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 19:25:11 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391455</guid>

					<description><![CDATA[<p>I spent four days at Snowflake Summit 2026 (June 1–4, San Francisco) this week and left with a notebook full of product names I had&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/six-takeaways-from-snowflake-summit-2026/">Six Takeaways from Snowflake Summit 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">I spent four days at Snowflake Summit 2026 (June 1–4, San Francisco) this week and left with a notebook full of product names I had to learn again and one idea that stuck: the data platform era is ending, and the agentic enterprise era is starting. </span></p>
<p><span data-contrast="none">The Summit drew more than 20,000 attendees and shipped 26+ new capabilities across more than 500 sessions. CEO Sridhar Ramaswamy shared the keynote stage with Anthropic President Daniela Amodei — a pairing that, on its own, tells you where the center of gravity has moved. The headline wasn’t a faster warehouse or a cheaper query. It was a thesis: AI agents are only as useful as the governed data, semantic context, and verified identity standing behind them.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">If you couldn&#8217;t make it — or, like me, you were there and are still untangling the firehose — here are the six takeaways I keep coming back to, and what I think they mean for the teams I work with.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">1. The pitch changed: from data platform to control plane</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">For years, Snowflake&#8217;s story was simple: bring your data, run your queries, pay for what you use. At Summit 2026, that story grew. The company reframed the AI Data Cloud as the operating system — the control plane — for an enterprise run by autonomous agents.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">That isn’t just marketing. The narrative arc on the keynote stage walked through three eras: the age of IT, the age of BI, and now the age of AI agents. The implication is sharp. If agents are going to act on your business — querying data, writing code, triggering workflows — then the platform that holds the data also has to </span>govern the agents<b><span data-contrast="none">.</span></b><span data-contrast="none"> Snowflake is making a bid to be that layer, not just the storage underneath it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">2. Agents got names, surfaces, and a place to work</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">Two rebrands anchored the agent story. </span><a href="https://blogs.perficient.com/heres-what-snowflakes-announcement-means-for-your-organization-and-how-perficient-helps-you-get-there/">Snowflake Intelligence became CoWork</a><span data-contrast="none">, a personal AI agent for knowledge workers, now reachable from an iOS app, a Slackbot, and — the one that made the room laugh — a Microsoft Excel extension. </span>Cortex Code became CoCo<span data-contrast="none">, elevated from a coding assistant into a full autonomous development agent.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">CoCo is the more striking of the two. It now runs as a native desktop app for Windows and macOS, plugs into VS Code, and connects to Anthropic&#8217;s Claude Code so developers can route Snowflake-specific work from the tools they already live in. More importantly, it gained real autonomy: Automations run recurring tasks on a schedule, and Cloud Agents are serverless, event-driven workers that react to data changes — alerting a team when inventory drops below a threshold, for example — with no client left running.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">Rounding it out: a </span>Skill Catalog<span data-contrast="none"> for discovering and reusing proven agent skills across the enterprise. The pattern is clear — the agent should show up where the work already happens, not ask the work to move to it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">3. Context is the new moat</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">This was the takeaway I underlined twice. The biggest constraint on enterprise AI is no longer model quality it is whether the model understands your business. Snowflake leaned hard into this with a cluster of context-and-semantics announcements.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p>Horizon Context<span data-contrast="none"> (private preview) adds the ability to collect metadata from outside systems — PostgreSQL, SQL Server, Tableau, Power BI, dbt — then enrich it with column-level lineage and AI-generated documentation, and activate it through hybrid semantic search. </span>Semantic Studio and Semantic View Autopilot<span data-contrast="none"> let teams define and auto-maintain shared business logic without deep SQL expertise.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">The number that landed hardest came from </span>Cortex Sense<span data-contrast="none">, the runtime layer that assembles data, business definitions, and operational knowledge for an agent at query time: </span>86% accuracy on structured business questions with full context, versus 24% for a generic model without it.<span data-contrast="none"> Same question, same model class — the difference is context. That gap is the entire argument for why a governed semantic layer matters, and it is the slide I will be screenshotting for client conversations.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">4. Agents need identity — and now they have one</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">Here is the part most of the press underplayed and most security leaders should not. Snowflake shipped </span>AI Agent Identity (GA)<span data-contrast="none">: every agent now gets a cryptographic identity, per-agent role-based access control (RBAC), and a complete audit trail. Pair it with the new AI Security Posture Management and you have the beginnings of a governance model built for non-human actors.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">Think about what an autonomous agent actually is — software that reads data and takes action on its own. Without identity, RBAC, and auditability, that’s an ungoverned service account with initiative. Treating agents as first-class identities is the unglamorous prerequisite that makes everything else safe to deploy. I expect this to become table stakes, and the organizations that get their identity and access model right early will move faster later.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">5. The plumbing kept advancing, too</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">Underneath the agent headlines, the infrastructure announcements were substantial — and they are what make the agent story credible:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<ul>
<li data-leveltext="●" data-font="" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;●&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Snowflake Datastream</span></b><span data-contrast="none"> — a fully managed, Kafka-compatible streaming service. Existing Kafka producers and consumers connect with a config change, and data lands as governed Snowflake or Iceberg tables. Snowflake pegs the real-time data opportunity at $128B.</span><span data-ccp-props="{&quot;335559739&quot;:100}"> </span></li>
</ul>
<ul>
<li data-leveltext="●" data-font="" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;●&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="none">Apache Iceberg v3 (GA)</span></b><span data-contrast="none"> — bidirectional interoperability via the Horizon Catalog, which embeds the open-source Apache Polaris catalog. The open-table-format bet is now fully in production.</span><span data-ccp-props="{&quot;335559739&quot;:100}"> </span></li>
</ul>
<ul>
<li data-leveltext="●" data-font="" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;●&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="none">Cortex Training + Adaptive Compute</span></b><span data-contrast="none"> — fine-tune open models like Qwen and Mistral on managed GPUs without moving data outside the governed perimeter.</span><span data-ccp-props="{&quot;335559739&quot;:100}"> </span></li>
</ul>
<ul>
<li data-leveltext="●" data-font="" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;●&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="none">Ecosystem moves</span></b><span data-contrast="none"> — an expanded Anthropic partnership, a reported $6B AWS commitment, the Natoma acquisition, and the dbt + Fivetran merger reshaping the data tooling map.</span><span data-ccp-props="{&quot;335559739&quot;:160}"> </span></li>
</ul>
<p><b><span data-contrast="none">6. The Anthropic moment</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">The expanded Anthropic partnership, and the ability to drive Snowflake work directly from Claude, signals where Snowflake believes the value is migrating: toward reasoning over governed enterprise data, not just storing and serving it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">What I took from that fireside is a posture, not just a product. The two companies framed enterprise AI as a division of labor — the model brings reasoning, the platform brings governed context and guardrails. Neither is sufficient alone. For anyone deciding how to build, that framing is a useful corrective to the assumption that a powerful model, dropped onto messy data, will somehow figure it out. It won&#8217;t. The demo that worked was always the one with clean semantics behind it.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">What I&#8217;ll be watching next</span></b><span data-ccp-props="{&quot;335559738&quot;:320,&quot;335559739&quot;:160}"> </span></p>
<p><span data-contrast="none">A recap is easy; the hard questions take longer to answer. A few I left San Francisco still chewing on. First, </span>how much of this is GA versus preview?<span data-contrast="none"> Several of the most exciting capabilities — Horizon Context, Datastream, Semantic Studio — shipped in private or public preview, which means the real test is the next two quarters of customer hands-on time.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p>Second, does the context layer reach far enough?<span data-contrast="none"> Cortex Sense is powerful inside Snowflake&#8217;s boundary, but most enterprises run across many systems. How well the metadata connectors and lineage stretch across a genuinely heterogeneous estate will decide whether the 86% number holds up outside a demo.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p>Third, what does this do to cost?<span data-contrast="none"> Agents that run on schedules and react to events are, by design, always working. The FinOps conversation around autonomous, event-driven compute is one almost nobody had on stage — and one every platform team will have within a year.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><b><span data-contrast="none">The Real Takeaway</span></b><span data-ccp-props="{&quot;335559738&quot;:200,&quot;335559739&quot;:120,&quot;335572079&quot;:12,&quot;335572080&quot;:8,&quot;335572081&quot;:3750654,&quot;469789806&quot;:&quot;single&quot;}"> </span></p>
<p><span data-contrast="none">Snowflake spent Summit 2026 making one bet out loud: that the winners in enterprise AI will be the organizations whose data is governed, whose context is engineered, and whose agents are identified and accountable. The compute was always going to get cheaper. The </span>trustworthy foundation<span data-contrast="none"> is the hard part — and the part worth investing in now.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"> </span></p>
<p><span data-contrast="none">For more information on our Snowflake capabilities, visit our <a href="https://www.perficient.com/partners/snowflake">Snowflake Partner page</a>.</span></p>
<p>The post <a href="https://blogs.perficient.com/six-takeaways-from-snowflake-summit-2026/">Six Takeaways from Snowflake Summit 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-05-101145.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">391455</post-id>	</item>
		<item>
		<title>Agentic Enterprise Transformation: What Marketers Need to Hear After Connections</title>
		<link>https://blogs.perficient.com/agentic-enterprise-transformation-what-marketers-need-to-hear-after-connections/</link>
		
		<dc:creator><![CDATA[Kristen Quick]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 13:30:06 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391446</guid>

					<description><![CDATA[<p>There&#8217;s a particular feeling I get when I watch a great product keynote: part genuine excitement, part practical instinct. I&#8217;m immediately energized by the vision,&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/agentic-enterprise-transformation-what-marketers-need-to-hear-after-connections/">Agentic Enterprise Transformation: What Marketers Need to Hear After Connections</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There&#8217;s a particular feeling I get when I watch a great product keynote: part genuine excitement, part practical instinct. I&#8217;m immediately energized by the vision, but just as quickly, I start evaluating what it would actually take to bring that vision to life inside an organization. As a solutions architect, that reflex comes with the job. I&#8217;m wired to look beyond the polish, understand the architecture beneath the demo, and think through the operational realities that determine whether a compelling presentation can translate into real business value.</p>
<p>I felt that often last week at Salesforce Connections in Chicago — and it sharpened a question I keep coming back to: what does <strong>agentic enterprise transformation</strong> actually require of a marketing organization, before the demos, and long after the conference ends? I also had the opportunity to share my real-time reactions with a room full of marketers at Perficient&#8217;s keynote breakfast watch party. What I shared there is what I want to capture here: the announcements were impressive, but the more important conversation is what they signal — and what it will take for organizations to turn that potential into impact.</p>
<hr />
<h2>The Demos Were Good. The Subtext Was Better.</h2>
<p>The Salesforce Connections keynote was organized around three chapters: Always-on Creativity, Self-Optimizing Campaigns, and Autonomous Pipeline Generation. The demos across all three were compelling. Agentforce Co-Worker surfaced marketing-driven pipeline insights in minutes instead of weeks. The Goals Agent compressed a campaign lifecycle from 12 to 14 weeks down to hours. Piper, the Qualified SDR Agent, accelerates lead qualification and meeting creation 24/7. And the acquisition of Contentful pointed to more dynamic control over creative assets that have historically been locked inside rigid content systems.</p>
<p>What stood out to me, though, was not any one announcement in isolation. It was that each of them addressed the same underlying problem: marketing operates on lag. Insights arrive after the window to act has passed. Content approvals outlast campaign relevance. Buyers move faster than the systems designed to engage them. Across all three chapters, Salesforce was presenting a coordinated attempt to shrink that latency and move marketing closer to real time.</p>
<p>That&#8217;s what makes the strategic case compelling. The problem is rarely that marketers lack data or ideas. It&#8217;s that turning those inputs into action still takes too many handoffs and too much time. If these tools meaningfully reduce that delay, the advantage is not just speed. It&#8217;s operating on a different wavelength than competitors still constrained by manual workflows.</p>
<p>That, to me, was the keynote&#8217;s real headline.</p>
<hr />
<h2>Here&#8217;s the Part I Said Out Loud in That Breakfast Room</h2>
<p>What I also said is that none of this works by magic. My job is not just to admire what the technology can do. It&#8217;s to help clients understand what conditions must be true for it to work well. When it comes to AI agents, that means being honest about something marketers need to hear more often: agents do not remove the need for operational maturity. They make it more visible.</p>
<p>An agent tasked with building campaigns will only be as effective as the goals and constraints you give it. An agent generating content will only be as on-brand as the standards and approvals model you make accessible to it. A pipeline agent can scale good qualification discipline, but it can also scale confusion if marketing and sales have never aligned on what qualified means. And an intelligence dashboard can produce fast, confident-looking outputs that are only as trustworthy as the data beneath them.</p>
<p>That is not a criticism of Salesforce. It is the operating reality of <a href="https://www.perficient.com/ai-first-solutions/ai">agentic AI</a>, and it is probably the most useful thing I can say after watching the keynote. The maturity requirement is not primarily technical. It is organizational. Can you define a good campaign brief in writing? Do you have benchmark data that can guide decisions? Have marketing and sales aligned on lead quality? Is your CRM data complete enough to trust?</p>
<p>Those are the questions that separate organizations that will realize meaningful value from those that will run a pilot, get mediocre output, and decide the technology is not ready. In many cases, the technology is ready. The foundation is what needs attention.</p>
<p>&nbsp;</p>
<hr />
<h2>Starting Your Agentic Enterprise Transformation: Where to Focus First</h2>
<p>If your team is still early in its AI maturity, the most valuable thing you can do right now is not deploy an agent for the sake of having one. It is to strengthen the operating conditions an agent will depend on. That means auditing data completeness in Salesforce, establishing attribution frameworks people use consistently, and documenting your brand&#8217;s voice and campaign standards in a format structured enough for a machine to follow. In practical terms, you are writing the brief an agent will eventually execute against.</p>
<p>If you already have a strong data foundation, the opportunity is not to treat these agents as a linear progression from one capability to the next. Marketing doesn&#8217;t work that way. The real opportunity is to connect the intelligence, campaign, and pipeline layers, so they continuously inform one another. That closed loop is the real prize: not a single agent or workflow, but a system in which each capability makes the others more effective.</p>
<hr />
<h2>What We&#8217;ve Learned at Perficient: Our Agentic Enterprise Transformation</h2>
<p>We&#8217;re a <a href="https://www.perficient.com/partners/salesforce">Salesforce Agentforce implementation partner</a>, and we&#8217;ve been building this architecture in our own go-to-market operations, so I&#8217;m not speaking hypothetically. Our internal data was sobering. Fifty-nine percent of our sellers were spending 40 percent or more of their week on non-selling activities, and they rated their tools at 3.9 out of 10. Marketing&#8217;s work was disappearing into that capacity gap, with leads untouched, intent ignored, and content missing the moment it was meant to influence.</p>
<p>Our answer was an <a href="https://www.perficient.com/ai-first-solutions/ai/agentic-front-office"><strong>Agentic Front Office</strong></a>: seven specialized agents deployed directly into the Salesforce and Slack workflows where our teams already work, guided by three principles. First, unlock the context agents need to be useful. Second, right-size their responsibilities with bounded roles and clear guardrails. Third, prepare the workforce to orchestrate outcomes alongside digital labor, rather than execute manual tasks.</p>
<p>What building this has reinforced for me is that this is an operating model change, not a feature upgrade. The organizations that get the most from this moment will pair ambition with discipline. They will invest in the data, alignment, governance, and change management required to make agents effective, while also moving quickly enough to learn by doing. Those are the organizations that will look back at Connections 2026 and recognize it as the moment their <strong>agentic enterprise transformation</strong> stopped feeling theoretical — and started becoming operational.</p>
<p>The post <a href="https://blogs.perficient.com/agentic-enterprise-transformation-what-marketers-need-to-hear-after-connections/">Agentic Enterprise Transformation: What Marketers Need to Hear After Connections</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/Connections-2026-Agentic-Enterprise-Transformation-Blog-Post.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">391446</post-id>	</item>
		<item>
		<title>7 Ways to Be a Better LGBTQ+ Ally at Work</title>
		<link>https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/</link>
		
		<dc:creator><![CDATA[Culture Team]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 16:17:33 +0000</pubDate>
				<category><![CDATA[Life at Perficient]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[PRISM ERG]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391440</guid>

					<description><![CDATA[<p>This blog was written by both Megan Mueller Jensen and Randy Roosekrans, supporters and members of PRISM, Perficient’s Employee Resource Group for our LGBTQIA2S+ colleagues and allies. As&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/">7 Ways to Be a Better LGBTQ+ Ally at Work</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>This blog was written by both <a href="https://www.linkedin.com/in/mbjensen/" target="_blank" rel="noopener"><strong>Megan Mueller Jensen</strong></a> and <a href="https://www.linkedin.com/in/randy-roosekrans-csm-acp-3a66664/" target="_blank" rel="noopener"><strong>Randy Roosekrans</strong></a>, supporters and members of <strong><a href="https://www.perficient.com/about/culture-community#ab6d0fab-195d-4312-aad9-4908c62aa572" target="_blank" rel="noopener">PRISM</a></strong>, Perficient’s Employee Resource Group for our LGBTQIA2S+ colleagues and allies.<img fetchpriority="high" decoding="async" data-attachment-id="391442" data-permalink="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/prism-no-background/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background.png" data-orig-size="2000,2000" 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="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1024x1024.png" class="alignright wp-image-391442" src="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-300x300.png" alt="PRISM ERG logo" width="330" height="330" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-300x300.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1024x1024.png 1024w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-150x150.png 150w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-768x768.png 768w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1536x1536.png 1536w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background.png 2000w" sizes="(max-width: 330px) 100vw, 330px" /></em></p>
<p>As cisgender straight people in a professional setting, we believe it’s our responsibility to do our best to support our LGBTQIA2S+ colleagues. We are longtime allies, advocates, activists, and parents of gay kiddos, and we want to share a few things we’ve learned over the years about making our workplaces safer, friendlier, more inclusive, and more supportive for our queer colleagues. (For the rest of this writing, we’ll refer to these folx as ‘queer,’ which is an umbrella term although we recognize that not all of this applies to everyone.)</p>
<ol>
<li><strong>Pronouns matter.</strong> If someone tells you their pronouns, the bare minimum we can do is respect that and use those pronouns consistently. And if you slip up in conversation, correct yourself, apologize briefly, and move on. Doing so will signal that you’re making an effort; it becomes easier with practice. If you’re not sure of someone’s pronouns, it’s ok to ask! Simply say, <em>“I use she/her. May I ask what you use?” </em>It’s also great to include your pronouns in your email signature, when introducing yourself, joining a meeting, or on your LinkedIn profile. It’s a positive signal that lets queer folx know that you’re a safe colleague and partner to work with, and that they’re cool being themselves around you.</li>
<li><strong>Respect and protect the privacy of your queer colleagues.</strong> Just because someone has disclosed information to you (or within PRISM events and conversations) doesn’t mean you have permission to share that with anyone outside of that original conversation. It’s ONLY the decision of queer people themselves to whom they want to come out. That information may not be safe or smart to share anywhere else. If for some reason it’s necessary to divulge details about others, make sure you get their permission first.</li>
<li><strong>Educate Yourself.</strong> Take the initiative to educate yourself about queer issues, terminology, and experiences. There are plenty of resources available online, such as articles, books, and documentaries that can help you understand the challenges faced by the queer community. While most queer folx are happy to answer questions, it can also be emotionally and intellectually exhausting to constantly be the sole source of information, or if there is an assumption that they “represent” all queer folx.  A few great resources include <a href="https://www.hrc.org/" target="_blank" rel="noopener"><strong>HRC (Human Rights Campaign)</strong></a>,  <a href="https://glaad.org/" target="_blank" rel="noopener"><strong>GLAAD (Gay and Lesbian Alliance Against Defamation)</strong></a>, and <a href="https://www.thetrevorproject.org/resources/" target="_blank" rel="noopener"><strong>The Trevor Project</strong></a>. PRISM also hosts informational events throughout the year that are designed to help us all be better allies.</li>
<li><strong>Speak up, even (or especially) when queer colleagues aren’t present</strong>. If someone misgenders a colleague or uses offensive terminology, intentionally or unintentionally, it’s our responsibility to correct them in a friendly but consistent way. Stand up for folx who aren’t in the room. It sets the standard for expected behavior within the team and reinforces a supportive company culture. To that end, be very mindful of “deadnaming” which is using the name a trans person had before they changed it to what they use now. It can be deeply traumatic and triggering for them to hear that name in any setting. If you happen to make that mistake, you can offer a quick, sincere apology and keep the conversation moving.  If you hear a colleague using the deadname of someone who isn’t present, it’s a good opportunity for a friendly correction.</li>
<li><strong>Support queer-inclusive policies</strong>. The needs and challenges of our queer colleagues may be different and more impactful than ones we experience as cisgender folx. Don’t make them fight for equality and inclusivity alone. Make sure they know you are in their corner and follow that sentiment with action.</li>
<li><strong>Remember it’s not about YOU. </strong>As allies, it’s our job to support, facilitate, and enable the efforts of our queer colleagues. Big decisions should be made by queer folx, and our role is to help make their lives easier, safer, and more equitable. Try your best to give input, ideas, and opinions regarding queer life when invited to do so or ask if you can add your perspective when it might be useful.</li>
<li><strong>Be open to listening and open to growth. </strong>Even with the best of intentions, we won’t always get it right. We may unintentionally say something dumb or stumble over our words. If a queer colleague corrects you or gives you input, see it as a sign of trust rather than criticism.</li>
</ol>
<p>Understand that there are many facets to queer culture, and some norms may vary. The more exposure and practice you get in these spaces, the clearer those norms will become. The most important thing is that you approach these interactions with respect — everything else falls into place!</p>
<p>In closing, CONGRATULATIONS TO YOU! The fact that you are reading this article and showing an interest in this topic demonstrates your allyship, and your willingness to help make positive changes within the queer community. Thank you for being who you are! Let’s help our colleagues, clients, friends, and loved ones in the queer community feel welcome to be the best versions of themselves, too!</p>
<p>The post <a href="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/">7 Ways to Be a Better LGBTQ+ Ally at Work</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/MJ-and-Randy-and-girls-600x400-1.jpeg"/>
<post-id xmlns="com-wordpress:feed-additions:1">391440</post-id>	</item>
		<item>
		<title>Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</title>
		<link>https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 14:37:32 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWSGoldenJacket]]></category>
		<category><![CDATA[AWSPartner]]></category>
		<category><![CDATA[homepage-featured]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391430</guid>

					<description><![CDATA[<p>We’re proud to celebrate an incredible achievement: Gonzalo Munoz has earned the AWS Golden Jacket, a rare distinction held by individuals who achieve all active&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/">Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>We’re proud to celebrate an incredible achievement: Gonzalo Munoz has earned the AWS Golden Jacket, a rare distinction held by individuals who achieve all active AWS certifications simultaneously.</p>
<p>Earning the AWS Golden Jacket is a remarkable accomplishment—one that reflects deep technical expertise, persistence, and a commitment to continuous learning across the AWS ecosystem.</p>
<p>&nbsp;</p>
<p><strong>What Is the AWS Golden Jacket?</strong></p>
<p>The AWS Golden Jacket is a recognition given to individuals who hold all active AWS certifications at the same time, demonstrating expertise across the full breadth of AWS capabilities, including cloud architecture, DevOps, security, data, and machine learning.</p>
<p>Because it requires maintaining every certification concurrently, this distinction signals both depth and breadth of knowledge across AWS services and domains.</p>
<p><strong> </strong></p>
<p><strong>What This Achievement Represents</strong></p>
<p>Earning the AWS Golden Jacket reflects more than completing a set of certifications. It represents sustained focus, discipline, and the ability to operate across a rapidly evolving cloud ecosystem.</p>
<p>To reach this level, Gonzalo built and maintained expertise across a wide range of AWS services and domains, while continuously adapting as the platform evolves.</p>
<p>This includes:</p>
<ul>
<li>Mastering AWS services across architecture, security, data, and AI/ML</li>
<li>Maintaining all certifications simultaneously as they evolve and require renewal</li>
<li>Applying knowledge to real-world scenarios where design decisions impact scalability, performance, and cost</li>
<li>Staying current with new services, architectural patterns, and best practices</li>
<li>Balancing ongoing learning with day-to-day client delivery</li>
</ul>
<p>That level of commitment signals expertise that stays current as AWS continues to innovate.</p>
<p>For our clients, that translates into real value. It means working with experts who can connect capabilities across AWS services and design solutions with a clear understanding of how to align technology decisions to business outcomes.</p>
<p>&nbsp;</p>
<p><strong>Powering Our AWS Practice</strong></p>
<p>Gonzalo’s achievement reflects the strength of Perficient’s AWS practice and the expertise we bring to clients as an AWS Premier Consulting Partner.</p>
<p>Our teams deliver solutions aligned to key AWS capability areas, including:</p>
<ul>
<li>Cloud architecture and modernization</li>
<li>Data and analytics platforms</li>
<li>Security and compliance</li>
<li>Artificial intelligence and machine learning</li>
</ul>
<p>&nbsp;</p>
<p>This work is backed by:</p>
<ul>
<li>Deep, cross-functional cloud expertise</li>
<li>A strong culture of certification and continuous learning</li>
<li>Proven experience delivering complex, enterprise-scale AWS solutions</li>
<li>A focus on driving measurable business outcomes</li>
</ul>
<p><strong> </strong></p>
<p><strong>A Milestone Worth Celebrating</strong></p>
<p>The AWS Golden Jacket is a significant achievement that reflects both individual dedication and the collective strength of our AWS practice.</p>
<p>Gonzalo, congratulations on this well-earned recognition. Your expertise, curiosity, and commitment to continuous learning make a meaningful impact on our clients and our team. We’re proud to celebrate this moment and look forward to what comes next!</p>
<p>Read more about Perficient’s AWS practice <a href="https://www.perficient.com/partners/aws">here</a>.</p>
<p>The post <a href="https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/">Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/2026_PRFT_Blog_Image_1200x800_AWS_Golden_Jacket-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">391430</post-id>	</item>
		<item>
		<title>Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</title>
		<link>https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/</link>
		
		<dc:creator><![CDATA[Paul Goodrich]]></dc:creator>
		<pubDate>Wed, 03 Jun 2026 12:05:56 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391398</guid>

					<description><![CDATA[<p>In my last blog, I shared recommendations for the AEM solutions that are available for headful and headless content. I also revisited the headless problem&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/">Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In <a href="https://blogs.perficient.com/headful-or-headless-aem-revisited-for-2026/" target="_blank" rel="noopener">my last blog</a>, I shared recommendations for the AEM solutions that are available for headful and headless content. I also revisited the headless problem statement since we’re now seeing new industry drivers pushing some teams towards a headless approach. The traditional means of delivering headless via content fragments had some significant limitations compared to a headful experience. That blog also discussed how using page-based resources for headless content resolves many of these limitations. Now, let&#8217;s go over how to do it!</p>
<h2><strong>Headless Page-based Authoring Tutorial Preface</strong></h2>
<p>This tutorial assumes that you have a basic understanding of <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/universal-editor/use-cases" target="_blank" rel="noopener">Universal Editor’s purpose</a> and <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/underlying-technology/introduction-architecture" target="_blank" rel="noopener">AEM’s architecture</a>. It is also not intended to be a comprehensive solution design for the AEM-App integration nor a complete Universal Editor tutorial. Considerations like instrumentation details, caching, app security, and which authoring options are made available are beyond the scope of this tutorial.</p>
<h2>Step 1: Enable AEM Page Content for Export</h2>
<p>You can certainly use the pre-configured model JSONs of AEM Core Components. However, they have several fields that are not relevant to my downstream application, like gridClassNames and allowedComponents.</p>
<p><img decoding="async" data-attachment-id="391399" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/aem_page_content_export_enablement/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" data-orig-size="624,773" 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="AEM Page Content Export Enablement" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" class="wp-image-391399 size-full aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" alt="AEM Page Content Export Enablement" width="624" height="773" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement-242x300.png 242w" sizes="(max-width: 624px) 100vw, 624px" /></p>
<p>So instead, I prefer custom Sling Models. This gives us a granular level of control over which fields are exposed to our downstream application.</p>
<p>Start by creating a Sling Model for your Page component. Configure the @Model annotation to utilize SlingHttpServletRequest.class as an adaptable so it can serve web requests to a .model.json path and match the resourceType property to the resourceType of your Page component. Configure the @Exporter annotation to use the Jackson library and support a JSON extension for export.</p>
<p><img decoding="async" data-attachment-id="391400" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/custom_sling_model_for_aem_page_component/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" data-orig-size="624,751" 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="Custom Sling Model For AEM Page Component" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" class="size-full wp-image-391400 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" alt="Custom Sling Model for AEM Page Component" width="624" height="751" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component-249x300.png 249w" sizes="(max-width: 624px) 100vw, 624px" /></p>
<p>You’ll notice that I’ve created a getItems method that returns a list of objects. This method utilizes a custom HeadlessUtils method that looks for (<em>almost</em>) all children resources of the Page and adapts them to their matching model based on their sling:resourceType. This is very important, as we want each child component to export its JSON based on its own model, not relying solely on the model of the parent.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391401" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/custom_headlessutils_method/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" data-orig-size="623,505" 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="Custom HeadlessUtils Method" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" class="size-full wp-image-391401 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" alt="Custom HeadlessUtils Method" width="623" height="505" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method-300x243.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p>I can re-use this pattern for other container components, components like Responsive Grids or Columns that have any number, names, and types of children.</p>
<p>Then I can similarly configure Sling Models for all components that will appear on my page. The primary difference in how I configure these other component models is that they also need to be adaptable from a Resource in order to be exported by the getItems method or other resource-based retrieval.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391402" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/sling_model_configurations/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" data-orig-size="624,718" 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="Sling Model Configurations" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" class="aligncenter size-full wp-image-391402" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" alt="Sling Model Configurations" width="624" height="718" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations-261x300.png 261w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p>Once I have done that, I can load the export of any Page that uses this model as JSON.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391403" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/export_page_using_model_as_json/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" data-orig-size="623,378" 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="Export Page Using Model as JSON" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" class="aligncenter size-full wp-image-391403" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" alt="Export Page Using Model as JSON" width="623" height="378" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON-300x182.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<h2>Step 2: Consume the Page Content Downstream</h2>
<p>For this example, let’s create a small connector library to AEM using JavaScript. Ultimately this could be run server-side or client-side and rendered however I like. The purpose here is to show that regardless of what downstream app I have, I can use a simple REST-based GET to retrieve the data.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391404" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/rest-based_get/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" data-orig-size="623,526" 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="Rest Based Get" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" class="aligncenter size-full wp-image-391404" src="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" alt="Rest Based Get" width="623" height="526" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET-300x253.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p>You may notice within the code here that I’ve abstracted out the concept of a full AEM path from the rest of my application. This is because I don’t want to force the downstream application to adhere to a specific route structure. Perhaps in my app, locale is determined by the domain and not the application route.</p>
<p>Further, though I want to display published content on production, I still want to edit content in the AEM author environment before I review and publish it out. If I don’t have an “author” version of my downstream app, I need a different means to instruct the app to pull from the author environment. So I use 4 key parameters:</p>
<ol>
<li>The matching AEM base path – This comes statically from my route. I do not allow open-ended user-editable paths for security reasons.</li>
<li>(MSM support) Do I want to view the language-master or the rolled out live-copy?</li>
<li>(MSM support) What locale am I in?</li>
<li>Am I currently authoring?</li>
</ol>
<p>The latter 3 act as flags which modify the base path. These flags could come from URL parameters, session storage, cookies, etc. In my case, I use URL parameters because I do not want cached AEM content while authoring.</p>
<p>Now, in a real implementation, to access page content in an author environment, my code needs to authenticate to AEM. This can be done via a <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials" target="_blank" rel="noopener">technical account</a> (<em>preferred</em>) or <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/local-development-access-token" target="_blank" rel="noopener">temporary developer token</a>. Select one of the options linked, follow the instructions, and then come back.</p>
<p>Publish environment content is typically public and therefore does not require an authentication token.</p>
<h2>Step 3: Configure AEM to Open Pages in Universal Editor</h2>
<p>Now that I have my Page Model rendering in my downstream application, I can configure AEM to open pages of a particular path and sling:resourceType in Universal Editor. This is done by adding an OSGI configuration for the Universal Editor URL Service, which you can also read more about in <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/universal-editor/getting-started#content-paths" target="_blank" rel="noopener">Adobe’s documentation</a>.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391405" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/osgi_configuration_for_universal_editor_url_service/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" data-orig-size="597,101" 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="OGSI Configuration for Universal Editor URL Service" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" class="aligncenter size-full wp-image-391405" src="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" alt="OGSI Configuration for Universal Editor URL Service" width="597" height="101" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png 597w, https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service-300x51.png 300w" sizes="auto, (max-width: 597px) 100vw, 597px" /></p>
<p>The mappings field has two parts: the parent path for which the Universal Editor should be opened and the target downstream application domain. [parentPath:applicationDomain]</p>
<p>The resourcetypes field defines the sling:resourceTypes that should be opened in Universal Editor. In our case, this is our page component.</p>
<p>The aemDomain field signifies that the Universal Editor should be opened on the same domain as AEM. This is critical, as being on the same domain allows sharing our user’s Adobe IMS login token with Universal Editor. This login token is later used by the Universal Editor to write back our authoring changes to the JCR.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391406" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/universal_editor_opens_on_aem_domain/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" data-orig-size="624,199" 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="Universal Editor Opens On Aem Domain" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" class="aligncenter size-full wp-image-391406" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" alt="Universal Editor Opens On Aem Domain" width="624" height="199" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain-300x96.png 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p>Now authors can click the Edit button in AEM Sites Admin and have the “page” open in the context of the downstream application with Universal Editor.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391407" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/universal_editor_integrated_with_aem/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png" data-orig-size="1430,579" 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="Universal Editor Integrated with AEM" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-1024x415.png" class="aligncenter size-full wp-image-391407" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png" alt="Universal Editor Integrated with AEM" width="1430" height="579" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png 1430w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-300x121.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-1024x415.png 1024w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-768x311.png 768w" sizes="auto, (max-width: 1430px) 100vw, 1430px" /></p>
<p>This one step helps close the loop for authors. We’ve moved Universal Editor authoring as a separate domain authoring tool to integration directly with AEM. It also allows authors to continue to think about downstream app routes as “pages” in AEM even though they aren’t being rendered by AEM.</p>
<p>As an aside, you might notice that I’ve specified a /preview route in the downstream application; why did I do that? AEM doesn’t know which downstream app route to open for a given page. All it can do in this integration is pass details like the AEM content path.</p>
<p>As I said earlier, I don’t want to force my downstream application to adhere to a specific route structure. I certainly could do that; I could update the mappings field to “/content/nextDayAEM:localhost:3000/${path}”.</p>
<p>This would make the page /content/nextDayAEM/language-masters/en_us open like localhost:3000/content/nextDayAEM/language-masters/en_us instead. But now my app has to handle any number of route combinations.</p>
<p>So instead I use a common /preview path and let the downstream application figure out what route maps to the aemPath parameter and do an internal redirect, passing those 4 key parameters I identified earlier. If I’ve configured everything correctly, the downstream route + parameters should match exactly 1 AEM page.</p>
<h2>Step 4: Write Authored Content Back to AEM</h2>
<p>Now move on to instrument the downstream application for Universal Editor. This step involves loading the Universal Editor script, adding data-aue-* attributes to your downstream app components, and adding JSON configuration files. All of that really requires its own tutorial. So I’m going to <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/developing/universal-editor/react-app-editing/overview" target="_blank" rel="noopener">send you over to Adobe</a> to explain that part, but note that this example uses content fragments. The only major difference in this instrumentation for page-based resources is in the Component Definition JSON, where you should specify the plugin property as “aem” :{ “page”: {..} } instead of “aem” :{ “cf”: {..} }.</p>
<p>Now that all of that is complete, I should be able to log in to AEM and edit a “page.” As far as the authors are concerned, all that’s changed is a new page editor experience. This has far more ramifications than you might expect at first glance. Let’s review the headless challenges we identified from last week.</p>
<ol>
<li>How does an author track content downstream from the CMS? <strong>Content is now tracked 1:1 with a “page” that matches a downstream route.</strong></li>
<li>Useful AEM Page tooling is not available out of the box for Content Fragments. <strong>We’re now able to use Page-based tooling like link browsing, asset page references, link rewrites on moves, page launches, MSM, etc.</strong></li>
<li>Link checker no longer functions, as AEM does not have any inherent knowledge of the downstream routes. <strong>Though AEM can’t directly check the downstream routes, it can check AEM page-to-AEM-page links.  You can have authors link them as AEM paths via the page browser and use the same route mapper you developed in Step 3 to render the links.</strong></li>
<li>Downstream applications pull in fragments by name or by query.<strong> Whereas Content Fragments had to have unique names, Pages, due to page hierarchy, can always match the route name.</strong></li>
<li>Existing AEM authors are typically more experienced with creating and managing pages instead of content fragments. <strong>Fixed.</strong></li>
<li>It creates a platform disconnect. Authors must navigate to AEM to create Content Fragments but navigate to the downstream application or the Universal Editor to view changes in context. <strong>Universal Editor now exists on the same domain as AEM. It looks like part of AEM, not a separate tool.</strong></li>
</ol>
<p>In other words, many of the challenges we faced with a headless AEM experience are no longer relevant when we use page-based resources as the source. We’re able to leverage the strengths of traditional AEM Page Tooling because, as far as AEM and JCR are concerned, this content exists as real pages in AEM, even though all rendering can take place outside of AEM.</p>
<p>I hope this makes you as excited as I am, as Headless experiences just got a whole lot easier to manage!</p>
<h2>What&#8217;s Next?</h2>
<p>Have a tutorial you’d like to see next?  For more information on how Perficient can implement your dream digital experiences, we’d love to hear from you. We’re certified by Adobe for our proven capabilities, and we hold an <strong>Adobe Experience Manager specialization</strong> (<em>among others</em>).</p>
<h3><a href="https://www.perficient.com/contact" target="_blank" rel="noopener"><strong>Contact Perficient to start your journey</strong></a>.</h3>
<p>The post <a href="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/">Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/06/Headless_Page-based_Authoring_in_Adobe_Universal_Editor-1-1024x536.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">391398</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-06-18 17:02:37 by W3 Total Cache
-->