---
title: "AI Agents and Automation: Bridging the Gap Between Agent Patterns and Business Solutions"
source: https://jingdongsun.medium.com/ai-agents-and-automation-bridging-the-gap-between-agent-patterns-and-business-solutions-461728220484
profile: Default
chars: 19922
paywall_detected: false
downloaded: 2026-06-20
---

AI Agents and Automation: Bridging the Gap Between Agent Patterns and Business Solutions

# AI Agents and Automation: Bridging the Gap Between Agent Patterns and Business Solutions

<div class="e">

<div class="e">

<span class="e"></span>

<div class="section">

<div>

<div class="em fx abh fz ga gb">

</div>

<div class="gc gd ge gf gg">

<div class="v cf">

<div class="cm bd fo fp fq fr">

<div>

# AI Agents and Automation: Bridging the Gap Between Agent Patterns and Business Solutions

<div>

<div class="speechify-ignore v ct">

<div class="speechify-ignore bd e">

<div class="v hk hl hm hn ho hp hq hr hs ht hu">

<div class="v j hu">

<div class="v hv">

<div>

<div class="bi" aria-describedby="4" aria-labelledby="4">

<div class="ba" tabindex="-1">

<a href="/?source=post_page---byline--461728220484---------------------------------------" rel="noopener follow" data-discover="true"></a>

<div class="e hw hx bu hy hz">

<div class="e ej">

<img src="https://miro.medium.com/v2/resize:fill:64:64/1*eYP-L3UXroqBzwqCViRH7Q.png" class="e fi bu bv bw db" loading="lazy" data-testid="authorPhoto" width="32" height="32" alt="Jingdong Sun" />

<div class="ia bu e bv bw em g ib fh">

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<span class="bb b bc u bg"></span>

<div class="ic v j">

<div class="v j id">

<div class="v j">

<div>

<div class="bi" aria-describedby="5" aria-labelledby="5">

<div class="ba" tabindex="-1">

<span class="bb b bc u bg"><a href="/?source=post_page---byline--461728220484---------------------------------------" class="z ab ac ey af ag ah ai aj ak al am an ie" data-testid="authorName" rel="noopener follow" data-discover="true">Jingdong Sun</a></span>

</div>

</div>

</div>

</div>

<div class="if bi">

</div>

<div class="bi">

<span class="bb b bc u bg bd"><span class="bi abn">Follow</span></span>

</div>

</div>

</div>

</div>

<div class="v j ig">

<span class="bb b bc u eb"></span>

<div class="v y">

<span testid="storyReadTime">9 min read</span>

<div class="ih ii e" aria-hidden="true">

<span class="e" aria-hidden="true"><span class="bb b bc u eb">·</span></span>

</div>

<span testid="storyPublishDate">Oct 22, 2025</span>

</div>

</div>

</div>

<div class="v ct ij ik il im in io ip iq ir is it iu iv iw ix iy">

<div class="au bt p ew ex j">

<div class="v j">

<div class="jo e">

<div class="v j jp jq">

<div class="pw-multi-vote-icon ej jr js jt ju">

<div>

<div>

<div class="bi" aria-describedby="147" aria-labelledby="147">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiBhcmlhLWxhYmVsPSJjbGFwIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS4zNy44MjggMTIgMy4yODJsLjYzLTIuNDU0ek0xMy45MTYgMy45NTNsMS41MjMtMi4xMTItMS4xODQtLjM5ek04LjU4OSAxLjg0bDEuNTIyIDIuMTEyLS4zMzctMi41MDF6TTE4LjUyMyAxOC45MmMtLjg2Ljg2LTEuNzUgMS4yNDYtMi42MiAxLjMzYTYgNiAwIDAgMCAuNDA3LS4zNzJjMi4zODgtMi4zODkgMi44Ni00Ljk1MSAxLjM5OS03LjYyM2wtLjkxMi0xLjYwMy0uNzktMS42NzJjLS4yNi0uNTYtLjE5NC0uOTguMjAzLTEuMjg4YS43LjcgMCAwIDEgLjU0Ni0uMTMyYy4yODMuMDQ2LjU0Ni4yMzEuNzI4LjVsMi4zNjMgNC4xNTdjLjk3NiAxLjYyNCAxLjE0MSA0LjIzNy0xLjMyNCA2LjcwMm0tMTAuOTk5LS40MzhMMy4zNyAxNC4zMjhhLjgyOC44MjggMCAwIDEgLjU4NS0xLjQwOC44My44MyAwIDAgMSAuNTg1LjI0MmwyLjE1OCAyLjE1N2EuMzY1LjM2NSAwIDAgMCAuNTE2LS41MTZsLTIuMTU3LTIuMTU4LTEuNDQ5LTEuNDQ5YS44MjYuODI2IDAgMCAxIDEuMTY3LTEuMTdsMy40MzggMy40NGEuMzYzLjM2MyAwIDAgMCAuNTE2IDAgLjM2NC4zNjQgMCAwIDAgMC0uNTE2TDUuMjkzIDkuNTEzbC0uOTctLjk3YS44MjYuODI2IDAgMCAxIDAtMS4xNjYuODQuODQgMCAwIDEgMS4xNjcgMGwuOTcuOTY4IDMuNDM3IDMuNDM2YS4zNi4zNiAwIDAgMCAuNTE3IDAgLjM2Ni4zNjYgMCAwIDAgMC0uNTE2TDYuOTc3IDcuODNhLjgyLjgyIDAgMCAxLS4yNDEtLjU4NC44Mi44MiAwIDAgMSAuODI0LS44MjZjLjIxOSAwIC40My4wODcuNTg0LjI0Mmw1Ljc4NyA1Ljc4N2EuMzY2LjM2NiAwIDAgMCAuNTg3LS40MTVsLTEuMTE3LTIuMzYzYy0uMjYtLjU2LS4xOTQtLjk4LjIwNC0xLjI4OWEuNy43IDAgMCAxIC41NDYtLjEzMmMuMjgzLjA0Ni41NDUuMjMyLjcyNy41MDFsMi4xOTMgMy44NmMxLjMwMiAyLjM4Ljg4MyA0LjU5LTEuMjc3IDYuNzUtMS4xNTYgMS4xNTYtMi42MDIgMS42MjctNC4xOSAxLjM2Ny0xLjQxOC0uMjM2LTIuODY2LTEuMDMzLTQuMDc5LTIuMjQ2TTEwLjc1IDUuOTcxbDIuMTIgMi4xMmMtLjQxLjUwMi0uNDY1IDEuMTctLjEyOCAxLjg5bC4yMi40NjUtMy41MjMtMy41MjNhLjguOCAwIDAgMS0uMDk3LS4zNjhjMC0uMjIuMDg2LS40MjguMjQxLS41ODRhLjg0Ny44NDcgMCAwIDEgMS4xNjcgMG03LjM1NSAxLjcwNWMtLjMxLS40NjEtLjc0Ni0uNzU4LTEuMjMtLjgzN2ExLjQ0IDEuNDQgMCAwIDAtMS4xMS4yNzVjLS4zMTIuMjQtLjUwNS41NDMtLjU5Ljg4MWExLjc0IDEuNzQgMCAwIDAtLjkwNi0uNDY1IDEuNDcgMS40NyAwIDAgMC0uODIuMTA2bC0yLjE4Mi0yLjE4MmExLjU2IDEuNTYgMCAwIDAtMi4yIDAgMS41NCAxLjU0IDAgMCAwLS4zOTYuNzAxIDEuNTYgMS41NiAwIDAgMC0yLjIxLS4wMSAxLjU1IDEuNTUgMCAwIDAtLjQxNi43NTNjLS42MjQtLjYyNC0xLjY0OS0uNjI0LTIuMjM3LS4wMzdhMS41NTcgMS41NTcgMCAwIDAgMCAyLjJjLS4yMzkuMS0uNTAxLjIzOC0uNzE1LjQ1M2ExLjU2IDEuNTYgMCAwIDAgMCAyLjJsLjUxNi41MTVhMS41NTYgMS41NTYgMCAwIDAtLjc1MyAyLjYxNUw3LjAxIDE5YzEuMzIgMS4zMTkgMi45MDkgMi4xODkgNC40NzUgMi40NDlxLjQ4Mi4wOC45NzEuMDhjLjg1IDAgMS42NTMtLjE5OCAyLjM5My0uNTc5LjIzMS4wMzMuNDYuMDU0LjY4Ni4wNTQgMS4yNjYgMCAyLjQ1Ny0uNTIgMy41MDUtMS41NjcgMi43NjMtMi43NjMgMi41NTItNS43MzQgMS40MzktNy41ODZ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIC8+PC9zdmc+)

