<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[AI Map Ontology]]></title><description><![CDATA[AI Map Ontology]]></description><link>https://ai-map-ontology.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>AI Map Ontology</title><link>https://ai-map-ontology.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 22:23:06 GMT</lastBuildDate><atom:link href="https://ai-map-ontology.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building a House with LEGO, Until You Need a Curved Roof — Workshop UI Design Principles and the Customization Ceiling]]></title><description><![CDATA[Originally published on AI Map Ontology.
You built the whole screen with LEGO and it works fine — so why does it look so cluttered, and why won't this one button do what you want?
Building a Workshop ]]></description><link>https://ai-map-ontology.hashnode.dev/building-a-house-with-lego-until-you-need-a-curved-roof-workshop-ui-design-principles-and-the-customization-ceiling</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/building-a-house-with-lego-until-you-need-a-curved-roof-workshop-ui-design-principles-and-the-customization-ceiling</guid><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 04:58:45 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/workshop-ui-design-guide-en/">AI Map Ontology</a>.</em></p>
<p><em>You built the whole screen with LEGO and it works fine — so why does it look so cluttered, and why won't this one button do what you want?</em></p>
<h2>Building a Workshop screen is a lot like building a LEGO house</h2>
<p>Building a screen in Workshop resembles building a house out of LEGO. Snap the pre-made bricks (widgets) together via their studs (variables), and you get a fairly convincing result fast, without writing a line of code. <a href="https://ontologyaimap.com/en/workshop-guide-2/">Widget placement and variable binding itself was already covered in a separate article</a>, so here we cover what comes next — <strong>why a house built entirely from LEGO can still look cluttered, and what happens when you need a brick shape that isn't in the set.</strong></p>
<h2>The instruction manual for a tidy LEGO house — official layout principles</h2>
<p>Palantir's official documentation lays out specific numeric guidelines for designing a Workshop screen.[1]</p>
<ul>
<li><strong>Keep primary actions per screen to 5 or fewer.</strong> Cram too many functional bricks into one set, and users can't tell what to click.</li>
<li><strong>Avoid more than 10 components in a single view.</strong> Pack the bricks too densely and the finished shape disappears.</li>
<li><strong>Maintain 30-40% whitespace.</strong> Even a LEGO set's product photo needs background space for the build to stand out.</li>
<li><strong>Choose a layout pattern</strong>: grid (left-to-right flow), column (top-to-bottom flow), or mixed (fixed filter panel on the left, expanding content on the right).</li>
<li><strong>Use the default typeface (Source Sans Pro) or an installed system font.</strong> A custom font silently falls back to the default if it isn't installed.</li>
<li><strong>Use shadows only to signal hierarchy.</strong> Drop shadows for important sections, inset shadows for lower priority — overuse this rule across the whole screen and the hierarchy disappears entirely.</li>
</ul>
<p>There's even a way to verify it — <strong>squint at the interface.</strong>[1] If the important elements still stand out when everything's blurry, the hierarchy is working. If everything looks the same, go back and recheck the 5-actions-or-fewer rule first.</p>
<h2>When you need a brick that isn't in the set — the customization ceiling</h2>
<p>LEGO's strength is fast assembly from a fixed set of bricks, and its weakness is exactly the same thing — a shape outside the set simply can't be built. Workshop is no different. Real reviewers' experiences land squarely on this point.</p>
<p>One reviewer working as a Palantir Foundry developer put it plainly:</p>
<blockquote>
<p>"The Workshop application could be improved because it is not very customizable"[2]</p>
</blockquote>
<p>A more specific case: a software engineer at a retail company recalled:</p>
<blockquote>
<p>"the Workshop application has some widgets inside that we wanted to modify, but when we reached out to Palantir, they informed us that it was a design decision"[2]</p>
</blockquote>
<p>In other words, a given widget's behavior isn't a bug — it's something <strong>Palantir deliberately designed that way.</strong> Once you hit that boundary, you have two options: work around it within the constraint, or move to Slate (Palantir's code-based application builder) and build the custom UI yourself.</p>
<h2>One specific wall people actually hit: URLs that won't become hyperlinks</h2>
<p>The Palantir Developer Community has a real thread documenting someone running into exactly this "brick that isn't in the set." A user had concatenated local variables into a URL string inside a Property List widget, and asked how to render it as a clickable link.</p>
<p>The response from staff member Phil-M acknowledges the limitation directly:</p>
<blockquote>
<p>"local variables can not be part of vanilla URL" ... "there is no way to display/value format the resulting string as hyperlink"[3]</p>
</blockquote>
<p>Two workarounds were offered instead.[3]</p>
<ol>
<li><strong>Use a function-based column</strong> that takes the local variables as input and concatenates the string, then have the user right-click to copy the value.</li>
<li><strong>Use a looped layout</strong> to display each object individually, then render the URL as rich-formatted text inside a Markdown widget.</li>
</ol>
<p>To carry the LEGO analogy through: when the exact brick shape you need isn't in the set, you combine two or three similar bricks to approximate it. It works, but it's a step you wouldn't have needed if that brick had existed in the first place.</p>
<h2>So how is it different from Retool or Appsmith?</h2>
<p>I looked for a discussion directly comparing Workshop to general-purpose no-code tools like Retool or Appsmith, but couldn't find one that actually compares all three. Instead, here's the structural difference based on each tool's official scope: Workshop is natively bound to the Ontology (Object Types, Link Types) and can't connect directly to an arbitrary database outside Foundry, while Retool and Appsmith connect directly to general-purpose data sources like PostgreSQL, REST, and GraphQL. This isn't a matter of one being better — it reflects that <strong>Workshop was designed from the outset for the narrower purpose of "operational screens on top of the Foundry Ontology."</strong></p>
<h2>A practical decision framework</h2>
<ol>
<li><strong>Screen doesn't respond → check the binding.</strong> Start with the Object Set variable and Active Object variable connections covered in <a href="https://ontologyaimap.com/en/workshop-guide-2/">the earlier article</a>.</li>
<li><strong>Screen works but looks cluttered → check the layout principles.</strong> Start by counting components (10 or fewer) and whitespace (30-40%).</li>
<li><strong>Can't customize something the way you want → check whether it's an intentional constraint first.</strong> Before filing a bug report, searching the official docs or community for "design decision" can save time.</li>
<li><strong>If the custom behavior is truly necessary → consider switching to Slate.</strong> When you need behavior outside Workshop's preset widgets, moving to the code-based builder is often faster in the long run than repeating workarounds.</li>
</ol>
<h2>FAQ</h2>
<p><strong>Q. Can I use custom CSS in Workshop?</strong>
Preset widget styling (shadows, padding, color emphasis) can be adjusted within configuration settings, but injecting arbitrary CSS isn't an official workflow. If you need that level of customization, Slate is the right thing to look at.</p>
<p><strong>Q. If a widget behavior is labeled a "design decision," is there no way around it?</strong>
It means it isn't officially supported — not that a workaround is always impossible. As with the URL-hyperlink case above, function columns or combining widgets differently can often achieve a similar effect.</p>
<p><strong>Q. Do I really need to follow the layout rules (5 actions or fewer, 10 components or fewer)?</strong>
They're official guidelines, not enforced rules. But once you exceed these numbers, it shows up immediately in the "squint test" — if you get feedback that a screen feels cluttered, counting against these numbers first is the fastest diagnosis.</p>
<h2>References</h2>
<p>[1] Palantir, <a href="https://palantir.com/docs/foundry/workshop/application-design-best-practices/"><em>Workshop • Application design best practices</em></a>, Foundry official documentation.</p>
<p>[2] PeerSpot, <a href="https://www.peerspot.com/questions/what-needs-improvement-with-palantir-foundry"><em>What needs improvement with Palantir Foundry?</em></a> — real user reviews (Palantir Foundry Developer, Software Engineer III).</p>
<p>[3] Palantir Developer Community, <a href="https://community.palantir.com/t/help-with-dynamic-variables-and-urls-in-property-list-widget-in-palantir-workshop/4337/6"><em>Help with Dynamic Variables and URLs in Property List Widget in Palantir Workshop</em></a> — real user question + Palantir staff (Phil-M) response.</p>
<p>[4] Palantir, <a href="https://palantir.com/docs/foundry/workshop/concepts-widgets/"><em>Workshop • Widgets</em></a>, Foundry official documentation.</p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/workshop-guide-2/">Why Your Screen Won't React No Matter How Nicely You Arrange the Widgets</a></li>
<li><a href="https://ontologyaimap.com/en/ontology-manager-guide-2/">You Know the Ontology Theory, But What Do You Actually Click — A Practical Guide to Ontology Manager</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[What Is Palantir Apollo? Automatic Updates Are Great — Until They Aren't]]></title><description><![CDATA[Originally published on AI Map Ontology.

The evaluation section of this article — specifically the points about automatic updates occasionally breaking things, and support responsiveness compared to ]]></description><link>https://ai-map-ontology.hashnode.dev/what-is-palantir-apollo-automatic-updates-are-great-until-they-aren-t</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/what-is-palantir-apollo-automatic-updates-are-great-until-they-aren-t</guid><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 04:45:49 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/palantir-apollo-guide-2/">AI Map Ontology</a>.</em></p>
<blockquote>
<p>The evaluation section of this article — specifically the points about automatic updates occasionally breaking things, and support responsiveness compared to local vendors — is <strong>the author's personal, first-hand opinion</strong>, not something drawn from official sources. The description of Apollo's architecture and features is based on Palantir's official documentation.</p>
</blockquote>
<h2>What Apollo Does</h2>
<p>Palantir Apollo is the <strong>continuous delivery (CD) platform</strong> that automatically deploys and manages Palantir software (Foundry, AIP, and more) across multiple environments. It spans cloud, on-premises, and even air-gapped environments completely disconnected from the internet. Official documentation describes it as "a constraint-based autonomous deployment platform that operates above the infrastructure layer across heterogeneous environments."[1]</p>
<p>Apollo originally started as Palantir's internal tool for deploying its own 500+ independently-released microservices across 300+ environments,[2] and today it's also used by customers to manage Palantir software — and their own applications running on top of it — in their own environments.</p>
<h2>Hub and Spoke — Environments Pull Updates, the Center Doesn't Push Them</h2>
<p>Apollo's core architecture splits environments into two types: Hub and Spoke.[3]</p>
<ul>
<li><strong>Hub</strong>: The central repository holding product definitions, deployment settings, security/governance policies, and release promotion rules.</li>
<li><strong>Spoke</strong>: The actual target environments where software runs (Kubernetes clusters, edge hardware, and so on). Each Spoke runs a local orchestration agent that reports status back to the Hub.</li>
</ul>
<p>The key design decision here is that Apollo is <strong>pull-based, not push-based</strong>.[3] Instead of a central system pushing out "deploy now" the way traditional CI/CD does, each Spoke's local agent continuously checks the current environment state against constraints — schema versions, inter-service dependencies — and requests and applies upgrades on its own once conditions are met. A single Hub can manage multiple Spokes, and a Hub can even manage itself.</p>
<h2>Release Channels — Not Every Environment Updates at the Same Pace</h2>
<p>Apollo doesn't push a release to everything at once. Instead, releases are promoted through stages called <strong>Release Channels</strong>.[4] Product teams define the promotion criteria between channels, and each environment subscribes to the channel that matches its stability requirements — test clusters typically subscribe to an earlier channel, production clusters to one that's already been validated.</p>
<p>Promotion isn't scheduled on a fixed timeline — it's driven by whether <strong>constraints are satisfied</strong>.[1][4]</p>
<ul>
<li>Are inter-service and schema dependency requirements met?</li>
<li>Has the release passed its defined soak-time and health-check/SLO thresholds?</li>
<li>Does it fit the environment's maintenance window and compliance approval rules?</li>
</ul>
<p>Apollo also integrates with monitoring tools (Prometheus, Datadog, etc.) so that if real error rates cross a threshold, promotion can automatically pause or the deployment can be blocked outright.[1]</p>
<h2>What Happens When Something Goes Wrong? Recalls and Rollbacks</h2>
<p>The most important question for any automated deployment system is: how do you undo a bad release? Apollo handles this through a process called a <strong>Recall</strong>.[5]</p>
<p>A recall can be triggered three ways:</p>
<ul>
<li>Manually, by an engineer</li>
<li>Automatically, through continuous vulnerability scanning (CVE detection) and similar checks</li>
<li>Programmatically, via an API call from an external service</li>
</ul>
<p>Once a recall fires, Apollo halts further propagation of that release and remediates affected environments using one of several <strong>roll-off strategies</strong>.[6]</p>
<ul>
<li><strong>Roll Forward</strong>: Upgrade to a newer, non-recalled release that satisfies all constraints</li>
<li><strong>Allow Downgrade (Rollback)</strong>: If rolling forward isn't possible, revert to a known-good earlier release at or above a specified minimum version</li>
<li><strong>Freeze All Version Changes</strong>: Hold the environment on its current release until a specified expiration date or a manual override</li>
<li><strong>Test Roll-off on Specific Environments</strong>: Apply the roll-off/rollback to designated test environments first, before rolling it out fleet-wide</li>
</ul>
<p>The simple fact that "recall" and "roll-off strategy" exist as official, named procedures tells you something important: <strong>automatically-deployed releases do sometimes cause real problems, and Palantir designed the system around that assumption.</strong></p>
<h2>Sometimes an Automatic Update Just... Doesn't Happen: "Blocked Update"</h2>
<p>Apollo's documentation also spells out a concrete case where automatic updates fail outright. For example, if a new Module version adds a new variable with no default value, Apollo can't automatically update that installation — it marks it as a <strong>"Blocked Update"</strong> and shows the reason why.[7] When this happens, someone with environment-editor permissions has to either fix the module definition to resolve the backward-compatibility issue, or update the installation manually.</p>
<p>This isn't something Palantir hides — it's documented, expected behavior. It also means the automation isn't trying to silently handle every case: it's designed to <strong>detect the cases it can't handle and hand them back to a human.</strong></p>
<h2>Everything From Here Is My Own Opinion</h2>
<p>Everything above was based on official documentation. From here, this is my personal take, formed from working with autonomous deployment systems like Apollo in practice.</p>
<p><strong>What's genuinely good about this</strong>: staying continuously current on patches and new capabilities is a real advantage. Nobody has to manually track versions or schedule upgrade windows, and the recall mechanism means security vulnerabilities can be addressed quickly.</p>
<p><strong>Where it gets complicated</strong>: because all of this runs automatically, something that worked fine yesterday can just stop working today. A "Blocked Update" like the one above — where the system stops itself and tells you why — is the good case. The harder case is when behavior quietly changes underneath you, and it takes real time to figure out why.</p>
<p>And in that moment, I've found it's hard to expect the kind of fast, hands-on, in-person response you might get from a domestic vendor. That's not a statement that Palantir's support is bad — it's more that <strong>a global SaaS vendor's support model is simply designed differently</strong> from the "we'll send someone over right away" approach common among local system integrators and solution vendors. There's a real trade-off between the benefits you get from automation and the responsiveness of having a person immediately available when something breaks — and I think that's the realistic way to look at it.</p>
<h2>Summary</h2>
<ul>
<li>Apollo is a pull-based CD platform that automatically deploys and manages Palantir software across multiple environments.</li>
<li>The Hub holds policy; each Spoke checks its own conditions and pulls upgrades on its own.</li>
<li>Release channels and constraint-based promotion mean not every environment updates at the same pace.</li>
<li>The existence of an official recall/roll-off process means Palantir's own design assumes automated deployment can fail.</li>
<li>(Personal opinion) Staying continuously current is a real benefit — but it comes bundled with unexpected changes from automation, and comparatively slower hands-on support.</li>
</ul>
<h2>References</h2>
<p>[1] Palantir, <a href="https://www.palantir.com/docs/apollo/core/introduction"><em>Introduction • Apollo</em></a>, official Apollo documentation.</p>
<p>[2] Palantir Blog, <a href="https://blog.palantir.com/palantir-apollo-powering-saas-where-no-saas-has-gone-before-7be3e565c379"><em>Palantir Apollo: Powering SaaS where no SaaS has gone before</em></a>, official Palantir blog.</p>
<p>[3] Palantir, <a href="https://www.palantir.com/docs/apollo/apollo-getting-started/introduction-welcome"><em>Apollo • Getting Started</em></a>, official Apollo documentation.</p>
<p>[4] Palantir, <a href="https://www.palantir.com/docs/apollo/core/overview"><em>Overview • Core • Apollo</em></a>, official Apollo documentation.</p>
<p>[5] Palantir, <a href="https://www.palantir.com/docs/apollo/recalling-releases/overview"><em>Recalling Releases • Overview</em></a>, official Apollo documentation.</p>
<p>[6] Palantir, <a href="https://www.palantir.com/docs/apollo/recalling-releases/roll-off-strategies"><em>Recalling Releases • Roll-off strategies</em></a>, official Apollo documentation.</p>
<p>[7] Palantir, <a href="https://www.palantir.com/docs/apollo/managing-modules/update-module-installation"><em>Managing Modules • Update a Module installation</em></a>, official Apollo documentation.</p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/palantir-foundry-architecture-overview-2/">Palantir Foundry Architecture Overview: From Connect to AI in Five Layers</a></li>
<li><a href="https://ontologyaimap.com/en/foundry-contour-guide/">You Ran a Pivot Table and the Numbers Look Wrong — A Practical Guide to Foundry Contour</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[We Threw Everything in the Box, Then Couldn't Find What We Needed — 6 Real-World Ontology Design Mistakes]]></title><description><![CDATA[Originally published on AI Map Ontology.
Throw everything into one box in a warehouse, and you'll have to search the whole box just to find what you need — the same is true for ontology design
Nobody ]]></description><link>https://ai-map-ontology.hashnode.dev/we-threw-everything-in-the-box-then-couldn-t-find-what-we-needed-6-real-world-ontology-design-mistakes</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/we-threw-everything-in-the-box-then-couldn-t-find-what-we-needed-6-real-world-ontology-design-mistakes</guid><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 03:01:58 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/ontology-design-mistakes-examples-en/">AI Map Ontology</a>.</em></p>
<p><em>Throw everything into one box in a warehouse, and you'll have to search the whole box just to find what you need — the same is true for ontology design</em></p>
<h2>Nobody gets ontology design right on the first try</h2>
<p>Most ontology work starts the same way: "let's just get the data in first." The problem is that the Object Types pile up like a disorganized warehouse — nobody knows what's where, or how many places the same thing is stored in duplicate.</p>
<p>Palantir's official documentation catalogs these mistakes as eight anti-patterns.[1] We already covered "the same customer called by three different names" in <a href="https://ontologyaimap.com/en/ontology-naming-strategy-2/">a separate article</a>, so here we'll walk through the other six that show up constantly in practice.</p>
<h2>Mistake 1: Everything goes in one box — The God Object</h2>
<p>Imagine a warehouse box labeled "Assets" that holds equipment, software licenses, real estate documents, and financial instrument contracts all at once. It looks convenient — open one box and everything's there — but finding anything specific means digging through the whole box.</p>
<p>That's the exact example the official docs use: cramming equipment, software licenses, real estate, and financial products into a single <code>Asset</code> Object Type.[1] This is the <strong>God Object</strong>. The fix is splitting each into its own Object Type, and modeling shared attributes (like "is this depreciable") through an interface instead.[1]</p>
<h2>Mistake 2: Dragging along ETL leftovers — The Kitchen Sink</h2>
<p>Nobody moving house keeps the shipping label and tape scraps from the box. But this happens constantly in ontology work. Migrating CRM data often drags along ETL processing metadata like <code>_crm_extracted_at</code> and <code>_crm_batched_at</code> as if they were real attributes.[1]</p>
<p>These fields mean nothing to a business user — they're just technical residue from the source system. The official principle is clear: <strong>only deliberately curate attributes that carry clear business or technical value.</strong>[1]</p>
<h2>Mistake 3: Hammering everything with the same tool — The Golden Hammer</h2>
<p>Even a well-organized person can wreck a warehouse by using the wrong tool — a screwdriver where a nail is needed, a hammer where a screw should be turned. In ontology work, this shows up as confusing <strong>Action Types</strong> with <strong>pipelines</strong>.</p>
<p>The official docs cite implementing bulk batch processing as an Action Type, or the reverse — handling decisions that need human judgment through an automated pipeline.[1] The rule: <strong>Action Types for human decisions, pipelines for automated bulk transformations.</strong>[1] Pick the tool that matches the nature of the work.</p>
<h2>Mistake 4: Ten handles on one drawer — Action Sprawl</h2>
<p>A drawer with ten handles is more confusing than helpful. In ontology terms, this is creating separate actions for "update employee name," "update email," and "update department" individually.[1]</p>
<p>In practice, name, email, and department changes usually happen together as part of one real business operation. The official fix: <strong>bundle related changes into a single business-operation-level action.</strong>[1]</p>
<h2>Mistake 5: Keeping every old receipt on the shelf — The Time Machine</h2>
<p>Some teams treat every revision of a contract — v1, v2, v3 — as a separate object sitting side by side on the shelf. The official docs call modeling each version of an entity as a separate object the <strong>Time Machine</strong> anti-pattern.[1]</p>
<p>The fix is keeping the contract as a single object, while managing history through a linked history Object Type or time-series attributes.[1] Treat each version as a new entity, and answering "what's the currently valid contract?" means hunting for the latest version every single time.</p>
<h2>Mistake 6: Labeling the shelf just "Stuff" — The Misnomer</h2>
<p>Label a warehouse shelf "Item," "Thing," or "Type," and nobody will know what's on it later. In ontology terms, this is using vague names like <code>Item</code>, <code>value</code>, <code>type</code>, or <code>date</code>.[1] The official docs recommend <strong>specific, human-readable names</strong> like <code>Product</code>, <code>monetaryValue</code>, or <code>orderPlacedDate</code> instead.[1]</p>
<h2>So how do you actually organize the warehouse — 4 design principles</h2>
<p>The official documentation lays out design principles in priority order to avoid the mistakes above.[2]</p>
<ol>
<li><strong>Model reality, not the source data.</strong> Instead of copying a CSV row as-is (an "OrderData" object mixing customer name, email, and product SKU together), separate order, customer, and product into distinct entities.[2]</li>
<li><strong>Refactor on the third repetition.</strong> The same structure appearing twice might be coincidence — by the third time, it's a pattern. Consolidate it or abstract it through an interface immediately.[2]</li>
<li><strong>Protect the core, keep it open for extension.</strong> Instead of continuously bolting new attributes onto an existing Object Type, extend through a separate linked Object Type or interface. If equipment suddenly needs certification data, don't touch <code>Equipment</code> itself — link a new <code>Equipment Certification</code> object instead.[2]</li>
<li><strong>Favor composition over deep inheritance.</strong> When something has multiple natures at once (a building that's also a schedulable resource, for instance), don't build a deep inheritance chain — combine multiple interfaces like <code>Building</code> and <code>SchedulableResource</code> instead.[2]</li>
</ol>
<p>The official docs are explicit that these are guidelines, not absolute law.[2] Under deadline pressure, implementing a reasonable interim solution with a documented improvement plan is fine — but naming, semantic clarity, and security are the things not worth compromising on.[2]</p>
<h2>FAQ</h2>
<p><strong>Q. Do I need to fix all of these anti-patterns right now?</strong>
No. The official docs acknowledge real tradeoffs. Compromising on some points for performance or deadlines is fine, but naming conventions and semantic clarity are much harder to fix later, so it's worth getting those right early.</p>
<p><strong>Q. How do I know if I have a God Object?</strong>
Ask yourself: "does this Object Type represent two or more genuinely different things in the real world?" If you're calling both equipment and software licenses "Asset," you already have a God Object.</p>
<p><strong>Q. How do I tell Kitchen Sink metadata from metadata I actually need?</strong>
The test is whether you can explain the attribute's meaning to a business user. "When this record was batch-processed" means something to an engineer, but nothing to the person actually using the data.</p>
<h2>References</h2>
<p>[1] Palantir, <a href="https://www.palantir.com/docs/foundry/ontology/ontology-anti-patterns"><em>Ontology design: Anti-patterns</em></a>, Foundry official documentation.</p>
<p>[2] Palantir, <a href="https://www.palantir.com/docs/foundry/ontology/ontology-best-practices"><em>Ontology design: Best practices</em></a>, Foundry official documentation.</p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/ontology-naming-strategy-2/">Customer and Client Living in the Same Ontology — What Happens When Naming Breaks Down</a></li>
<li><a href="https://ontologyaimap.com/en/ontology-core-components-object-link-action-type-and-functions-explained/">I Tore Apart Ontology's 7 Components Using a Single Piece of Equipment</a></li>
<li><a href="https://ontologyaimap.com/en/ontology-manager-guide-2/">You Know the Ontology Theory, But What Do You Actually Click — A Practical Guide to Ontology Manager</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[You Ran a Pivot Table and the Numbers Look Wrong — A Practical Guide to Foundry Contour]]></title><description><![CDATA[Originally published on AI Map Ontology.
You run a pivot table and the numbers look wrong — the problem is usually somewhere upstream, not in the last step
If you're used to Excel pivot tables, Contou]]></description><link>https://ai-map-ontology.hashnode.dev/you-ran-a-pivot-table-and-the-numbers-look-wrong-a-practical-guide-to-foundry-contour</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/you-ran-a-pivot-table-and-the-numbers-look-wrong-a-practical-guide-to-foundry-contour</guid><category><![CDATA[palantir]]></category><category><![CDATA[data analytics]]></category><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 02:54:38 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/foundry-contour-guide/">AI Map Ontology</a>.</em></p>
<p><em>You run a pivot table and the numbers look wrong — the problem is usually somewhere upstream, not in the last step</em></p>
<h2>If you're used to Excel pivot tables, Contour feels familiar at first</h2>
<p>"Isn't this just an Excel pivot?" is a common first reaction to Foundry's Contour. On the surface, it looks similar — drag in data, pick rows and columns, choose an aggregation, get a table.</p>
<p>Used it for a while and there's a real difference. An Excel pivot table shows you one final result. How it got there, what got filtered out along the way, stays hidden. Contour doesn't work that way — every filter, every join, every aggregation becomes its own standalone step called a <strong>Board</strong>.[1] Think of a conveyor belt: raw material (your source data) moves down the line through a series of stations (boards), changing shape at each one, and you can stop at any station to check what the product looks like right now.</p>
<h2>25 boards, sorted into four groups</h2>
<p>The official Contour docs define 25 board types.[1] You don't need to memorize all of them — grouped by role, they break down like this.</p>
<table>
<thead>
<tr>
<th>Group</th>
<th>Representative boards</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Filter &amp; clean</strong></td>
<td>Filter, Expression, Edit Columns, Transform Data</td>
<td>Drop rows that don't match, or compute/clean/mask columns</td>
</tr>
<tr>
<td><strong>Combine</strong></td>
<td>Join, Link, Enrich, Set Math</td>
<td>Merge with another dataset, or run set operations (intersect/subtract)</td>
</tr>
<tr>
<td><strong>Aggregate &amp; visualize</strong></td>
<td>Pivot Table, Grid, Histogram, Time Series, Chart, Heatmap, Calculation</td>
<td>Count, group, and chart the numbers</td>
</tr>
<tr>
<td><strong>Verify &amp; finish</strong></td>
<td>Table, Summary, Export</td>
<td>View the current result as a table, check row counts, or download</td>
</tr>
</tbody></table>
<p>On the conveyor belt, you'd pass through "filter &amp; clean" stations first, merge with other material at a "combine" station if needed, then shape the final output at an "aggregate &amp; visualize" station. You can slot a "verify" board in after any of them.</p>
<h2>When the numbers look wrong, don't start by suspecting the last board</h2>
<p>When a pivot result looks off, the instinct is to stare at the last board (the Pivot Table). The official guidance actually points the other way.[2]</p>
<ul>
<li><strong>Drop a Table board in between steps.</strong> Check whether a new column computed correctly, or whether the previous board did what you intended.</li>
<li><strong>Switch to the table panel.</strong> Click "Show table" to see the actual data as you apply each board — especially useful while writing Expressions.</li>
<li><strong>Add a Histogram board.</strong> A quick look at how values distribute across categories tells you fast whether your filtering actually did what you meant.</li>
</ul>
<p>In other words: put an inspector at every intermediate station on the belt, not just the end. If you only look at the final output and call it "wrong," finding where on the belt it actually went wrong takes much longer.</p>
<h2>Pivot tables sometimes only show you part of the picture</h2>
<p>Here's something that surprises a lot of practitioners. Per the official FAQ, pivot table previews cap out at <strong>the first 100 columns or 10,000 values</strong> to protect performance.[3] The aggregation itself runs over the full dataset — what's capped is just what's displayed. To see the complete result, you switch to the "Switch to pivoted data" option to move to the fully-computed pivot.[3] Worth knowing on top of that: exporting directly from Contour hits a <strong>100,000-row limit</strong>[3] — for anything larger, save the result as a Dataset instead of using Export.</p>
<h2>What real users are actually frustrated by</h2>
<p>Palantir's developer community has a thread that goes right at the pivot table board's limitations. One user put it plainly:</p>
<blockquote>
<p>"The pivot widget today is very limited in its capability — sometimes it is more pain than the value it delivers."[4]</p>
</blockquote>
<p>The specific complaints:[4]</p>
<ul>
<li>No support for calculated fields</li>
<li>Can't filter or sort within the result itself</li>
<li>Reusing a value is so awkward you often have to inspect the browser console to copy it</li>
<li>No row-level conditional formatting</li>
</ul>
<p>A Workshop team developer responded in the thread with plans for "more pivot table investment in T3 and 2025."[4] So this isn't a case of users missing something — it's a real, acknowledged gap. If you need a calculated field today, the practical workaround is building the calculated column with an Expression board <em>before</em> the Pivot Table board, not inside it.</p>
<h2>A practical order to work through it</h2>
<ol>
<li><strong>Decide what question you're answering before you start.</strong> "Compare this metric by region" and "trace why this number looks wrong" call for different first boards.</li>
<li><strong>Stack filter/clean boards first.</strong> Narrow to what you need with Filter and Expression before you aggregate. Doing it in the other order makes it easy to forget a condition you meant to apply.</li>
<li><strong>Bracket aggregation boards with Table or Histogram checks.</strong> This matters especially for boards like Pivot Table where the preview only shows part of the result — confirming the data going in is correct saves time tracing problems later.</li>
<li><strong>Build calculated fields with Expression before the pivot board, not after.</strong> Knowing upfront that the pivot board itself has no calculated-field feature saves you from redesigning midway through.</li>
<li><strong>If the result exceeds 100K rows or needs to be reused, save it as a Dataset instead of exporting.</strong> Most people discover the export limit only after hitting it.</li>
</ol>
<h2>Where this leaves things</h2>
<p>The real difference between Contour and an Excel pivot table isn't the feature list — it's the structure. Excel shows you one result; Contour stacks the path to that result as boards you can pause at, one at a time. The pivot table board's functional limits (no calculated fields, partial previews) are real constraints, not user error — knowing them upfront and routing around them with an Expression board is the path of least friction in practice.</p>
<h2>FAQ</h2>
<p><strong>Q. Do I need to know SQL to use Contour?</strong>
No. Most analysis is doable point-and-click by stacking boards. Complex calculations do require learning Contour's own expression language.</p>
<p><strong>Q. My pivot result looks wrong — what should I check first?</strong>
Start with the filter and join boards before the pivot, using Table boards to verify each — not the final pivot board itself. The root cause is usually upstream of the aggregation.</p>
<p><strong>Q. Is there really no way to add a calculated field?</strong>
Not inside the Pivot Table board itself. Building the calculated column with an Expression board before stacking the pivot board gets you effectively the same result.</p>
<p><strong>Q. Contour is slow on large data — what helps?</strong>
The official FAQ recommends using well-partitioned datasets instead of raw CSVs and materializing intermediate results as datasets so your analysis path doesn't get too long.[3]</p>
<h2>References</h2>
<p>[1] Palantir, <a href="https://www.palantir.com/docs/foundry/contour/boards-descriptions"><em>Contour • Boards • Board descriptions</em></a>, Foundry official documentation.</p>
<p>[2] Palantir, <a href="https://www.palantir.com/docs/foundry/contour/boards-verify-results"><em>Contour • Boards • Verify results</em></a>, Foundry official documentation.</p>
<p>[3] Palantir, <a href="https://www.palantir.com/docs/foundry/contour/faq"><em>Contour • FAQ</em></a>, Foundry official documentation.</p>
<p>[4] Palantir Developer Community, <a href="https://community.palantir.com/t/pivot-widget-rework-to-make-it-excel-equivalent/1119/1"><em>Pivot Widget: Rework to make it excel equivalent</em></a> — real user forum thread with an official Palantir response.</p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/foundry-explore-analyze-visualize-2/">Object Explorer vs Quiver vs Contour: Choosing the Right Tool</a></li>
<li><a href="https://ontologyaimap.com/en/palantir-insight-guide/">I Tracked a Churn-Risk Customer Without Writing a Line of Code — A Practical Guide to Palantir Insight</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[Blueprint or Finished Building? Ontology vs. Knowledge Graph, Explained]]></title><description><![CDATA[Originally published on AI Map Ontology.
A blueprint is not the same thing as the building it describes
Ontology vs. Knowledge Graph — What's the Actual Difference?
We get this question a lot. Both te]]></description><link>https://ai-map-ontology.hashnode.dev/blueprint-or-finished-building-ontology-vs-knowledge-graph-explained</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/blueprint-or-finished-building-ontology-vs-knowledge-graph-explained</guid><category><![CDATA[palantir]]></category><category><![CDATA[knowledge graph]]></category><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 02:46:46 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/ontology-vs-knowledge-graph-explained/">AI Map Ontology</a>.</em></p>
<p><em>A blueprint is not the same thing as the building it describes</em></p>
<h2>Ontology vs. Knowledge Graph — What's the Actual Difference?</h2>
<p>We get this question a lot. Both terms involve "understanding data through relationships," so they can sound like two names for the same thing. The short answer:</p>
<blockquote>
<p>Ontology (the blueprint) + real data = Knowledge Graph (the finished building)</p>
</blockquote>
<p>An ontology defines <strong>what kinds of things exist and how they're allowed to relate</strong> — "Book → has author → Author." A knowledge graph fills that structure with real data to create <strong>a web of concrete facts</strong> — "<em>To Kill a Mockingbird</em> → has author → Harper Lee."[1] You can build a knowledge graph without an ontology, but the ontology is what keeps new data connecting consistently as it comes in.</p>
<h2>So why did Palantir dust off an old philosophy term for this?</h2>
<p>Here's where it gets more confusing. The "ontology" this blog keeps writing about — Palantir's — isn't quite the same as the academic ontology just described either.</p>
<p>The traditional Semantic Web ontology is defined with standards like RDF and OWL, and it's read-oriented: query → reasoning → result, then it's done.[2] That's like looking at a blueprint and asking "what's on the third floor?"</p>
<p>Palantir's ontology goes a step further. On top of the Semantic layer, it adds a Kinetic (execution) layer — so instead of stopping at lookup, it executes real business Actions and feeds the outcome back into learning, in a loop.[2] Keep the building metaphor going: this isn't just reading the blueprint, it's wiring sensors into the building that adjust the temperature in real time, and the system learns whether that adjustment worked.</p>
<h2>Laid out side by side</h2>
<table>
<thead>
<tr>
<th></th>
<th>Academic Ontology</th>
<th>Knowledge Graph</th>
<th>Palantir Ontology</th>
</tr>
</thead>
<tbody><tr>
<td>Role</td>
<td>Blueprint — defines what kinds exist</td>
<td>Finished building — a web of concrete facts</td>
<td>A building wired with sensors — executes and learns</td>
</tr>
<tr>
<td>Standard</td>
<td>RDF, OWL</td>
<td>Ontology + instance data</td>
<td>Object Type / Link Type / Action Type</td>
</tr>
<tr>
<td>How it runs</td>
<td>Query → reason → result (stops)</td>
<td>Query → result</td>
<td>Execute → record → learn (loops)[2]</td>
</tr>
<tr>
<td>Typical question</td>
<td>"Is this relationship logically valid?"</td>
<td>"What books did Harper Lee write?"</td>
<td>"What should we execute right now for this at-risk customer?"</td>
</tr>
</tbody></table>
<p>These three aren't competitors — they overlap. Palantir's ontology has, internally, the same web of Objects (instances) and Links (relationships) a knowledge graph has; it just has an Action layer for execution sitting on top of that.</p>
<h2>It clicks faster next to RDB</h2>
<p>We've already compared this to relational databases in <a href="https://ontologyaimap.com/en/rdb-vs-ontology-query-comparison-en/">RDB Joins vs. Ontology Traversal</a>, using a corporate-card credit limit lookup as the example. That same logic extends cleanly to knowledge graphs.</p>
<ul>
<li><strong>RDB</strong>: recalculates relationships via JOIN every time. Works without a blueprint, but you re-solve the same question from scratch every run.</li>
<li><strong>Knowledge graph</strong>: relationships are pre-stored as a graph. Finding "who's connected to whom" is much faster.</li>
<li><strong>Ontology (the blueprint)</strong>: defines why those relationships exist in the first place and which kinds of things can connect, so the knowledge graph grows consistently.</li>
<li><strong>Palantir ontology</strong>: adds "so what do we do about it right now" on top of all that.</li>
</ul>
<p>Stack them like steps: storage (RDB) → a web of relationships (knowledge graph) → the design rules for that web (ontology) → execution on top of that web (Palantir's ontology).</p>
<h2>Where people trip up in practice</h2>
<p><strong>"We already have a knowledge graph, so we don't need an ontology"</strong> is a common misconception. A knowledge graph without an ontology (design rules) means the same concept gets a different name every time your data grows — exactly the problem covered in <a href="https://ontologyaimap.com/en/ontology-naming-strategy-2/">our ontology naming strategy piece</a>.</p>
<p><strong>"We built the ontology, so the knowledge graph comes automatically"</strong> is also wrong. A blueprint with no data in it can't answer anything. The ontology is the frame; the knowledge graph is the work of actually filling that frame with data.</p>
<p><strong>Treating "Palantir's ontology" as identical to the academic term will get you into trouble with AIP.</strong> When Palantir's docs use the word "reasoning," it's often used in a broader sense than pure logical inference — it usually includes data-driven judgment and Action execution too.</p>
<h2>Where this leaves things</h2>
<p>An ontology is the blueprint; a knowledge graph is the building built from it. Palantir's ontology goes one step further, wiring that building with sensors so it executes and learns. This isn't a question of which one is "better" — it depends on whether the problem in front of you is "defining what exists," "finding what's connected," or "deciding what to do about it right now."</p>
<h2>FAQ</h2>
<p><strong>Q. Can I have an ontology without a knowledge graph?</strong>
Technically yes, but it's not very useful on its own. The ontology only defines rules — the actual data you query or analyze lives in the knowledge graph (the instances). Rules with no data behind them aren't actionable.</p>
<p><strong>Q. Is a graph database like Neo4j an ontology?</strong>
No. A graph database is the storage technology (the container) a knowledge graph lives in; the ontology is the set of meaning-rules for the data inside it. You can use a graph DB without an ontology, but then you're just accumulating data without rules.</p>
<p><strong>Q. Can I build an "executing ontology" without Palantir?</strong>
Not exclusively — you can bolt a separate workflow-automation or action-execution layer onto an ontology/knowledge graph yourself and get something similar. What's different about Palantir is that it ships all three layers — meaning, execution, and learning — built into one platform by default.</p>
<h2>References</h2>
<p>[1] Enterprise Knowledge, <a href="https://enterprise-knowledge.com/whats-the-difference-between-an-ontology-and-a-knowledge-graph/"><em>What's the Difference Between an Ontology and a Knowledge Graph?</em></a></p>
<p>[2] Pebblous, <a href="https://blog.pebblous.ai/project/CURK/ontology/palantir-vs-classic-ontology/en/"><em>What Is Palantir Ontology? — 5 Key Differences from Classic Ontology</em></a></p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/rdb-vs-ontology-query-comparison-en/">RDB Joins vs. Ontology Traversal: The Same Question, Two Data Approaches</a></li>
<li><a href="https://ontologyaimap.com/en/what-is-palantir-ontology/">What Is Palantir Ontology? A Practitioner's Explanation</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[Pipeline Builder: How Far to Push No-Code Before Switching to Code]]></title><description><![CDATA[Originally published on AI Map Ontology.
A business user drags and drops the pipeline together on screen, and IT just snaps in one piece of code — a nice picture, but you still need to check where tha]]></description><link>https://ai-map-ontology.hashnode.dev/pipeline-builder-how-far-to-push-no-code-before-switching-to-code</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/pipeline-builder-how-far-to-push-no-code-before-switching-to-code</guid><category><![CDATA[palantir]]></category><category><![CDATA[data-engineering]]></category><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 02:38:30 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/pipeline-builder-vs-code-repositories-when-to-switch/">AI Map Ontology</a>.</em></p>
<p><em>A business user drags and drops the pipeline together on screen, and IT just snaps in one piece of code — a nice picture, but you still need to check where that nice picture stops holding up</em></p>
<h2>Somewhere between IKEA and a woodshop</h2>
<p>There are two ways to build a data pipeline in Foundry: click-and-assemble <strong>Pipeline Builder</strong>, and hand-written Python/SQL in <strong>Code Repositories</strong>. Think of it as the difference between IKEA furniture and a local woodshop. IKEA gives you fixed parts and an instruction sheet — anyone can assemble it fast, but you can't make a shape that isn't in the parts list. A woodshop will carve whatever you want, but it takes longer and isn't something just anyone can do.</p>
<p>Palantir's own docs describe the two as "complementary, and built to work together to provide solutions for all pipelining needs."[1] True enough. But the question that actually comes up in practice is more specific: "I want business users to keep building this pipeline themselves. But one particular stage needs iterative computation, or has to call an external API, or the data shape changes every run — do I move the whole thing to code, or can I just carve out that one piece?" This piece works out where that line actually sits, using the official docs, real threads from Palantir's own developer community forum, and real user reviews.</p>
<h2>What Pipeline Builder is actually good at</h2>
<p>Pipeline Builder's stated goal is "building production-grade data pipelines without using code."[2] Its biggest strength is collaboration — in the docs' own words, "users who code and users who do not code can collaborate jointly on a pipeline workflow."[2]</p>
<p>The interface is graph- and form-based, giving real-time feedback (suggesting join keys, column type casts) as you work. Under the hood it runs on both Spark and Flink, so it handles batch and streaming alike.[2] Operations split into "expressions" (one column in, one column out) and "transforms" (whole table in, whole table out) — everything from basic filters, joins, pivots, and aggregations to geospatial joins, k-means clustering, and regex parsing, with over 500 built-in functions.[3] The IKEA catalog, in other words, is a thick one.</p>
<h2>But it looks different from the builder's chair</h2>
<p>It's convenient for the person using the furniture (the business user), but not necessarily for the person assembling it (the developer). On the review site PeerSpot, one principal consultant put it this way: "low-code tools are great for fast development, but highly customized workflows sometimes still require engineering workarounds or deeper technical implementation."[4] Another reviewer noted: "if I get stuck with the drag-and-drop nature of Pipeline Builder, it is going to be more difficult to migrate that to a different platform."[4]</p>
<p>Palantir's own developer community forum echoes the same thing. One user, discussing ontology design, wrote:</p>
<blockquote>
<p>"In our organization, we prefer using the pipeline builder over the code builder despite its limitations (e.g., lack of IDE tooling for refactoring, difficulty in copying and adapting code, and easier transform creation in code)."[5]</p>
</blockquote>
<p>That's exactly the tension. Collaboration with business users gets easier, while the actual builder's own tools — refactoring, code reuse — get more constrained.</p>
<h2>Four moments where you need the woodshop</h2>
<p>Pulling together the official docs and real community forum threads, the places where the IKEA parts genuinely run out narrow down to four.</p>
<table>
<thead>
<tr>
<th>What it can't do</th>
<th>Why</th>
<th>Real example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Iterative/recursive computation</strong></td>
<td>Foundry's build orchestration layer is built to prevent circular structures outright — a detected circular dependency fails the branch check.[6] Pipeline Builder only runs on a one-directional graph (a DAG)</td>
<td>Can't build a recursive algorithm that keeps recalculating until a condition is met, or graph traversal that walks up a structure to trace a path (e.g., tracing a BOM)</td>
</tr>
<tr>
<td><strong>Data whose shape changes every run</strong></td>
<td>Every transform has to follow a schema fixed in advance — it's strongly typed, so a pipeline where column count, names, or types shift at runtime isn't something the tool is built for</td>
<td>Official forum answer from a Palantir team member: "Pipeline Builder requires you to define your columns upfront because all of our functions are strongly typed. We automatically limit the functions and conditions you can choose based on your schema, so we must know the schema upfront."[7]</td>
</tr>
<tr>
<td><strong>Deeply nested data</strong></td>
<td>Basic JSON/XML parsing works, but irregular structures — arrays nested inside arrays several layers deep — can hit real expressive limits</td>
<td>Real forum report: nesting an array inside another array produced a String in the output instead of an Array — a genuine limitation bordering on a bug[8]</td>
</tr>
<tr>
<td><strong>External APIs and custom integrations</strong></td>
<td>Only sandboxed, pre-built nodes are available — there's no way to call an arbitrary external HTTP API or plug in a custom library mid-pipeline</td>
<td>Forum question, "What's the best way to do geocoding in Foundry?" Official answer: "there is currently no way of doing this in a first class way" — the workaround was code[9]</td>
</tr>
</tbody></table>
<p>These four categories are what you get whether you dissect the single official doc ("Considerations: Pipeline Builder and Code Repositories") or run an independent web survey through Gemini — both converge on almost the same four items. When the vendor's own framing and an independently-run survey land on the same conclusion, that's a stronger signal than either alone.</p>
<p>One thing worth being precise about: "can't build loops" isn't unique to Pipeline Builder. A Code Repositories branch fails the same build check if it introduces a circular dependency.[6] That's because Foundry's dataset build system is one-directional at the platform level, full stop. What you <em>can</em> do is write a <code>while</code> loop or a recursive function <em>inside</em> a single Python transform — Pipeline Builder's declarative graph simply has no syntax to express that kind of procedural repetition at all. That's the real difference.</p>
<h2>Palantir's own comparison table</h2>
<p>Here's the official feature comparison table, as Palantir publishes it.[1]</p>
<table>
<thead>
<tr>
<th></th>
<th>Pipeline Builder</th>
<th>Code Repositories</th>
</tr>
</thead>
<tbody><tr>
<td>Recommended use</td>
<td>Production pipelines for organizations, cross-team collaboration</td>
<td>Specialized code-based transforms to add to a pipeline</td>
</tr>
<tr>
<td>Build interface</td>
<td>Graph and form-based</td>
<td>Web-based IDE</td>
</tr>
<tr>
<td>Supported languages</td>
<td>No code required</td>
<td>Python, SQL, Java, Mesa</td>
</tr>
<tr>
<td>Reusability</td>
<td>Copy and paste complete pipelines or stages</td>
<td>Reuse utility functions/libraries, copy code between files</td>
</tr>
<tr>
<td>Type safety</td>
<td>Strongly typed — errors flagged immediately</td>
<td>Code-based — errors surface at build time</td>
</tr>
<tr>
<td>Filesystem/API access</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>Debug</td>
<td>Type-safe, instant preview at each step</td>
<td>Debugger and REPL support</td>
</tr>
</tbody></table>
<p>Palantir's official recommendation: "build your pipeline design in Pipeline Builder," and only "in cases where users require specialized code-based logic not available in Pipeline Builder" should Code Repositories be used to build that one stage.[1] The examples the docs give for "specialized logic" line up almost exactly with the four categories above — API calls, custom libraries, code-based logical concepts.[1]</p>
<p>The important part is that the two are fully interoperable. A dataset built in Code Repositories can be used directly as input to a Pipeline Builder pipeline, and vice versa — meaning you can slot a single code-built stage anywhere in the pipeline: front, middle, or end.[1] Schedules and health checks are managed as one unit across the whole pipeline in Data Lineage, regardless of which tool built which stage.[1] It's the same as snapping a custom-carved drawer, made at the woodshop, into a piece of IKEA furniture — the furniture is still one piece of furniture.</p>
<h2>A practical order to work through it</h2>
<ol>
<li><strong>Start in Pipeline Builder, full stop.</strong> For standard ETL — filtering, joining, aggregating, type casting, regex cleanup — Pipeline Builder is the default. There's no reason to give up collaboration speed and type safety before you've hit a real wall.</li>
<li><strong>Only drop to code when you hit one of the four.</strong> Does it need iteration, a schema that shifts at runtime, deeply nested data, or an external API? If none of those apply, there's no reason to write code.</li>
<li><strong>Carve out just that piece — don't rebuild the whole pipeline.</strong> Rather than migrating the entire pipeline to code, build the problem stage alone in Code Repositories and slot it into the existing Pipeline Builder pipeline. That's the officially recommended pattern, not a compromise.</li>
<li><strong>If the graph gets huge (roughly 100+ nodes), reconsider the structure.</strong> This isn't a number from a specific official source, but it tracks with the PeerSpot observation that "highly customized workflows sometimes still require engineering workarounds." Pipeline Builder isn't broken at that point — it's that readability and debuggability degrade past a certain size, and that's when splitting into modules or moving part of it to code pays off.</li>
</ol>
<h2>Where this leaves things</h2>
<p>Pipeline Builder and Code Repositories aren't competitors — they split the work. If business users and developers need to work on the same screen, Pipeline Builder is the default, and the friction developers feel there (no IDE tooling, hard to reuse code) is a real, existing tradeoff. But "it can't do loops" isn't a reason to move an entire pipeline to code. Carving out just the stage that hits one of the four limits — iteration, dynamic schema, nested data, external APIs — is both the officially recommended approach and, in practice, the one with the least friction.</p>
<h2>FAQ</h2>
<p><strong>Q. Is there any way to fake a loop inside Pipeline Builder?</strong>
Window and aggregation functions like "Aggregate over window" or "Rollup" can substitute for some repetitive patterns — running totals, ranking, and similar.[3] But real recursion or looping that has to keep recalculating based on a condition simply isn't in the declarative graph's vocabulary — that has to move to Code Repositories.</p>
<p><strong>Q. If I slot in one Code Repositories stage in the middle, does schedule/health-check management get more complicated?</strong>
No. Per the official docs, regardless of which tool built which part, the whole pipeline can be scheduled and health-checked as one unit through Data Lineage.[1] Mixed tooling doesn't mean split management.</p>
<p><strong>Q. How do I know if my data actually has a dynamic schema?</strong>
If your column structure varies by source system, or the output columns need to change based on the data content at runtime, that's dynamic. If the source is fixed and you can define the column list ahead of time, Pipeline Builder is enough.</p>
<p><strong>Q. Is the "100 nodes" threshold an official Palantir guideline?</strong>
No. It's a practical rule of thumb that came out of a Gemini web survey run while researching this piece, not a number written anywhere in Palantir's documentation. The real threshold depends on pipeline complexity and team experience — treat it as a reference point, not a rule.</p>
<h2>References</h2>
<p>[1] Palantir, <a href="https://www.palantir.com/docs/foundry/building-pipelines/considerations-pb-cr"><em>Building pipelines • Considerations: Pipeline Builder and Code Repositories</em></a>, Foundry official documentation.</p>
<p>[2] Palantir, <a href="https://www.palantir.com/docs/foundry/pipeline-builder/overview"><em>Pipeline Builder • Overview</em></a>, Foundry official documentation.</p>
<p>[3] Palantir, <a href="https://www.palantir.com/docs/foundry/pipeline-builder/transforms-overview"><em>Pipeline Builder • Transforms • Overview</em></a>, Foundry official documentation.</p>
<p>[4] PeerSpot, <a href="https://www.peerspot.com/products/palantir-foundry-reviews"><em>Palantir Foundry Reviews</em></a> — real user reviews (principal consultant, data engineer, and others).</p>
<p>[5] Palantir Developer Community, <em>Creating link types between Pipeline Builder owned object types and object types not owned by Pipeline Builder</em>, community.palantir.com — real forum post.</p>
<p>[6] Palantir, <a href="https://www.palantir.com/docs/foundry/building-pipelines/development-best-practices"><em>Building pipelines • Best practices • Development best practices</em></a>, Foundry official documentation — on circular dependencies and loop prevention.</p>
<p>[7] Palantir Developer Community, <em>Dealing with dynamic schema's in pipeline builder</em>, community.palantir.com — official Palantir team response.</p>
<p>[8] Palantir Developer Community, <em>Nested array problem</em>, community.palantir.com — real user bug report.</p>
<p>[9] Palantir Developer Community, <em>What's the best way to do geocoding in Foundry?</em>, community.palantir.com — real user question and answer.</p>
<h2>Keep reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/foundry-data-pipelines-with-code/">Foundry Data Pipelines: Pipeline Builder vs. Code Repository</a></li>
<li><a href="https://ontologyaimap.com/en/ai-fde-palantir-aip-complete-guide/">Palantir Gave the FDE Role to an AI Too — The Complete Guide to AIP's 'AI FDE'</a></li>
<li><a href="https://ontologyaimap.com/en/palantir-foundry-architecture-overview-2/">Palantir Foundry Architecture Overview: From Connect to AI in Five Layers</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[AI's Next Advantage Is the Meaning of Data]]></title><description><![CDATA[Originally published on AI Map Ontology.
Moving beyond productivity gains to customer value — the semantic layer and Ontology
What This Article Argues
Organizations are already deploying AI to draft d]]></description><link>https://ai-map-ontology.hashnode.dev/ai-s-next-advantage-is-the-meaning-of-data</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/ai-s-next-advantage-is-the-meaning-of-data</guid><category><![CDATA[palantir]]></category><category><![CDATA[Artificial Intelligence]]></category><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sat, 05 Sep 2026 00:57:14 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/ai-data-semantics-competitive-advantage-2/">AI Map Ontology</a>.</em></p>
<p><em>Moving beyond productivity gains to customer value — the semantic layer and Ontology</em></p>
<h2>What This Article Argues</h2>
<p>Organizations are already deploying AI to draft documents, search for information, write code, and handle customer inquiries faster. Real productivity gains from this are already being documented.</p>
<p>But processing work faster doesn't, by itself, create new value for customers.</p>
<p>Customers feel the difference when AI finds meaning inside company data and turns that meaning into the next action.</p>
<ul>
<li>Instead of just answering fast after a problem occurs, AI catches it before it happens.</li>
<li>Instead of sending every customer the same message, AI offers the help each one actually needs right now.</li>
<li>Instead of stopping at a status report, AI tells you what to do next.</li>
<li>Instead of relying only on a staff member's experience, AI drives consistent, data-backed action.</li>
</ul>
<p>Here's the flow in one line:</p>
<blockquote>
<p>Adopt AI → Improve productivity → Understand the meaning of data → Make better decisions → Take real action → Value customers actually feel</p>
</blockquote>
<p>The hardest part here isn't getting AI to produce an answer. It's understanding precisely what your data means, and using that meaning to choose an action that isn't wrong.</p>
<p>That's why DB metadata, data dictionaries, semantic layers, and Ontology matter. These aren't just data-cleanup chores — they're the foundation that turns an AI's answer into customer value.</p>
<p>Below is a short summary of the whole argument, followed by a detailed walkthrough of why the meaning of data matters and how to build toward it.</p>
<h2>Summary First</h2>
<h3>Where We're Headed</h3>
<table>
<thead>
<tr>
<th>AI use today</th>
<th>AI use we're expanding toward</th>
</tr>
</thead>
<tbody><tr>
<td>Speeding up writing, search, coding, and support replies</td>
<td>Discovering the meaning behind customer situations and changes in the data</td>
</tr>
<tr>
<td>Reducing repetitive staff work and processing time</td>
<td>Suggesting better judgment calls and next actions</td>
</tr>
<tr>
<td>Internal productivity as the main win</td>
<td>Preventing/solving customer problems and creating new customer value</td>
</tr>
</tbody></table>
<h3>Five Key Points</h3>
<p><strong>1. AI's productivity effect is already visible.</strong>
There are documented cases of AI cutting processing time and raising output in writing, development, and customer support.</p>
<p><strong>2. But productivity gains alone don't add up to customer value.</strong>
The value customers feel is created when AI finds meaning in data and turns it into better judgment and real action.</p>
<p><strong>3. The starting point is DB metadata and a data dictionary.</strong>
AI can only read your company's data properly once the meaning of tables, columns, codes, units, and dates is spelled out precisely.</p>
<p><strong>4. Reaching customer value requires a semantic layer and Ontology.</strong>
A semantic layer manages official metrics and calculation logic in one place; Ontology connects business concepts and relationships across systems. Together they keep AI from having to keep guessing when a DB description alone isn't enough.</p>
<p><strong>5. The closer AI gets to driving customer-facing action, the more validation and control matter.</strong>
Use approved data and rules, keep evidence for every result, and start with human approval before automating only the workflows you've verified.</p>
<h3>The One-Sentence Conclusion</h3>
<blockquote>
<p>Establish DB metadata and a data dictionary as the baseline, then build a semantic layer and Ontology on top of it to turn the meaning of your data into accurate judgment and execution.</p>
</blockquote>
<h2>The Detailed Case</h2>
<h3>AI's First Win Showed Up as "Speed"</h3>
<p>Generative AI has already shown clear potential in repetitive knowledge work.</p>
<p>A study of roughly 5,000 customer support agents found that agents using an AI assistant resolved about 14% more customer issues per hour.[1] In a controlled experiment with 95 developers, GitHub found that the group using Copilot completed a given development task 55% faster on average.[2]</p>
<p>These numbers don't transfer identically to every company and every task — the effect varies by task type and user experience. But the direction is already clear: AI is useful for speeding up work like this:</p>
<ul>
<li>Drafting and summarizing documents</li>
<li>Searching for and organizing information</li>
<li>Writing code and automating repetitive tasks</li>
<li>Suggesting support replies</li>
<li>Writing meeting notes and reports</li>
</ul>
<p>The value at this stage is mainly doing the same work faster. It cuts internal hours and cost, and frees staff to focus more on judgment and problem-solving.</p>
<p>That's a real win. But from a customer's point of view, it may not be enough on its own. What matters to a customer isn't that the company can write a report faster — it's whether their own problem gets solved faster, whether they get a more relevant suggestion, and whether an inconvenience or risk gets resolved before it becomes one.</p>
<h2>Customer Value Is Created When Data Turns Into Action</h2>
<p>For AI to actually help a customer, it has to go beyond answering a question.</p>
<p>Say an analysis flags a customer as high-risk for churn.</p>
<p>Showing that result on a dashboard changes nothing for the customer by itself. Value only appears once the process continues:</p>
<ol>
<li>Identify which customer has the problem.</li>
<li>Understand why the problem occurred.</li>
<li>Choose the right action for that customer.</li>
<li>Notify the responsible person, or have the system execute the action.</li>
<li>Confirm the problem was actually resolved.</li>
</ol>
<p>Customer value shows up only when the chain runs all the way through.</p>
<ul>
<li>Catching a likely shipping delay early and notifying the customer</li>
<li>Spotting a recurring failure signal and acting before service goes down</li>
<li>Recommending the next feature or product that fits how the customer is actually using the service</li>
<li>Detecting a churn signal in a contract and providing the right support</li>
<li>Anticipating a stock shortage and adjusting inventory before an order fails</li>
</ul>
<p>In other words, the next step in using AI isn't generating more answers — it's finding meaning in the data and connecting that meaning to judgment and execution.</p>
<h2>But the "Meaning" of Data Is Hard to Read From the DB Alone</h2>
<p>Suppose a user asks:</p>
<blockquote>
<p>"Find customers whose service usage has dropped recently and who are at risk of churning."</p>
</blockquote>
<p>To answer this, AI needs to know:</p>
<ul>
<li>Does "customer" mean a signed-up account, or a paying contract customer?</li>
<li>Does "usage drop" mean logins, feature usage, or transaction volume?</li>
<li>Compared to what period, and by how much, does a drop count as risk?</li>
<li>How should a temporary usage dip caused by an outage or holiday be handled?</li>
<li>When multiple accounts belong to one client company, how should they be grouped?</li>
<li>How should already-cancelled customers or test accounts be excluded?</li>
</ul>
<p>AI can't reliably infer these rules just from table and column names in the database. Without that information, it will construct the most plausible-sounding rule it can.</p>
<p>If a wrong analysis only ends up in a report, a person has a chance to catch and correct it. But once the analysis result feeds directly into a customer notification, a pricing offer, a sales outreach, or a service restriction, the impact of a wrong interpretation of meaning gets much bigger.</p>
<p>The closer AI gets to taking action, the more the accuracy and validation of data meaning matters.</p>
<h2>The First Thing You Can Do: Give Your Database a Good Manual</h2>
<p>The most realistic starting point is building solid DB metadata and a proper data dictionary.</p>
<p>Metadata is, simply put, information about your data. A data dictionary is a reference that documents what tables, columns, codes, and business terms mean.</p>
<p>For example, it manages things like:</p>
<ul>
<li>What each table and column means</li>
<li>Which data source is the official, authoritative one</li>
<li>The reference point for dates and the unit for amounts</li>
<li>What each status code means</li>
<li>When data was last updated, and who owns it</li>
<li>Which data should or shouldn't be used together</li>
</ul>
<p>When this documentation is solid, AI can find and understand your data far more accurately.</p>
<p>If your data structure is simple and doesn't involve many calculation rules, a well-maintained metadata layer and dictionary alone can already get you meaningful results. You don't need to build a large Ontology from day one.</p>
<h2>Reaching Customer Value Requires a Semantic Layer and Ontology</h2>
<p>Even when every column's meaning is documented in a data dictionary, AI still has to make judgment calls on its own.</p>
<p>For example, to find "customers at risk of churning," AI may have to decide, on its own:</p>
<ul>
<li>Which customer table to use</li>
<li>Which data to use to calculate usage</li>
<li>How to reconcile customer IDs across multiple systems</li>
<li>What time window and threshold define churn risk</li>
<li>Which customers and exceptions to exclude</li>
</ul>
<p>If you leave this judgment to AI every single time, you can get a different answer to the same question on different days.</p>
<p>A semantic layer turns your most-used metrics and calculations into official, fixed rules.</p>
<ul>
<li>Official metric: usage decline rate over the last 30 days</li>
<li>Population: valid, paying contract customers</li>
<li>Comparison: average usage over the prior 30 days</li>
<li>Exclusions: test accounts, service outage periods</li>
<li>Customer join key: contract customer ID</li>
<li>Risk threshold: usage down 40% or more</li>
</ul>
<p>This lets AI use an approved metric instead of inventing a new churn definition every time.</p>
<p>Ontology organizes the business concepts and relationships scattered across multiple systems — customers, accounts, contracts, services, usage activity. For example, it makes relationships like "one client company can have multiple accounts," "an account belongs to one contract," and "usage activity is tied to a specific service" understandable to a machine.</p>
<h2>DB Documentation Is the Starting Point; the Semantic Layer and Ontology Are the Next Step</h2>
<table>
<thead>
<tr>
<th>Category</th>
<th>DB metadata / dictionary</th>
<th>Semantic layer / Ontology</th>
</tr>
</thead>
<tbody><tr>
<td>In plain terms</td>
<td>A manual for your data</td>
<td>A map of official calculations and business relationships</td>
</tr>
<tr>
<td>What it mainly tells you</td>
<td>What tables, columns, and codes mean</td>
<td>How metrics are calculated, and how data and concepts correctly connect</td>
</tr>
<tr>
<td>What AI does with it</td>
<td>Reads the documentation and constructs calculations/SQL</td>
<td>Selects from approved metrics and relationships</td>
</tr>
<tr>
<td>Where it fits best</td>
<td>Data is simple, centered on one system</td>
<td>Multiple systems, with complex metrics and relationships used together</td>
</tr>
<tr>
<td>Advantage</td>
<td>Fast to start, low overhead</td>
<td>Makes judgment and calculation far more consistent</td>
</tr>
<tr>
<td>Watch out for</td>
<td>AI guesses at any rule that's missing</td>
<td>Needs more design effort and ongoing maintenance</td>
</tr>
</tbody></table>
<p>You don't have to pick one or the other.</p>
<blockquote>
<p>DB metadata and a dictionary are the baseline. To understand customers well enough to drive action, you need a semantic layer and Ontology built on top of that baseline.</p>
</blockquote>
<p>The two layers do genuinely different jobs. The semantic layer owns "which number gets calculated with which formula and which data." Ontology owns "how customers, accounts, contracts, services, and activity relate to each other." One creates consistency in calculation; the other connects meaning across your data.</p>
<p>So the target structure this article proposes is:</p>
<ol>
<li>Use DB metadata and a dictionary to document the basic meaning of your data.</li>
<li>Use a semantic layer to manage official metrics, formulas, and correct data joins.</li>
<li>Use Ontology to connect business concepts and relationships across systems.</li>
<li>Use validation and access control to make sure these rules actually hold in real execution.</li>
</ol>
<p>If your data is simple, building a large Ontology first just adds management overhead. On the flip side, if you're trying to connect data across systems to actually change customer behavior but only provide column-level documentation, AI will keep having to guess at the calculations and relationships that matter most.</p>
<h2>The Safeguards You Need as You Move From Answering to Acting</h2>
<p>Adopting Ontology or a semantic layer doesn't make things automatically safe. The rules you define have to actually be wired into the real execution path.</p>
<p><strong>Check before executing</strong></p>
<ul>
<li>Did it use approved data and official metrics?</li>
<li>Did it join the data the correct way?</li>
<li>Were the customer, time window, and exclusion conditions applied correctly?</li>
<li>Were privacy and access permissions respected?</li>
<li>Is there an unusually large query or a dangerous command in here?</li>
</ul>
<p><strong>Keep the result and its evidence together</strong></p>
<ul>
<li>What data was used?</li>
<li>Which formula and criteria were applied?</li>
<li>How did AI interpret the question?</li>
<li>What parts of the result are uncertain?</li>
<li>What action was actually taken?</li>
</ul>
<p><strong>Automate high-stakes execution in stages</strong></p>
<p>Start by having AI recommend an action and a person approve it. Expand the scope of automatic execution only for repeated workflows where accuracy and impact have been thoroughly verified. Keep stronger validation and approval steps around decisions involving pricing, contracts, service restrictions, or sensitive information.</p>
<h2>What the Evidence Outside Our Company Shows</h2>
<p>There's evidence that providing business meaning and data relationships can improve the accuracy of data queries.</p>
<ul>
<li>Snowflake reported plain Claude 3.5 Sonnet averaging 57% across four datasets, versus Cortex Analyst — which includes a semantic model — averaging 78%.[3]</li>
<li>A 2026 arXiv preprint reported that adding business-semantics documentation improved accuracy by 17–23 percentage points across three models, on 100 questions over a single retail dataset.[4]</li>
<li>On Spider 2.0, which covers realistic enterprise data work, an o1-preview-based coding agent's success rate topped out at 21.3%.[5]</li>
</ul>
<p>These numbers come from different datasets and evaluation conditions, so they can't be used directly as an accuracy forecast for your own company. But two directions are clear:</p>
<ol>
<li>Even AI that performs well in a clean environment struggles with complex enterprise data.</li>
<li>Providing business meaning and official relationships reduces how much AI has to guess.</li>
</ol>
<h2>How to Actually Get Started</h2>
<p><strong>1. Pick questions where customer value is high</strong></p>
<p>Choose questions you can turn into real action, not just questions that are easy to answer.</p>
<ul>
<li>Who is likely to churn?</li>
<li>What signals appear before a recurring failure happens?</li>
<li>Which customers need what kind of support or offer?</li>
<li>Can we reduce order failures or shipping delays proactively?</li>
</ul>
<p><strong>2. Document the meaning of the data each question needs</strong></p>
<p>Review the metadata and dictionary for the relevant databases, and fill in the official data source, units, code values, date conventions, ownership, and the correct join method.</p>
<p><strong>3. Build the semantic layer and Ontology</strong></p>
<p>In the semantic layer, define the formulas and exclusion conditions for customer metrics, usage, and risk signals. In Ontology, define the relationships among customers, accounts, contracts, services, and usage activity. Build outward from the business area with the highest customer value rather than trying to cover the entire company at once.</p>
<p><strong>4. Test judgment and execution on a small scope</strong></p>
<p>Prepare 30–50 real business questions with known correct answers and measure accuracy. Start by having AI recommend the next action to a staff member, and automate only the workflows where effectiveness and safety have been confirmed.</p>
<p><strong>5. Measure success by customer outcomes</strong></p>
<p>Don't just track document-writing time or AI usage volume.</p>
<ul>
<li>Did customer problem-resolution time go down?</li>
<li>Did you prevent outages and inconveniences ahead of time?</li>
<li>Did churn or order failures decrease?</li>
<li>Did the relevance of recommendations and customer satisfaction improve?</li>
<li>Did wrong judgment calls and unnecessary outreach decrease?</li>
</ul>
<p>AI's ultimate performance should be judged by the change it creates for customers — not by how many answers it generated.</p>
<h2>Conclusion — Better Action, Not More Answers</h2>
<p>Using AI to speed up writing, search, coding, and support is a good starting point, and it delivers real productivity gains. But if you stop there, AI stays a tool that does existing work faster.</p>
<p>The next step is to find the meaning of customers and business inside your company's data precisely, and connect that meaning to better judgment and execution.</p>
<p>A realistic path looks like this:</p>
<blockquote>
<p>Establish DB metadata and a dictionary as the baseline. Build a semantic layer on top to unify official metrics and calculations, and build Ontology to connect business concepts and relationships across systems. Then carry that meaning system through to validated execution, so customers experience a real result.</p>
</blockquote>
<p>What we should be aiming for isn't an AI that produces more answers. It's an AI that genuinely understands a customer's situation and helps take the right action at the right moment.</p>
<h2>References</h2>
<p>[1] E. Brynjolfsson, D. Li and L. R. Raymond, <em>Generative AI at Work</em>, NBER Working Paper 31161.</p>
<p>[2] GitHub, <em>Research: quantifying GitHub Copilot's impact on developer productivity and happiness</em>.</p>
<p>[3] Snowflake, <em>Agentic Semantic Model Improvement: Elevating Text-to-SQL Performance</em>, Cortex Analyst official documentation.</p>
<p>[4] M. Rumiantsau and I. Fokeev, <em>Semantic Layers for Reliable LLM-Powered Data Analytics</em>, arXiv preprint, 2026.</p>
<p>[5] Z. Lei et al., <em>Spider 2.0: Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows</em>, ICLR 2025.</p>
<h2>Keep Reading</h2>
<ul>
<li><a href="https://ontologyaimap.com/en/why-ai-doesnt-understand-company-data-2/">Why AI Doesn't Understand Company Data</a></li>
<li><a href="https://ontologyaimap.com/en/ontology-overview/">Ontology</a></li>
<li><a href="https://ontologyaimap.com/en/enterprise-ai-overview/">Enterprise AI</a></li>
</ul>
<hr />
<p><em>This article first appeared on <a href="https://ontologyaimap.com/en/">AI Map Ontology</a>, where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[Palantir Gave the FDE Role to an AI Too — The Complete Guide to AIP's 'AI FDE']]></title><description><![CDATA[Originally published on AI Map Ontology.
The human role Palantir called FDE now shares its name with an agent inside AIP
The name is confusing on purpose
We've already covered what a human FDE (Forwar]]></description><link>https://ai-map-ontology.hashnode.dev/palantir-gave-the-fde-role-to-an-ai-too-the-complete-guide-to-aip-s-ai-fde</link><guid isPermaLink="true">https://ai-map-ontology.hashnode.dev/palantir-gave-the-fde-role-to-an-ai-too-the-complete-guide-to-aip-s-ai-fde</guid><category><![CDATA[palantir]]></category><category><![CDATA[Artificial Intelligence]]></category><dc:creator><![CDATA[임정륜]]></dc:creator><pubDate>Sun, 30 Aug 2026 14:26:24 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://ontologyaimap.com/en/ai-fde-palantir-aip-complete-guide/">AI Map Ontology</a>.</em></p>
<p><em>The human role Palantir called FDE now shares its name with an agent inside AIP</em></p>
<h2>The name is confusing on purpose</h2>
<p>We've already covered what a human FDE (Forward Deployed Engineer) actually does in <a href="https://ontologyaimap.com/en/fde-vs-pi-consultant-vs-solution-architect-roles/">FDE vs. PI Consultant vs. Solution Architect</a>. Starting in November 2025, Palantir gave the same name to <strong>a feature inside AIP</strong>. If your org has AIP enabled, you'll see "AI FDE" in the sidebar — and it's not a person, it's a conversational agent.</p>
<p>The name wasn't reused by accident. What a human FDE used to do — listen to requirements in natural language, connect data, build an ontology, wire up a screen — is exactly what this agent is now positioned to do through conversation. This piece covers what it actually does, how it's matured over eight months, what order you actually move through its nine development areas, and how far you should trust it — grounded in official docs, community know-how, real user feedback, and outside critique.</p>
<p>Let's get the name itself right first. The official documentation introduces it this way:[1]</p>
<blockquote>
<p>"<strong>AI FDE</strong>, the <strong>AI-powered forward deployed engineer</strong>, is an interactive agent that operates Foundry for you through conversational commands."</p>
</blockquote>
<p>So "AI" and "FDE" aren't two separate initials bolted together — it's the human role name <strong>FDE (Forward Deployed Engineer)</strong> with <strong>AI-powered</strong> in front of it. Spelled out, the accurate reading is <strong>"AI-powered Forward Deployed Engineer."</strong></p>
<h2>What AI FDE actually does</h2>
<p>Per the official docs, AI FDE is "an interactive agent that operates Foundry for you through conversational commands."[1] The core idea is translating natural-language requests into Foundry operations, so you're not manually clicking through the platform for routine work. That covers running data transforms, managing code repositories, building and maintaining an ontology, and looking up documentation.[1]</p>
<p>It works as a closed loop: analyze intent and context → decide on the right operation → execute with native tools → explain the result.[1] Because the model executes an action, observes the outcome, and uses that feedback to decide the next step, it can carry out multi-step workflows. It supports Anthropic, OpenAI, Google, and xAI models, so you can plug in whatever LLM accounts your org already uses.</p>
<p>One design choice worth flagging: it starts with <strong>minimal context by default</strong>. The official docs frame this as guarding against "context pollution."[1] You expand what it can see by dragging in folders, datasets, or documentation yourself — it isn't handed everything up front. This ties directly into the "give it only the context and tools it needs" best practice covered below.</p>
<h2>Eight months, beta to now</h2>
<table>
<thead>
<tr>
<th>Date</th>
<th>What happened</th>
</tr>
</thead>
<tbody><tr>
<td>2025-11-17</td>
<td><strong>Beta</strong> launch for enrollments with AIP enabled[2]</td>
</tr>
<tr>
<td>2026-03-12</td>
<td>Transitioned to <strong>general availability (GA)</strong>[3]</td>
</tr>
<tr>
<td>2026-05</td>
<td>Global Branch navigation integrated with AI FDE — right-click a branch tag to open Workflow Lineage directly[4]</td>
</tr>
<tr>
<td>2026-07</td>
<td>Added <strong>Workflow Lineage graph generation</strong> — draw a resource relationship graph on the spot with a keyboard shortcut (Cmd/Ctrl+i)[5]</td>
</tr>
</tbody></table>
<p>Four months from beta to GA is a fast turnaround. Since then, updates have been smaller — mostly navigation convenience and visualization.</p>
<h2>What you can actually build — the nine modes</h2>
<p>AI FDE isn't one giant do-everything agent. It switches between nine modes depending on the task, and each mode narrows the tools and access scope it activates.[6] Pick the wrong mode, or forget to switch, and you hit the "tools got silently deselected" problem covered further down — for no obvious reason.</p>
<table>
<thead>
<tr>
<th>Mode</th>
<th>What it's for</th>
<th>What it touches</th>
</tr>
</thead>
<tbody><tr>
<td>Data Integration</td>
<td>Building or modifying data pipelines</td>
<td>Python Transforms, Pipeline Builder</td>
</tr>
<tr>
<td>Data Connection</td>
<td>Connecting data sources, managing security policy</td>
<td>Connection sources, Egress policy</td>
</tr>
<tr>
<td>Ontology Editing</td>
<td>Modeling data objects</td>
<td>Object, Link, and Action Types</td>
</tr>
<tr>
<td>Functions Editing</td>
<td>Writing ontology business logic</td>
<td>Logic, TypeScript, Python functions</td>
</tr>
<tr>
<td>Exploration</td>
<td>Read-only investigation</td>
<td>Understanding existing pipelines, objects, permissions before you touch anything</td>
</tr>
<tr>
<td>Governance</td>
<td>Managing security and access control</td>
<td>Roles/permissions, Markings, data protection audits</td>
</tr>
<tr>
<td>Machine Learning</td>
<td>Managing the ML model lifecycle</td>
<td>Training, evaluating, deploying, tuning (classification, regression, time series, etc.)</td>
</tr>
<tr>
<td>OSDK React</td>
<td>Building custom frontends</td>
<td>React apps and widgets wired to your ontology</td>
</tr>
<tr>
<td>Platform Q&amp;A</td>
<td>Guidance and general questions</td>
<td>How Foundry works, architecture explanations</td>
</tr>
</tbody></table>
<p>Separately from the mode split, AI FDE distinguishes agent-level capabilities (switching modes, asking clarifying questions, drafting a plan for review, loading docs on demand, managing context) from domain-level capabilities (filesystem operations, Notepad document management, Solution Design diagrams, executing actions against ontology objects).[6]</p>
<h2>The order you actually move through modes</h2>
<p>Going from raw source connection to a finished application, you'll typically move through modes in roughly this order.</p>
<p>Exploration -&gt; Data Connection -&gt; Data Integration -&gt; Ontology Editing -&gt; Functions Editing -&gt; OSDK React (Governance and Approval checks run alongside every step)</p>
<p><strong>Step 1 - Investigate, then connect (Exploration to Data Connection)</strong>
Start in Exploration mode to look at existing schemas and dataset structure. It's read-only, so you can survey "what's actually here" with zero risk of touching the platform. Once you've oriented yourself, move to Data Connection mode to define connectors for external databases or ERP systems (SAP ECC, etc.) and set Egress network policy.</p>
<p><strong>Step 2 - Build the pipeline and the ontology (Data Integration to Ontology Editing)</strong>
In Data Integration mode, build cleaning, deduplication, and join logic with Python Transforms or Pipeline Builder. Then switch to Ontology Editing mode to map that dataset onto Objects, Links, and Actions.</p>
<p><strong>Step 3 - Business logic and the app (Functions Editing to OSDK React)</strong>
Write the rules that run on top of your ontology in TypeScript or Python via Functions Editing mode, then move to OSDK React mode to build the app or widget that actually uses that ontology and those functions.</p>
<p>Run Governance mode alongside every stage rather than saving it for the end - checking permissions and markings as you go catches problems earlier than a single pass at the finish line.</p>
<h2>Safeguards and the official best practices</h2>
<p>Once an agent is editing your ontology and publishing functions directly, the first question is "what happens when it gets something wrong." The official docs name three safeguards.[1]</p>
<ul>
<li><strong>Permission inheritance</strong>: every action "follows the user's existing permissions" - AI FDE never operates with broader access than the person using it.</li>
<li><strong>Tool and context control</strong>: you decide what tools it can use and what information it can see.</li>
<li><strong>Validate before merging</strong>: changes go through Foundry's branching first, run through Transform Preview, Function Preview, and CI checks, and only then get merged.</li>
</ul>
<p>The official best-practices doc adds a few more operating principles:[7]</p>
<ul>
<li>Always verify generated resources before production - test transform logic against sample data, review the code</li>
<li>Only provide the context and tools a task actually needs - unnecessary access hurts both performance and security</li>
<li>Break complex work into smaller steps; validate the basic structure before adding complexity</li>
<li>Use AIP Evals to measure function performance over repeated iterations</li>
<li>Confirm any action that requires tool approval before it runs</li>
</ul>
<p>Permission inheritance and branch-based validation are sound design choices. But that's the vendor's own description of how it's built to be safe - how much you can actually trust it in a live production environment is a separate question, which we come back to below.</p>
<h2>Community know-how: the Operator Framing Convention</h2>
<p>A GitHub community library, palantir-ai-fde-library, argues you should treat AI FDE as a <strong>"deployment command executor"</strong> rather than a chat assistant.[8] Vague requests increase output uncertainty, so pinning down exact parameters - an "operator command" style - produces more deterministic results. The library targets five personas (human FDEs, data engineers, ontology owners, app developers, platform admins) and was published the same day as GA, on March 12, 2026, with prompt templates covering minimum context, required tools, expected behavior, a verification checklist, and known failure modes.</p>
<p><strong>Weak prompt (conversational)</strong>
"Connect the SAP tables and build me a customer data pipeline."</p>
<p><strong>Better prompt (Operator Framing)</strong>
Target Component: Data Integration (Python Transform)
Source Dataset: /Company/Raw/SAP_KNA1
Primary Key: KUNNR (Deduplication required)
Destination: /Company/Cleaned/Customer_Master
Expected Output: PySpark transformation script handling null values in 'NAME1'.</p>
<p>This lines up with the official "give it only the context it needs" guidance. Even complex migrations like SAP ECC to S/4HANA are documented as patterns in this library.</p>
<h2>What real users have actually run into</h2>
<p>The following comes from comments on "Getting Started with AI FDE," a demo (4.5K views) on Ontologize, an official Palantir partner channel, where Gena walks through building a data pipeline.[9] These are the friction points that don't show up in the official docs.</p>
<p>Tools silently deselect on mode switch: Switching to Exploration mode drops Workshop-related tools, so AI FDE says it "can't build this app." Workaround: right after switching modes, open the Tools menu and re-check what you actually need.</p>
<p>Long sessions slow down or stop loading: Sessions that run long eventually take forever to load, or stop loading entirely (users are still asking for a fix). Workaround: don't cram a large task into one session - save intermediate results to Notepad and continue in a fresh session.</p>
<p>Voice input auto-translates: Speaking in French still gets transcribed in English, with no way to turn auto-translation off. Workaround: use text input instead of voice when prompt accuracy in another language matters.</p>
<p>There's positive feedback too. One non-technical user said it let them "build my own app and actually get more done at work," and shared a context-management tip: write a summary to Notepad at the end of a session - which is exactly the workaround for the session-timeout problem above. Another user described hitting a format mismatch while building a clinical-trial visualization; AI FDE identified the problem and offered a fix.</p>
<p>The same channel has follow-up demos - "How an FDE Uses AI FDE to Author Ontology Functions" and "How an FDE Uses AI FDE: Building a Voice-Enabled OSDK Application" - showing Functions Editing and OSDK React mode in actual use.</p>
<p>AI FDE runs consecutive operations far faster than a human would - potentially dozens within minutes. The official best-practices doc warns this speed can expose bottlenecks in storage I/O or GPU capacity.[7] If you're planning high-frequency, parallel operations, check your platform's headroom first.</p>
<h2>The skeptical view is worth reading too</h2>
<p>A July 2026 Forbes piece rounding up criticism of Palantir's FDE model raises two points - aimed at the FDE model itself, not the AI FDE feature.[10]</p>
<p>Anaplan CEO Charlie Gottdiener argues the FDE approach is "effective for sales tactics or a quick proof-of-concept, but a problem long-term" - embedding engineers this deeply into a customer's operations creates lock-in, where the customer ends up paying indefinitely for maintenance and changes.</p>
<p>Manik Sharma of Kinaxis, a former Palantir executive, raises an execution concern: "putting 25-year-old engineers with the customer" creates problems, because they often lack the domain expertise (in his example, supply chain) needed on-site.</p>
<p>The same article cites a 2025 MIT Media Lab study finding that 95% of generative AI pilot projects fail to deliver real business value.[10] AI FDE has to avoid falling into exactly that trap - pilots that work, production that doesn't.</p>
<p>This critique targets the human FDE model, not AI FDE as a feature. But since AI FDE is explicitly trying to do what human FDEs used to do, through conversation, it's worth asking whether the same structural weaknesses - lock-in, thin domain judgment - carry over to the agent version.</p>
<h2>If you're evaluating this</h2>
<p>If you're actually considering rolling this out, this is a reasonable order to work through it.</p>
<ol>
<li>Start with Exploration and Platform Q&amp;A. Neither touches your ontology, so the risk is low. Use them to gauge answer quality first.</li>
<li>Anything that writes (Data Integration onward) goes through a branch, no exceptions. The official docs recommend it, and it's the minimum safeguard that keeps a mistake reversible.</li>
<li>Check the Tools menu right after every mode switch. This is exactly the real-user complaint above - check it before you burn time wondering why something "isn't working."</li>
<li>Write requests in Operator Framing style. Naming the target component, source, key, and destination instead of "please build me..." makes results noticeably more consistent, even within the same mode.</li>
<li>Don't expect it to replace ontology design decisions. AI FDE executes; it doesn't decide what should be an Object. Without that judgment already in place, it will just build the wrong thing quickly.</li>
</ol>
<h2>Where this leaves things</h2>
<p>AI FDE is Palantir's attempt to move the work a human FDE used to do - embedded, customized, batch-style - into an agent organized around nine modes. The design choices (permission inheritance, branch-based validation) are sound, and four months from beta to GA is fast. But since the model this feature is built on - the human FDE role - has drawn real criticism around lock-in and thin domain expertise, the "just talk to it" pitch matters less than how disciplined you are about mode switching, Operator Framing, and the branch/permission safeguards in actual use.</p>
<h2>FAQ</h2>
<p>Q. Do I need a separate license to use AI FDE?
No - it's a feature of AIP, activated by an admin on an AIP-enabled enrollment. It isn't sold separately.</p>
<p>Q. If it edits my ontology and gets something wrong, can I undo it?
The official docs recommend making changes on a branch first, then running Transform Preview and CI checks before merging. That said, this is a recommended workflow, not an enforced safeguard - whether it's actually followed is on the operating team.</p>
<p>Q. What do I do when a session's context fills up?
Only add the documents, datasets, and functions you actually need. For long-running work, write a summary to Notepad and start a fresh session, loading that Notepad back in as context - which also sidesteps the session-hanging issue users reported above.</p>
<p>Q. Is the Operator Framing Convention an official recommendation?
No. It comes from an unofficial GitHub community library. It's worth following anyway because it lines up with the official guidance to provide only the context that's actually needed.</p>
<p>Q. Does the FDE-model criticism in this article apply to the AI FDE feature itself?
Not directly. The critique quoted here targets the human FDE model - engineers embedded on-site doing custom work. But because AI FDE is moving that same working style into an agent, it's worth asking the same kind of question - lock-in, thin domain judgment - about the agent version too.</p>
<h2>References</h2>
<p>[1] Palantir, AI FDE - Overview, <a href="https://www.palantir.com/docs/foundry/ai-fde/overview">https://www.palantir.com/docs/foundry/ai-fde/overview</a>, Foundry official documentation.</p>
<p>[2] Palantir, November 2025 - Announcements, <a href="https://www.palantir.com/docs/foundry/announcements/2025-11">https://www.palantir.com/docs/foundry/announcements/2025-11</a>, Foundry official release notes.</p>
<p>[3] Palantir, March 2026 - Announcements, <a href="https://www.palantir.com/docs/foundry/announcements/2026-03">https://www.palantir.com/docs/foundry/announcements/2026-03</a>, Foundry official release notes.</p>
<p>[4] Palantir, May 2026 - Announcements, <a href="https://www.palantir.com/docs/foundry/announcements/2026-05">https://www.palantir.com/docs/foundry/announcements/2026-05</a>, Foundry official release notes.</p>
<p>[5] Palantir, July 2026 - Announcements, <a href="https://www.palantir.com/docs/foundry/announcements/2026-07">https://www.palantir.com/docs/foundry/announcements/2026-07</a>, Foundry official release notes.</p>
<p>[6] Palantir, AI FDE - Modes and skills, <a href="https://www.palantir.com/docs/foundry/ai-fde/modes-and-skills">https://www.palantir.com/docs/foundry/ai-fde/modes-and-skills</a>, Foundry official documentation.</p>
<p>[7] Palantir, AI FDE - Best practices, <a href="https://www.palantir.com/docs/foundry/ai-fde/best-practices">https://www.palantir.com/docs/foundry/ai-fde/best-practices</a>, Foundry official documentation.</p>
<p>[8] GitHub, palantir-ai-fde-library, <a href="https://github.com/s-andthat/palantir-ai-fde-library">https://github.com/s-andthat/palantir-ai-fde-library</a> - community prompt library documenting the Operator Framing Convention.</p>
<p>[9] Ontologize, Getting Started with AI FDE, <a href="https://www.youtube.com/watch?v=Ta19YD794RY">https://www.youtube.com/watch?v=Ta19YD794RY</a>, YouTube - data pipeline build demo and real-user comments.</p>
<p>[10] Steve Banker, Palantir And Forward Deployed Engineering: What Should We Believe, <a href="https://www.forbes.com/sites/stevebanker/2026/07/10/palantir-and-forward-deployed-engineering-what-should-we-believe/">https://www.forbes.com/sites/stevebanker/2026/07/10/palantir-and-forward-deployed-engineering-what-should-we-believe/</a>, Forbes, 2026-07-10.</p>
<h2>Keep reading</h2>
<ul>
<li>FDE vs. PI Consultant vs. Solution Architect: The Real Difference - <a href="https://ontologyaimap.com/en/fde-vs-pi-consultant-vs-solution-architect-roles/">https://ontologyaimap.com/en/fde-vs-pi-consultant-vs-solution-architect-roles/</a></li>
<li>Designing AI Agents and Workflows in AIP: FDE and Logic - <a href="https://ontologyaimap.com/en/designing-ai-agent-workflows-in-aip/">https://ontologyaimap.com/en/designing-ai-agent-workflows-in-aip/</a></li>
<li>Palantir Is Expensive. Here's Why We Use It Anyway - <a href="https://ontologyaimap.com/en/why-use-palantir/">https://ontologyaimap.com/en/why-use-palantir/</a></li>
</ul>
<p>This article first appeared on AI Map Ontology (<a href="https://ontologyaimap.com/en/">https://ontologyaimap.com/en/</a>), where I write practical guides on Palantir Foundry, ontology-driven architecture, and enterprise AI.</p>
]]></content:encoded></item></channel></rss>