</div>

</div>

</div>

</div>

</div>

<div class="pw-multi-vote-count e kf kg kh ki kj kk kl">

<div>

<div class="bi" aria-describedby="148" aria-labelledby="148">

<div class="ba" tabindex="-1">

5<span class="e au rf rg rh ri"></span>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="km kn e">

<div>

<div class="bi" aria-describedby="6" aria-labelledby="6">

<div class="ba" tabindex="-1">

<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiBjbGFzcz0ia3MiPjxwYXRoIGQ9Ik0xOC4wMDYgMTYuODAzYzEuNTMzLTEuNDU2IDIuMjM0LTMuMzI1IDIuMjM0LTUuMzIxQzIwLjI0IDcuMzU3IDE2LjcwOSA0IDEyLjE5MSA0UzQgNy4zNTcgNCAxMS40ODJjMCA0LjEyNiAzLjY3NCA3LjQ4MiA4LjE5MSA3LjQ4Mi44MTcgMCAxLjYyMi0uMTExIDIuMzkzLS4zMjcuMjMxLjIuNDguMzkxLjc0NC41NTkgMS4wNi42OTMgMi4yMDMgMS4wNDQgMy4zOTkgMS4wNDQuMjI0LS4wMDguNC0uMTEyLjQ4Ni0uMjg3YS40OS40OSAwIDAgMC0uMDQyLS41MThjLS40OTUtLjY3LS44NDUtMS4zNjQtMS4wNC0yLjA1N2E0IDQgMCAwIDEtLjEyNS0uNTk4em0tMy4xMjIgMS4wNTUtLjA2Ny0uMjIzLS4zMTUuMDk2YTggOCAwIDAgMS0yLjMxMS4zMzhjLTQuMDIzIDAtNy4yOTItMi45NTUtNy4yOTItNi41ODcgMC0zLjYzMyAzLjI2OS02LjU4OCA3LjI5Mi02LjU4OCA0LjAxNCAwIDcuMTEyIDIuOTU4IDcuMTEyIDYuNTkzIDAgMS43OTQtLjYwOCAzLjQ2OS0yLjAyNyA0LjcybC0uMTk1LjE2OHYuMjU1YzAgLjA1NiAwIC4xNTEuMDE2LjI5NS4wMjUuMjMxLjA4MS40NzguMTU0LjczMy4xNTQuNTU4LjM5OCAxLjExNy43MjIgMS42NTlhNS4zIDUuMyAwIDAgMS0yLjE2NS0uODQ1Yy0uMjc2LS4xNzYtLjcxNC0uMzgzLS45NDEtLjU5eiIgLz48L3N2Zz4=" class="ks" />

</div>

</div>

</div>

</div>

<div class="v j eb">

<div class="bi">

<div>

<div class="bi" aria-describedby="7" aria-labelledby="7">

<div class="ba" tabindex="-1">

<div class="bm kv e ej">

<div class="bm kv e">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Ym94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pZFlNaWQgbWVldCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7IGNvbnRlbnQtdmlzaWJpbGl0eTogdmlzaWJsZTsiPjxkZWZzPjxjbGlwcGF0aCBpZD0iX19sb3R0aWVfZWxlbWVudF8yIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHg9IjAiIHk9IjAiIC8+PC9jbGlwcGF0aD48L2RlZnM+PGcgY2xpcC1wYXRoPSJ1cmwoI19fbG90dGllX2VsZW1lbnRfMikiPjxnIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsLW9wYWNpdHk9IjAiIC8+PC9nPjwvZz48ZyBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjxnPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNMTkuMzUyODk5NTUxMzkxNiwxOSBDMTkuMzUyODk5NTUxMzkxNiwxOSAyMiwxNi4yNzI2OTkzNTYwNzkxIDIyLDE2LjI3MjY5OTM1NjA3OTEiIC8+PC9nPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiIG9wYWNpdHk9IjEiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiPjxnIG9wYWNpdHk9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSI+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0icmdiKDEyOCwxMjgsMTI4KSIgc3Ryb2tlLW9wYWNpdHk9IjEiIHN0cm9rZS13aWR0aD0iMSIgZD0iIE0xOS4zNTI4OTk1NTEzOTE2LDE5IEMxOS4zNTI4OTk1NTEzOTE2LDE5IDE2LjcwNTkwMDE5MjI2MDc0MiwxNi4yNzI2OTkzNTYwNzkxIDE2LjcwNTkwMDE5MjI2MDc0MiwxNi4yNzI2OTkzNTYwNzkxIiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNNC42NDcwOTk5NzE3NzEyNCw1IEM0LjY0NzA5OTk3MTc3MTI0LDUgNy4yOTQwOTk4MDc3MzkyNTgsNy43MjczMDAxNjcwODM3NCA3LjI5NDA5OTgwNzczOTI1OCw3LjcyNzMwMDE2NzA4Mzc0IiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNNC42NDcwOTk5NzE3NzEyNCw1IEM0LjY0NzA5OTk3MTc3MTI0LDUgMiw3LjcyNzMwMDE2NzA4Mzc0IDIsNy43MjczMDAxNjcwODM3NCIgLz48L2c+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSIgb3BhY2l0eT0iMSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PGcgb3BhY2l0eT0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIj48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJyZ2IoMTI4LDEyOCwxMjgpIiBzdHJva2Utb3BhY2l0eT0iMSIgc3Ryb2tlLXdpZHRoPSIxIiBkPSIgTTExLDQuNzcyNjk5ODMyOTE2MjYgQzExLjE0NDEwMDE4OTIwODk4NCw0Ljc3MjY5OTgzMjkxNjI2IDExLjU3NjQ5OTkzODk2NDg0NCw0Ljc3MjY5OTgzMjkxNjI2IDExLjg2NDgwMDQ1MzE4NjAzNSw0Ljc3MjY5OTgzMjkxNjI2IEMxMi4xNTMxMDAwMTM3MzI5MSw0Ljc3MjY5OTgzMjkxNjI2IDEyLjQ0MTIwMDI1NjM0NzY1Niw0Ljc3MjY5OTgzMjkxNjI2IDEyLjcyOTQ5OTgxNjg5NDUzMSw0Ljc3MjY5OTgzMjkxNjI2IEMxMy4wMTc4MDAzMzExMTU3MjMsNC43NzI2OTk4MzI5MTYyNiAxMy4zMDU5OTk3NTU4NTkzNzUsNC43NzI2OTk4MzI5MTYyNiAxMy41OTQzMDAyNzAwODA1NjYsNC43NzI2OTk4MzI5MTYyNiBDMTMuODgyNTk5ODMwNjI3NDQxLDQuNzcyNjk5ODMyOTE2MjYgMTQuMTcwODAwMjA5MDQ1NDEsNC43NzI2OTk4MzI5MTYyNiAxNC40NTkwOTk3Njk1OTIyODUsNC43NzI2OTk4MzI5MTYyNiBDMTQuNzQ3NDAwMjgzODEzNDc3LDQuNzcyNjk5ODMyOTE2MjYgMTUuMDM1OTAwMTE1OTY2Nzk3LDQuNzY3MDAwMTk4MzY0MjU4IDE1LjMyMzkwMDIyMjc3ODMyLDQuNzcyNjk5ODMyOTE2MjYgQzE1LjYxMTkwMDMyOTU4OTg0NCw0Ljc3ODM5OTk0NDMwNTQyIDE1LjkwNDUwMDAwNzYyOTM5NSw0Ljc2MzI5OTk0MjAxNjYwMiAxNi4xODcwMDAyNzQ2NTgyMDMsNC44MDY3OTk4ODg2MTA4NCBDMTYuNDY5NDk5NTg4MDEyNjk1LDQuODUwMjk5ODM1MjA1MDc4IDE2Ljc1NTE5OTQzMjM3MzA0Nyw0LjkyNTM5OTc4MDI3MzQzNzUgMTcuMDE5MTAwMTg5MjA4OTg0LDUuMDMzODk5Nzg0MDg4MTM1IEMxNy4yODMwMDA5NDYwNDQ5MjIsNS4xNDIzOTk3ODc5MDI4MzIgMTcuNTQwMDAwOTE1NTI3MzQ0LDUuMjg5MTAwMTcwMTM1NDk4IDE3Ljc3MDUwMDE4MzEwNTQ3LDUuNDU3Nzk5OTExNDk5MDIzIEMxOC4wMDA5OTk0NTA2ODM1OTQsNS42MjY1MDAxMjk2OTk3MDcgMTguMjE1OTk5NjAzMjcxNDg0LDUuODI4NzAwMDY1NjEyNzkzIDE4LjQwMTg5OTMzNzc2ODU1NSw2LjA0NTgwMDIwOTA0NTQxIEMxOC41ODc3OTkwNzIyNjU2MjUsNi4yNjI4OTk4NzU2NDA4NjkgMTguNzUyMTk5MTcyOTczNjMzLDYuNTA3NTk5ODMwNjI3NDQxIDE4Ljg4NTkwMDQ5NzQzNjUyMyw2Ljc2MDM5OTgxODQyMDQxIEMxOS4wMTk1OTk5MTQ1NTA3OCw3LjAxMzE5OTgwNjIxMzM3OSAxOS4xMjczMDAyNjI0NTExNzIsNy4yODcwOTk4MzgyNTY4MzYgMTkuMjAzODk5MzgzNTQ0OTIyLDcuNTYyNzk5OTMwNTcyNTEgQzE5LjI4MDUwMDQxMTk4NzMwNSw3LjgzODUwMDAyMjg4ODE4NCAxOS4zMjA0OTk0MjAxNjYwMTYsOC4xMjgzOTk4NDg5Mzc5ODggMTkuMzQ1MzAwNjc0NDM4NDc3LDguNDE0NDAwMTAwNzA4MDA4IEMxOS4zNzAxMDAwMjEzNjIzMDUsOC43MDA0MDAzNTI0NzgwMjcgMTkuMzUxNjAwNjQ2OTcyNjU2LDguOTkwNjk5NzY4MDY2NDA2IDE5LjM1Mjg5OTU1MTM5MTYsOS4yNzg5MDAxNDY0ODQzNzUgQzE5LjM1NDIwMDM2MzE1OTE4LDkuNTY3MDk5NTcxMjI4MDI3IDE5LjM1Mjg5OTU1MTM5MTYsOS44NTU0MDAwODU0NDkyMTkgMTkuMzUyODk5NTUxMzkxNiwxMC4xNDM2OTk2NDU5OTYwOTQgQzE5LjM1Mjg5OTU1MTM5MTYsMTAuNDMyMDAwMTYwMjE3Mjg1IDE5LjM1Mjg5OTU1MTM5MTYsMTAuNzIwMTAwNDAyODMyMDMxIDE5LjM1Mjg5OTU1MTM5MTYsMTEuMDA4Mzk5OTYzMzc4OTA2IEMxOS4zNTI4OTk1NTEzOTE2LDExLjI5NjY5OTUyMzkyNTc4MSAxOS4zNTI4OTk1NTEzOTE2LDExLjU4NDg5OTkwMjM0Mzc1IDE5LjM1Mjg5OTU1MTM5MTYsMTEuODczMjAwNDE2NTY0OTQxIEMxOS4zNTI4OTk1NTEzOTE2LDEyLjE2MTQ5OTk3NzExMTgxNiAxOS4zNTI4OTk1NTEzOTE2LDEyLjQ0OTcwMDM1NTUyOTc4NSAxOS4zNTI4OTk1NTEzOTE2LDEyLjczNzk5OTkxNjA3NjY2IEMxOS4zNTI4OTk1NTEzOTE2LDEzLjAyNjMwMDQzMDI5Nzg1MiAxOS4zNTI4OTk1NTEzOTE2LDEzLjMxNDQ5OTg1NTA0MTUwNCAxOS4zNTI4OTk1NTEzOTE2LDEzLjYwMjgwMDM2OTI2MjY5NSBDMTkuMzUyODk5NTUxMzkxNiwxMy44OTEwOTk5Mjk4MDk1NyAxOS4zNTI4OTk1NTEzOTE2LDEzLjU2Nzk5OTgzOTc4MjcxNSAxOS4zNTI4OTk1NTEzOTE2LDE0LjQ2NzQ5OTczMjk3MTE5MSBDMTkuMzUyODk5NTUxMzkxNiwxNS4zNjY5OTk2MjYxNTk2NjggMTkuMzUyODk5NTUxMzkxNiwxOC4yNDQ2MDAyOTYwMjA1MDggMTkuMzUyODk5NTUxMzkxNiwxOSIgLz48L2c+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSIgb3BhY2l0eT0iMSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PGcgb3BhY2l0eT0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIj48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJyZ2IoMTI4LDEyOCwxMjgpIiBzdHJva2Utb3BhY2l0eT0iMSIgc3Ryb2tlLXdpZHRoPSIxIiBkPSIgTTEzLDE5LjIyNzMwMDY0MzkyMDkgQzEyLjg1NTg5OTgxMDc5MTAxNiwxOS4yMjczMDA2NDM5MjA5IDEyLjQyMzUwMDA2MTAzNTE1NiwxOS4yMjczMDA2NDM5MjA5IDEyLjEzNTE5OTU0NjgxMzk2NSwxOS4yMjczMDA2NDM5MjA5IEMxMS44NDY4OTk5ODYyNjcwOSwxOS4yMjczMDA2NDM5MjA5IDExLjU1ODc5OTc0MzY1MjM0NCwxOS4yMjczMDA2NDM5MjA5IDExLjI3MDUwMDE4MzEwNTQ2OSwxOS4yMjczMDA2NDM5MjA5IEMxMC45ODIxOTk2Njg4ODQyNzcsMTkuMjI3MzAwNjQzOTIwOSAxMC42OTQwMDAyNDQxNDA2MjUsMTkuMjI3MzAwNjQzOTIwOSAxMC40MDU2OTk3Mjk5MTk0MzQsMTkuMjI3MzAwNjQzOTIwOSBDMTAuMTE3NDAwMTY5MzcyNTU5LDE5LjIyNzMwMDY0MzkyMDkgOS44MjkxOTk3OTA5NTQ1OSwxOS4yMjczMDA2NDM5MjA5IDkuNTQwOTAwMjMwNDA3NzE1LDE5LjIyNzMwMDY0MzkyMDkgQzkuMjUyNTk5NzE2MTg2NTIzLDE5LjIyNzMwMDY0MzkyMDkgOC45NjQwOTk4ODQwMzMyMDMsMTkuMjMyOTk5ODAxNjM1NzQyIDguNjc2MDk5Nzc3MjIxNjgsMTkuMjI3MzAwNjQzOTIwOSBDOC4zODgwOTk2NzA0MTAxNTYsMTkuMjIxNTk5NTc4ODU3NDIyIDguMDk1NDk5OTkyMzcwNjA1LDE5LjIzNjcwMDA1Nzk4MzQgNy44MTMwMDAyMDIxNzg5NTUsMTkuMTkzMTk5MTU3NzE0ODQ0IEM3LjUzMDQ5OTkzNTE1MDE0NjUsMTkuMTQ5NzAwMTY0Nzk0OTIyIDcuMjQ0ODAwMDkwNzg5Nzk1LDE5LjA3NDYwMDIxOTcyNjU2MiA2Ljk4MDg5OTgxMDc5MTAxNiwxOC45NjYxMDA2OTI3NDkwMjMgQzYuNzE3MDAwMDA3NjI5Mzk0NSwxOC44NTc1OTkyNTg0MjI4NSA2LjQ2MDAwMDAzODE0Njk3MywxOC43MTA4OTkzNTMwMjczNDQgNi4yMjk0OTk4MTY4OTQ1MzEsMTguNTQyMjAwMDg4NTAwOTc3IEM1Ljk5OTAwMDA3MjQ3OTI0OCwxOC4zNzM1MDA4MjM5NzQ2MSA1Ljc4Mzk5OTkxOTg5MTM1NywxOC4xNzEzMDA4ODgwNjE1MjMgNS41OTgxMDAxODUzOTQyODcsMTcuOTU0MjAwNzQ0NjI4OTA2IEM1LjQxMjE5OTk3NDA2MDA1OSwxNy43MzcxMDA2MDExOTYyOSA1LjI0Nzc5OTg3MzM1MjA1MSwxNy40OTIzOTkyMTU2OTgyNDIgNS4xMTQwOTk5Nzk0MDA2MzUsMTcuMjM5NTk5MjI3OTA1MjczIEM0Ljk4MDQwMDA4NTQ0OTIxOSwxNi45ODY3OTkyNDAxMTIzMDUgNC44NzI3MDAyMTQzODU5ODYsMTYuNzEyOTAwMTYxNzQzMTY0IDQuNzk2MTAwMTM5NjE3OTIsMTYuNDM3MjAwNTQ2MjY0NjUgQzQuNzE5NTAwMDY0ODQ5ODUzNSwxNi4xNjE1MDA5MzA3ODYxMzMgNC42Nzk1MDAxMDI5OTY4MjYsMTUuODcxNjAwMTUxMDYyMDEyIDQuNjU0Njk5ODAyMzk4NjgyLDE1LjU4NTU5OTg5OTI5MTk5MiBDNC42Mjk4OTk5Nzg2Mzc2OTUsMTUuMjk5NTk5NjQ3NTIxOTczIDQuNjQ4Mzk5ODI5ODY0NTAyLDE1LjAwOTMwMDIzMTkzMzU5NCA0LjY0NzA5OTk3MTc3MTI0LDE0LjcyMTA5OTg1MzUxNTYyNSBDNC42NDU4MDAxMTM2Nzc5Nzg1LDE0LjQzMjkwMDQyODc3MTk3MyA0LjY0NzA5OTk3MTc3MTI0LDE0LjE0NDU5OTkxNDU1MDc4MSA0LjY0NzA5OTk3MTc3MTI0LDEzLjg1NjMwMDM1NDAwMzkwNiBDNC42NDcwOTk5NzE3NzEyNCwxMy41Njc5OTk4Mzk3ODI3MTUgNC42NDcwOTk5NzE3NzEyNCwxMy4yNzk4OTk1OTcxNjc5NjkgNC42NDcwOTk5NzE3NzEyNCwxMi45OTE2MDAwMzY2MjEwOTQgQzQuNjQ3MDk5OTcxNzcxMjQsMTIuNzAzMzAwNDc2MDc0MjE5IDQuNjQ3MDk5OTcxNzcxMjQsMTIuNDE1MTAwMDk3NjU2MjUgNC42NDcwOTk5NzE3NzEyNCwxMi4xMjY3OTk1ODM0MzUwNTkgQzQuNjQ3MDk5OTcxNzcxMjQsMTEuODM4NTAwMDIyODg4MTg0IDQuNjQ3MDk5OTcxNzcxMjQsMTEuNTUwMjk5NjQ0NDcwMjE1IDQuNjQ3MDk5OTcxNzcxMjQsMTEuMjYyMDAwMDgzOTIzMzQgQzQuNjQ3MDk5OTcxNzcxMjQsMTAuOTczNjk5NTY5NzAyMTQ4IDQuNjQ3MDk5OTcxNzcxMjQsMTAuNjg1NTAwMTQ0OTU4NDk2IDQuNjQ3MDk5OTcxNzcxMjQsMTAuMzk3MTk5NjMwNzM3MzA1IEM0LjY0NzA5OTk3MTc3MTI0LDEwLjEwODkwMDA3MDE5MDQzIDQuNjQ3MDk5OTcxNzcxMjQsMTAuNDMyMDAwMTYwMjE3Mjg1IDQuNjQ3MDk5OTcxNzcxMjQsOS41MzI1MDAyNjcwMjg4MDkgQzQuNjQ3MDk5OTcxNzcxMjQsOC42MzMwMDAzNzM4NDAzMzIgNC42NDcwOTk5NzE3NzEyNCw1Ljc1NTQwMDE4MDgxNjY1IDQuNjQ3MDk5OTcxNzcxMjQsNSIgLz48L2c+PC9nPjwvZz48L3N2Zz4=)

</div>

</div>

</div>

</div>

</div>

</div>

<div class="kw e">

</div>

</div>

</div>

</div>

<div class="v j iz ja jb jc jd je jf jg jh ji jj jk jl jm jn">

<div class="kx bt by r s">

</div>

<div class="au bt">

<div>

<div class="bi" aria-describedby="8" aria-labelledby="8">

<div class="ba" tabindex="-1">

<div class="bi">

<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0IiBjbGFzcz0ibGMiPjxwYXRoIGZpbGw9IiMwMDAiIGQ9Ik0xNy41IDEuMjVhLjUuNSAwIDAgMSAxIDB2Mi41SDIxYS41LjUgMCAwIDEgMCAxaC0yLjV2Mi41YS41LjUgMCAwIDEtMSAwdi0yLjVIMTVhLjUuNSAwIDAgMSAwLTFoMi41em0tMTEgNC41YTEgMSAwIDAgMSAxLTFIMTFhLjUuNSAwIDAgMCAwLTFINy41YTIgMiAwIDAgMC0yIDJ2MTRhLjUuNSAwIDAgMCAuOC40bDUuNy00LjQgNS43IDQuNGEuNS41IDAgMCAwIC44LS40di04LjVhLjUuNSAwIDAgMC0xIDB2Ny40OGwtNS4yLTRhLjUuNSAwIDAgMC0uNiAwbC01LjIgNHoiIC8+PC9zdmc+" class="lc" />

</div>

</div>

</div>

</div>

</div>

<div class="fi ld cr">

<div class="e y">

<div class="v cf">

<div class="le lf lg lh li lj cm bd">

<div class="v">

<div>

<a href="https://medium.com/plans?dimension=post_audio_button&amp;postId=461728220484&amp;source=upgrade_membership---post_audio_button-----------------------------------------" class="z ab ac ey af ag ah ai aj ak al am an ao ap" rel="noopener follow"></a>

<div>

<div class="bi" aria-describedby="9" aria-labelledby="9">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMgMTJhOSA5IDAgMSAxIDE4IDAgOSA5IDAgMCAxLTE4IDBtOS0xMEM2LjQ3NyAyIDIgNi40NzcgMiAxMnM0LjQ3NyAxMCAxMCAxMCAxMC00LjQ3NyAxMC0xMFMxNy41MjMgMiAxMiAybTMuMzc2IDEwLjQxNi00LjU5OSAzLjA2NmEuNS41IDAgMCAxLS43NzctLjQxNlY4LjkzNGEuNS41IDAgMCAxIC43NzctLjQxNmw0LjU5OSAzLjA2NmEuNS41IDAgMCAxIDAgLjgzMiIgY2xpcC1ydWxlPSJldmVub2RkIiAvPjwvc3ZnPg==)

<div class="by r s">

Listen

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="bi" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu">

<div>

<div class="bi" aria-describedby="10" aria-labelledby="10">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjIxOCA0LjkzMWEuNC40IDAgMCAxLS4xMTguMTMybC4wMTIuMDA2YS40NS40NSAwIDAgMS0uMjkyLjA3NC41LjUgMCAwIDEtLjMtLjEzbC0yLjAyLTIuMDJ2Ny4wN2MwIC4yOC0uMjMuNS0uNS41cy0uNS0uMjItLjUtLjV2LTcuMDRsLTIgMmEuNDUuNDUgMCAwIDEtLjU3LjA0aC0uMDJhLjQuNCAwIDAgMS0uMTYtLjMuNC40IDAgMCAxIC4xLS4zMmwyLjgtMi44YS41LjUgMCAwIDEgLjcgMGwyLjggMi43OWEuNDIuNDIgMCAwIDEgLjA2OC40OThtLS4xMDYuMTM4LjAwOC4wMDR2LS4wMXpNMTYgNy4wNjNoMS41YTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMmgtMTFjLTEuMSAwLTItLjktMi0ydi0xMGEyIDIgMCAwIDEgMi0ySDhhLjUuNSAwIDAgMSAuMzUuMTUuNS41IDAgMCAxIC4xNS4zNS41LjUgMCAwIDEtLjE1LjM1LjUuNSAwIDAgMS0uMzUuMTVINi40Yy0uNSAwLS45LjQtLjkuOXYxMC4yYS45LjkgMCAwIDAgLjkuOWgxMS4yYy41IDAgLjktLjQuOS0uOXYtMTAuMmMwLS41LS40LS45LS45LS45SDE2YS41LjUgMCAwIDEgMC0xIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIC8+PC9zdmc+)

<div class="by r s">

Share

</div>

</div>

</div>

</div>

</div>

<div class="bi">

<div class="bi">

<div>

<div class="bi" aria-describedby="149" aria-labelledby="149">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQuMzg1IDEyYzAgLjU1LjIgMS4wMi41OSAxLjQxLjM5LjQuODYuNTkgMS40MS41OXMxLjAyLS4yIDEuNDEtLjU5Yy40LS4zOS41OS0uODYuNTktMS40MXMtLjItMS4wMi0uNTktMS40MWExLjkzIDEuOTMgMCAwIDAtMS40MS0uNTljLS41NSAwLTEuMDIuMi0xLjQxLjU5LS40LjM5LS41OS44Ni0uNTkgMS40MW01LjYyIDBjMCAuNTUuMiAxLjAyLjU4IDEuNDEuNC40Ljg3LjU5IDEuNDIuNTlzMS4wMi0uMiAxLjQxLS41OWMuNC0uMzkuNTktLjg2LjU5LTEuNDFzLS4yLTEuMDItLjU5LTEuNDFhMS45MyAxLjkzIDAgMCAwLTEuNDEtLjU5Yy0uNTUgMC0xLjAzLjItMS40Mi41OXMtLjU4Ljg2LS41OCAxLjQxbTUuNiAwYzAgLjU1LjIgMS4wMi41OCAxLjQxLjQuNC44Ny41OSAxLjQzLjU5czEuMDMtLjIgMS40Mi0uNTkuNTgtLjg2LjU4LTEuNDEtLjItMS4wMi0uNTgtMS40MWExLjkzIDEuOTMgMCAwIDAtMS40Mi0uNTljLS41NiAwLTEuMDQuMi0xLjQzLjU5cy0uNTguODYtLjU4IDEuNDEiIGNsaXAtcnVsZT0iZXZlbm9kZCIgLz48L3N2Zz4=)

<div class="by r s">

More

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<figure class="mc md me mf mg mh lz ma paragraph-image">
<div class="mi mj ej mk bd ml" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="lz ma mb">
<img src="https://miro.medium.com/v2/resize:fit:700/1*arD4v-gaXvBCNneu2wvBEw.jpeg" class="bd lj mm mn" loading="eager" role="presentation" width="700" height="400" />
</div>
</div>
<figcaption>Generated by ChatGPT using keywords “data flow cross multi agents”</figcaption>
</figure>

With the growing popularity of AI agents in the market, discussions on agent patterns are rapidly expanding across blogs and documentation.

Agent patterns are reusable architectural constructs that describe how autonomous agents perceive their environment, make decisions, and take actions. They offer standardized approaches for structuring agent behavior, communication, coordination, and learning. By applying these patterns, developers can design agentic architectures that are modular, interoperable, and scalable — capable of adaptive, goal-directed behavior in dynamic and complex environments.

You can easily find many <a href="https://medium.com/search?q=agent+patterns" class="z nr" rel="noopener">blogs and discussions</a> on this topic by searching for “agent patterns”. Several academic papers also cover it in depth, such as *“*<a href="https://arxiv.org/pdf/2405.10467" class="z nr" rel="noopener ugc nofollow" target="_blank"><em>Agent Design Pattern Catalogue: A Collection of Architectural Patterns for Foundation Model–Based Agents</em></a>*.”* Even tools like ChatGPT can provide comprehensive overviews, so I won’t go into further detail here.

However, most existing agent patterns focus on how data technically flows among agent components and tasks, rather than on business operations. There has been far less discussion on how these patterns can be applied to build agentic business solutions using a multi-agent platform or framework. In this blog, I aim to share some of my own innovative perspectives on this topic.

## Business world is different from technical world

Many existing agent patterns are defined from a technical perspective, focusing on model behavior and the management of data flows.

However, the business world operates differently. It’s similar to the concept of data-oriented computing: from a technology standpoint, we discuss <a href="https://medium.com/@jingdongsun/data-oriented-computing-architecture-patterns-83872ba4788c" class="z nr" rel="noopener">data fabrics and data meshes</a>, yet from a business perspective, it’s rare to see a solution that relies on just one of these models. <a href="https://medium.com/@jingdongsun/real-case-of-a-hybrid-architecture-of-data-fabric-and-data-mesh-a5429562afd2" class="z nr" rel="noopener">Most business solutions require both technologies to work together — often in innovative but complex ways</a>.

Same about Agent world, even we have these many agent patterns, but for an agentic business solution, in most of cases, we need multiple patterns work together in a smart way.

For example, consider a customer support solution built on an agentic platform. A single “Support Agent” might use a perception–action pattern to interpret incoming tickets, classify intent, and generate responses. Behind the scenes, a coordinator pattern manages interactions between multiple specialized agents — such as a knowledge retrieval agent, a sentiment analysis agent, and a workflow execution agent that updates CRM records or triggers refunds…

In the financial services domain, consider an intelligent investment advisory service powered by multiple AI agents. A market data agent continuously gathers and interprets real-time financial data using a perception–action pattern, detecting signals and anomalies across markets. A portfolio optimization agent applies a planning and decision pattern to rebalance investments based on client objectives, risk tolerance, and current market conditions. A compliance agent ensures that all trading actions adhere to regulatory constraints and firm-level policies. A Coordinator Agent then employs a coordinator pattern to orchestrate collaboration among these agents — synchronizing insights, managing task dependencies, and triggering execution workflows through integration with trading systems.

## Agent platform is a combination of business and technical

An agent platform inherently bridges the domains of business and technology.

On the business side, it encapsulates the organization’s goals, policies, workflows, and decision logic that agents must understand and act upon. Agents operate as digital counterparts to business roles, capable of reasoning about objectives, priorities, and constraints. They interact with business processes and data ecosystems, turning business intent into executable actions. This ensures that automation and intelligence are driven by strategic business outcomes, not isolated technical implementations.

On the technical side, the agent platform provides the infrastructure, orchestration, and integration layers necessary to support autonomy, interoperability, and scalability. It combines components such as context management, communication protocols, data pipelines, model hosting, and policy enforcement engines. These technical capabilities enable agents to sense their environment, exchange knowledge, and execute tasks securely and efficiently following the pattern architecture.

<div class="ow v">

<div class="e">

</div>

</div>

The synergy between business intent and technical capability is what defines a true agentic solution — one that transforms automation from scripted execution into adaptive, goal-oriented collaboration between systems and human stakeholders.

## My proposal

<figure class="oy oz pa pb pc mh lz ma paragraph-image">
<div class="mi mj ej mk bd ml" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="lz ma ox">
<img src="https://miro.medium.com/v2/resize:fit:700/1*svjvrHNioHZWPdCXr7SN0g.jpeg" class="bd lj mm mn" loading="lazy" role="presentation" width="700" height="400" />
</div>
</div>
<figcaption>Generated by ChatGPT using keywords “multiagent system and knowledge graph”</figcaption>
</figure>

I propose an approach that uses a knowledge graph to provide business logic, regulations, and process context to multi-agent technical workflows.

### Main idea

This approach introduces a hybrid graph model that combines knowledge and operational process flows to enable business automation.

1.  <span id="f2c9">The knowledge graph captures relationships among data entities from diverse business sources, making it possible to uncover hidden connections, dependencies, and insights.</span>
2.  <span id="d148">In parallel, the workflow graph represents the sequence of actions within a business process — defining responsibilities, task order, and conditional logic.</span>

Together, these graphs create a unified framework that links what the business knows with how it operates, enabling more intelligent, context-aware automation:

- <span id="23da">Graph nodes: Represent data entities and workflow tasks.</span>
- <span id="b9df">Graph edges: Capture relationships between data entities, task dependencies, and the connections linking data entities to workflow tasks — specifying which data triggers which tasks under what conditions.</span>
- <span id="67e4">Integration: The knowledge graph and workflow graph are connected through these relationships, enabling the system to determine what data entities drive which tasks and under which conditions, creating a unified structure for intelligent business automation.</span>

This approach can be further extended to additional dimensions, such as supporting data transitions within a temporal knowledge graph.

### Detailed approach

**I. Domain data collection and Knowledge-Ops Graph Construction:**

<figure class="oy oz pa pb pc mh lz ma paragraph-image">
<div class="mi mj ej mk bd ml" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="lz ma qd">
<img src="https://miro.medium.com/v2/resize:fit:700/1*NY6ESYl-DmdQDVg4MP0Yvg.png" class="bd lj mm mn" loading="lazy" role="presentation" width="700" height="421" />
</div>
</div>
</figure>

Step 1. Knowledge-Ops Graph structure definition:

1.  <span id="cc69">Define the Knowledge Graph: Based on your business domain, design the structure and semantics of the knowledge graph using an ontology, specifying classes, properties, and relationships among data entities.</span>
2.  <span id="c620">Define the Workflow Graph: Based on your business operation processes, design the structure and semantics of your operational task flows using an ontology, specifying tasks, conditions, properties, and relationships.</span>
3.  <span id="55f4">Establish Integration: Define the relationships between domain entities and workflow tasks, linking business knowledge to operational execution.</span>

Using HR as an example:

``` oy
from owlready2 import *

owl_path = "file:///Users/jingdongsun/WatsonOrders/WO-knowledge-graph/ontology/ontology.owl"
onto = get_ontology(owl_path).load()
print("Loaded Watson Orders ontology: " + onto.base_iri) 

with onto:
    
    # ontology entity classes
    class Employee(Thing):
        pass
    class HR_Document(Thing):
        pass
    # workflow entity classes
    class Task(Thing):
        pass
    class OrchestrateSkill(Thing):
        pass
    class orchestrate_skill(Task >> OrchestrateSkill):
        python_name = "orchestrate_skill"
    class Rpc(Thing):
        pass
    class rpc(Task >> Rpc):
        python_name = "rpc"
    class Condition(Thing):
        pass
    
    # Entity properties
    class my_name(DataProperty):
        domain = [Employee, HR_Document, Task, Condition, OrchestrateSkill]
        range = [str]
    class address(DataProperty):
        domain = [Employee]
        range = [str]
    class email(DataProperty):
        domain = [Employee]
        range = [str]
    class role(DataProperty):
        domain = [Employee]
        range = [str]
    class is_manager(DataProperty):
        domain = [Employee]
        range = [bool]
    class labels(DataProperty):
        domain = [Task]
        range = [str]
    class include_docs(DataProperty):
        domain = [Task]
        range = [bool]
    class docs(DataProperty):
        domain = [Task]
        range = [str]
    class next_steps(DataProperty):
        domain = [Task, Condition]
        range = [str]
    class specs(DataProperty):
        domain = [OrchestrateSkill, Rpc]
        range = [str]
    class rpc_type(DataProperty):
        domain = [Rpc]
        range = [str]
    class url(DataProperty):
        domain = [Rpc]
        range = [str]
    
    # Object properties for relationships
    class has_manager(ObjectProperty):
        domain = [Employee]
        range = [Employee]
    class manager_of(ObjectProperty):
        domain = [Employee]
        range = [Employee]
        inverse_property = has_manager
    class has_owner(ObjectProperty):
        domain = [HR_Document, Task]
        range = [Employee]
    class owner_of(ObjectProperty):
        domain = [Employee]
        range = [HR_Document, Task]
        inverse_property = has_owner
    class has_reviewer(ObjectProperty):
        domain = [HR_Document]
        range = [Employee]
    class reviewer_of(ObjectProperty):
        domain = [Employee]
        range = [HR_Document]
        inverse_property = has_reviewer

print(Employee.iri, Employee.namespace)
print(has_manager.iri)
print(name.iri)
print("List all defined entities:")
print(list(onto.classes()))
print("List all defined properties:")
print(list(onto.properties()))
```

Step 2. Business Data Collection: Gather both domain knowledge and business process information. For example, in a company HR context:

1.  <span id="97a4">Domain data: Employee records, manager information, pay slips, paid time off, unpaid time off, and other relevant data entities.</span>
2.  <span id="2f51">Operational processes: Promotion workflows, time-off requests, updates to employee or self-contact information, and other HR-related procedures.</span>

Following json file gives a simple example of some HR entities and operations:

``` oy
[ 
  "Ontologies": [
    {
      "name": "John",
      "address": "abc",
      "email": "john@abc.com",
      "role": "employee",
      "is_manager": false,
      "has_manager": "Peter",
    },
    {
      "name": "Peter",
      "address": "def",
      "email": "peter@abc.com",
      "role": "manager",
      "is_manager": true,
    },
    {
      "name": "Linda",
      "address": "xyz",
      "email": "annie@abc.com",
      "role": "hr",
      "is_manager": false,
    },
    {
      "name": "Performance Doc",
      "owner": "employee",
      "reviewer": "manager",
      "entity_type": "Ontology:HR_Documentation"
    },
  ],
  "Tasks": [
    {
      "name": "Submit Promption",
      "owner": "manager",
      "include_docs": true,
      "docs": ["Performance Doc"],
      "orchestrate_skill": "",
      "orchestrate_skill_specs": [],
      "rpc_type": "REST API",
      "rpc_url": "",
      "rpc_specs": {},
      "next_steps": ["Review Promption"],
    },
    {
      "name": "Review Promption",
      "owner": "hr",
      "include_doc": true,
      "docs": ["Performance Doc"],
      "orchestrate_skill": "",
      "orchestrate_skill_specs": [],
      "rpc_type": "REST API",
      "rpc_url": "",
      "rpc_specs": {},
      "next_steps": ["Approval"],
    },
    {
      "name": "Prompt Employee",
      "owner": "hr",
      "include_docs": false,
      "orchestrate_skill": "",
      "orchestrate_skill_specs": [],
      "rpc_type": "REST API",
      "rpc_url": "",
      "rpc_specs": {},
      "next_steps": ["Notify Employee"],
    },  
    {
      "name": "Reject Request",
      "owner": "hr",
      "include_doc": false,
      "docs": [],
      "orchestrate_skill": "",
      "orchestrate_skill_specs": [],
      "rpc_type": "REST API",
      "rpc_url": "",
      "rpc_specs": {}
    },
  ],
  "Conditions": [ 
    {
      "name": "Approval",
      "next_steps": {
        "yes": ["Prompt Employee"],
        "no": ["Reject Request"]
      },
      "entity_type": "Workflow:Condition"
    },
  ],
]
```

Step 3. Use the collected data to generate knowledge–operations graph instances — either within a single instance or across multiple instances — by leveraging knowledge graph generation technologies, software engineering scripts, or machine learning models.

``` oy
# Parsing the json file to create knowledge (ontology and workflow) graph
import json 

# load json file
file_path = "/Users/jingdongsun/WatsonOrders/ontology-augmented-AI-agent/data/HR_Ops_v1.json"
with open(file_path, 'r') as f:
    entities = json.load(f)

# parse json file and create knowledge graph objects and relationships
# 1. Create all entities
for entity in entities:
    if (entity["entity_type"] == "Ontology:Employee"):
        my_employee = Employee()
        my_employee.my_name.append(entity["name"])
        my_employee.address.append(entity["address"])
        my_employee.email.append(entity["email"])
        my_employee.role.append(entity["role"])
        my_employee.is_manager.append(entity["is_manager"])
        print("Done create employee: ", my_employee, my_employee.my_name)
    elif (entity["entity_type"] == "Ontology:HR_Documentation"):
        my_doc = HR_Document()
        my_doc.my_name.append(entity["name"])
        print("Done create HR doc: ", my_doc, my_doc.my_name)
    elif (entity["entity_type"] == "Workflow:Task"):
        my_task = Task()
        my_task.my_name.append(entity["name"])
        
        if ("labels" in entity):
            my_task.labels.extend(entity["labels"])
        if ("include_docs" in entity):
            my_task.include_docs.append(entity["include_docs"])
        if ("docs" in entity):
            my_task.docs.extend(entity["docs"])
        if ("next_steps" in entity):
            my_task.next_steps.extend(entity["next_steps"])
            
        if ("orchestrate_skill" in entity):
            my_skill = OrchestrateSkill()
            my_skill.my_name.append(entity["orchestrate_skill"]["name"])
            my_skill.specs.append(entity["orchestrate_skill"]["specs"])
            print(my_task, my_task.my_name, my_task.orchestrate_skill, my_skill, my_skill.my_name, my_skill.specs)
            my_task.orchestrate_skill = [my_skill]

        if ("rpc" in entity.keys()):
            my_rpc = Rpc()
            my_rpc.rpc_type.append(entity["rpc"]["rpc_type"])
            my_rpc.url.append(entity["rpc"]["url"])
            my_rpc.specs.append(entity["rpc"]["specs"])
            print(my_task, my_task.my_name, my_task.rpc, my_rpc, my_rpc.rpc_type, my_rpc.url, my_rpc.specs)
            my_task.rpc = [my_rpc]
        
        print("Done create task: ", my_task, my_task.my_name)
    elif (entity["entity_type"] == "Workflow:Condition"):
        my_cond = Condition()
        my_cond.my_name.append(entity["name"])
        my_cond.next_steps.extend(entity["next_steps"])
        print("Done create condition: ", my_cond, my_cond.my_name)
    else:
        print("ERROR: entity_type " + entity["entity_type"] + " not right!!")
# 2. Set relationships
for entity in entities:
    if (entity["entity_type"] == "Ontology:Employee"):
        # resolve management relationships among employees
        if ("has_manager" in entity):
            for employee in Employee.instances():
                if (entity["has_manager"] in employee.my_name) :
                    my_manager = employee
                if (entity["name"] in employee.my_name) :
                    my_employee = employee
            my_manager.manager_of.append(my_employee)
    elif (entity["entity_type"] == "Ontology:HR_Documentation"):
        if ("owner" in entity):
            for employee in Employee.instances():
                if (entity["owner"] in employee.my_name) :
                    my_employee = employee
            for doc in HR_Document.instances():
                if (entity["name"] in doc.my_name) :
                    my_doc = doc
            my_doc.has_owner.append(my_employee)
        if ("reviewer" in entity):
            for doc in HR_Document.instances():
                if (entity["name"] in doc.my_name) :
                    my_doc = doc
            for reviewer in entity["reviewer"]:
                for employee in Employee.instances():
                    if (reviewer in employee.my_name) :
                        my_employee = employee
                my_doc.has_reviewer.append(my_employee)
    elif (entity["entity_type"] == "Workflow:Task"):
        if ("owner" in entity):
            for employee in Employee.instances():
                if (entity["owner"] in employee.my_name) :
                    my_employee = employee
            for task in Task.instances():
                if (entity["name"] in task.my_name) :
                    my_task = task
            my_task.has_owner.append(my_employee)
```

**II. Integrate this knowledge-ops graph into RAG using graphRAG technologies**

This is a well-covered topic with <a href="https://medium.com/search?q=graphRAG" class="z nr" rel="noopener">many blogs</a> and <a href="https://arxiv.org/pdf/2501.00309" class="z nr" rel="noopener ugc nofollow" target="_blank">research papers</a>, so I will omit a detailed discussion here.

**III. Using this graphRAG system to orchestrate AI agents to automate business operations with optimized agent patterns**

1.  <span id="e508">Receive End User Request: Capture the incoming request from the end user.</span>
2.  <span id="625b">Query Knowledge–Operations Graph (GraphRAG): Orchestrate a graph-based retrieval of relevant knowledge and operational flows based on the user request.</span>
3.  <span id="e90b">Augment LLM with Context: Use the retrieved knowledge and workflow information to enhance the LLM, enabling it to generate a business-operation-specific plan using optimized agent patterns (e.g., Chain-of-Thought, Tree-of-Thought, or others).</span>
4.  <span id="8d26">Generate <a href="/ai-agents-and-automation-agent-guardrails-9cc0747718f3" class="z nr" rel="noopener" data-discover="true">Guardrails</a>: The orchestrating agent can also produce guardrail rules or instructions derived from graphRAG’s regulatory or policy information to ensure safe and compliant execution.</span>
5.  <span id="663c">Orchestrate Agents: Execute the plan by engaging collaborator agents, tasks, and workflows to fulfill each operational step.</span>
6.  <span id="fe9d">(Template Generation: This dynamic agent solution for the user request can be saved and reused as a template or standardized solution for similar future requests.)</span>
7.  <span id="438e">Return Results to End User: Once all steps are completed, provide the outcome back to the end user.</span>

This should be doable using a <a href="https://medium.com/@jingdongsun/ai-agents-and-automation-multiagent-frameworks-and-my-observations-fe5f06ac458b" class="z nr" rel="noopener">multi-agent framework</a>.

**IV: AgentOps for continue improvement of agent performance**

I have covered agentOps in <a href="https://medium.com/@jingdongsun/ai-agents-and-automation-agentops-e61e4ef93eae" class="z nr" rel="noopener">another blog</a>, so will skip it here.

## Conclusion

<figure class="oy oz pa pb pc mh lz ma paragraph-image">
<div class="mi mj ej mk bd ml" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="lz ma qn">
<img src="https://miro.medium.com/v2/resize:fit:700/1*HPjaAAWovdPMMlm1XOl4lQ.png" class="bd lj mm mn" loading="lazy" role="presentation" width="700" height="310" />
</div>
</div>
</figure>

AI agents and multi-agent platforms are transforming the way businesses approach automation. While many existing agent patterns focus on data flow and task coordination from a technical perspective, real-world business solutions require the orchestration of multiple patterns to align with organizational processes, regulations, and goals. By leveraging knowledge graphs integrated with workflow graphs, businesses can create a unified framework that links knowledge with operational execution, enabling intelligent, adaptive, and compliant automation.

This hybrid approach allows end-user requests to be processed dynamically: agents retrieve relevant knowledge, plan operations, coordinate with collaborators, enforce guardrails, and even produce reusable templates for future tasks. Across domains — from HR to finance — the combination of knowledge, workflows, and agent orchestration provides a scalable path toward agentic business solutions that are both technically robust and strategically aligned.

</div>

</div>

</div>

</div>

</div>

</div>

</div>
