<?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" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Rick Kadlac's Newsletter]]></title><description><![CDATA[Product Analytics, Product Management, and Product Operations.]]></description><link>https://www.rickkadlac.com</link><image><url>https://www.rickkadlac.com/img/substack.png</url><title>Rick Kadlac&apos;s Newsletter</title><link>https://www.rickkadlac.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 25 Apr 2026 13:14:52 GMT</lastBuildDate><atom:link href="https://www.rickkadlac.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Rick Kadlac]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[rickkadlac@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[rickkadlac@substack.com]]></itunes:email><itunes:name><![CDATA[Rick Kadlac]]></itunes:name></itunes:owner><itunes:author><![CDATA[Rick Kadlac]]></itunes:author><googleplay:owner><![CDATA[rickkadlac@substack.com]]></googleplay:owner><googleplay:email><![CDATA[rickkadlac@substack.com]]></googleplay:email><googleplay:author><![CDATA[Rick Kadlac]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Exploring AI Agent Possibilities with MCP and n8n]]></title><description><![CDATA[Making use of Anthropic's new Model Context Protocol]]></description><link>https://www.rickkadlac.com/p/exploring-ai-agent-possibilities</link><guid isPermaLink="false">https://www.rickkadlac.com/p/exploring-ai-agent-possibilities</guid><dc:creator><![CDATA[Rick Kadlac]]></dc:creator><pubDate>Tue, 25 Mar 2025 09:25:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!D4h5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D4h5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D4h5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 424w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 848w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 1272w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D4h5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png" width="952" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:952,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80094,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.rickkadlac.com/i/159773065?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D4h5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 424w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 848w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 1272w, https://substackcdn.com/image/fetch/$s_!D4h5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837647f1-79bb-4e7f-8e8d-e2cfb9a425d8_952x394.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m a Product and Operations minded person with a background in low-code automation tools like Tray.io and Workato. I&#8217;ve recently been fascinated by the potential of AI-Agent-driven workflows. I&#8217;ve been thinking about this for two different purposes:</p><ol><li><p>For powering AI native Products with Agent functionality for external customers. I also see this as learning an aspect of the technology that is predicted to disrupt some of our current SaaS tools.</p></li><li><p>For automating back of the house business workflows that could make any business more efficient.</p></li></ol><p>Recently, I&#8217;ve set out to get my hands dirty with a new challenge: building an Agent setup that combines the <strong>Model Context Protocol (MCP)</strong> and <strong>n8n</strong>, a popular open-source workflow automation platform. Here&#8217;s how I approached it, what I learned, and why this AI Agent approach could likely satisfy some product functionality or business automation needs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.rickkadlac.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Rick Kadlac's Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p><strong>Why MCP and n8n?</strong></p><p>Before diving into the setup, let&#8217;s define the key concepts:</p><ul><li><p><strong><a href="https://n8n.io/">n8n</a></strong>: An open-source platform for building workflows, often hailed as a go-to standard for low-code AI Agent automation. I like that you can bypass paying for it as a SaaS tool if you self-host it yourself (you still have the hosting fees though!). The community support for it is also quite large at the moment.</p></li><li><p><strong><a href="https://modelcontextprotocol.io/introduction">Model Context Protocol (MCP)</a></strong>: Developed by Anthropic, MCP is an open-source protocol that allows AI systems (like Claude, ChatGPT, or others) to securely connect to external data sources, tools, and prompts via a client-server architecture. It is sort of like a universal API for AI Agents. (Learn more: <a href="https://www.anthropic.com/news/model-context-protocol">Anthropic&#8217;s announcement and MCP&#8217;s intro</a>).</p></li></ul><p>Together, they seemed like a great combo for learning some functional aspects of AI Agents.</p><div><hr></div><p><strong>Setting It Up</strong></p><p>Here&#8217;s how I got started:</p><ol><li><p><strong>Self-Hosting n8n</strong>:<br>To unlock the full potential of this setup, you need to self-host n8n. Why? Because the magic happens with a community &#8220;node&#8221; (or workflow step) that isn&#8217;t available in the cloud version. I used <a href="https://elest.io/">Elest.io</a> for hosting because the setup was easy for n8n. That said, you could opt for Digital Ocean, Hostinger, or any provider that suits your technical comfort level. These other options will most likely be cheaper to host as well.</p></li><li><p><strong>Installing the MCP Community Node</strong>:<br>To bring MCP into n8n, I installed the community node from <a href="https://github.com/nerding-io/n8n-nodes-mcp">nerding-io/n8n-nodes-mcp</a>. This node acts as the bridge between n8n workflows and MCP-compatible tools. Without it, you&#8217;re only able to use the standard n8n node functionality.</p></li><li><p><strong>MCP Tool Compatibility</strong>:<br>MCP isn&#8217;t a free-for-all yet. It only works with tools that have MCP servers implemented. You can check the current list here:<a href="https://github.com/modelcontextprotocol/servers"> modelcontextprotocol/servers</a>.</p></li></ol><div><hr></div><p><strong>The Build</strong></p><p>The build itself included the following workflow components:</p><p><strong>The initial trigger:</strong><br>The workflow starts when a chat message is received, prompting the LLM-powered Agent to act.</p><p><strong>AI Agent node:</strong><br>The AI Agent node in n8n is the central hub that manages:</p><ul><li><p><strong>The LLM Model:</strong> This powers the agent&#8217;s conversational ability. I used ChatGPT.</p></li><li><p><strong>The Memory (Simple Memory Database):</strong> This keeps track of past interactions for context-aware LLM responses.</p></li><li><p><strong>The Tools:</strong> This is where the MCP connections were.</p></li></ul><p><strong>MCP List Tools (Brave Search):</strong><br>This node lets the agent discover available MCP tools. In this example, it&#8217;s the Brave Search tool for web queries. This is one of the unique aspects of MCP as opposed to other agent-building approaches. The tool makers can tell the LLMs powering an Agent which functionality is available.</p><p><strong>MCP Execute Tool (Brave Search):</strong><br>Once identified, this node enables the agent to run a Brave Search query and return results to the user.</p><p></p><p><strong>How It Works</strong></p><p>A chat message triggers the AI Agent node, which processes the input using the OpenAI model and memory for context. If needed, it calls Brave Search to list tool options or execute a search. It then responds back to the user. This is all within a compact workflow.</p><div><hr></div><p></p><p><strong>Key Lessons from the Build</strong></p><p>As I pieced this together, a few insights stood out:</p><ul><li><p><strong>Prompting Is Critical</strong>:<br>When setting up the Agent Node in n8n, it is extremely helpful to include a system prompt instructing it to use tools. Skip this, and your workflow will ping-pong inefficiently, wasting time and resources. A clear prompt is your guardrail to this. This is also just good standard advice anytime you are developing an Agent step utilizing LLMs.</p></li><li><p><strong>MCP&#8217;s Potential as the &#8220;API&#8221; for AI Agents</strong>:<br>Official MCP integrations are still limited, but its design feels like the most likely future. For product managers, operations, or anyone building AI-driven solutions, learning MCP now could provide an advantage. It&#8217;s poised to become a universal standard for agent-tool interactions.</p></li><li><p><strong>Caveat: Tool Provider Dependency</strong>:<br>Here&#8217;s the catch; MCP&#8217;s functionality hinges on the tool providers maintaining their servers. If a provider updates or breaks something, those changes flow straight into your workflow. It&#8217;s a double-edged sword: provider managed updates, but less control for you. This may become a consideration in the same way that package dependencies plague development teams. I wouldn&#8217;t be surprised to see a whole application security sub-discipline arise from this as well.</p></li></ul><div><hr></div><p><strong>Why This Matters</strong></p><p>What excites me most about this setup is the promise of its flexibility in the future. With MCP, my Agent can tap into a growing ecosystem of tools without reinventing the wheel for each integration. Pair that with n8n&#8217;s workflow builder, and you&#8217;ve got a low-code playground for experimenting with AI agents. I&#8217;ll be honest though, it was definitely still a little clunky since I implemented this with a newly developed community package in n8n that&#8217;s not yet natively supported. Limited tool options on the third-party MCP servers is also a hurdle at the moment.</p><p>For anyone curious about the intersection of AI and automation, MCP is definitely worth a look. It might make sense to hold off on implementing it within n8n for a little bit though if you&#8217;re looking to build a production workflow, since the support is rapidly evolving. I would definitely recommend testing playing around with it in n8n or another workflow in order to learn the ropes though.</p><p>Thanks for reading!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.rickkadlac.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Rick Kadlac's Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building an AI Chat Agent with OpenAI’s New Responses API]]></title><description><![CDATA[OpenAI recently released its new Responses API, and I decided to test its capabilities by building something useful for my kids' local soccer league; a chatbot for parents, coaches, and referees. This was a really fun project for me to get my hands dirty with the new api, build a chat agent, and implement real-time web search into it.]]></description><link>https://www.rickkadlac.com/p/building-an-ai-chat-agent-with-openais</link><guid isPermaLink="false">https://www.rickkadlac.com/p/building-an-ai-chat-agent-with-openais</guid><dc:creator><![CDATA[Rick Kadlac]]></dc:creator><pubDate>Thu, 13 Mar 2025 21:54:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wW1j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wW1j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wW1j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 424w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 848w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wW1j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png" width="1304" height="1208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1208,&quot;width&quot;:1304,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207243,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.rickkadlac.com/i/159026405?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wW1j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 424w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 848w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!wW1j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc1c112f-d14b-4166-a1eb-684279d502db_1304x1208.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>OpenAI recently released its new <strong><a href="https://platform.openai.com/docs/api-reference/responses">Responses API</a></strong>, and I decided to test its capabilities by building something useful for my kids' local soccer league; a <strong>chatbot for</strong> <strong>parents, coaches, and referees</strong>. This was a really fun project for me to get my hands dirty with the new api, build a chat agent, and implement real-time web search into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.rickkadlac.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Rick Kadlac's Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>The Setup</strong></h2><p>With OpenAI's new API, getting up and running was relatively straightforward. I initially outlined my vision in a <a href="https://github.com/evorick/soccer_league_chatbot/blob/main/prd.md">Product Requirements Document (PRD)</a> to keep myself focused and then worked up some boiler-plate python chat agent code by going back and forth between Grok and Claude. I then integrated the <strong><a href="https://platform.openai.com/docs/api-reference/responses">Responses API</a></strong> and paired my chatbot with a pdf document of the local soccer league regulations in order to handle common very specific league-related questions.</p><p>I really liked how easy it was to pair the <strong>Responses API </strong>with<strong> </strong>the OpenAI built-in agent tools.</p><h2><strong>Supercharging It with Web Search</strong></h2><p>To take things a step further, I also leveraged OpenAI&#8217;s <strong><a href="https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses">Web Search</a> </strong> agent tool. This allowed the chatbot to provide up-to-date league information, like:</p><ul><li><p>If a field is closed due to weather</p></li><li><p>The current prices and purchasing links for recommended equipment</p></li></ul><p>By combining <strong>Responses API + Web Search</strong>, the chatbot became more than just a static FAQ bot, it could dynamically fetch relevant updates without requiring manual maintenance.</p><p>Some of the relevant API code:</p><p><code># Initialize the OpenAI client with the API key from environment variables</code></p><p><code>client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))</code></p><p></p><p><code># Responses API code</code></p><p><code>response = client.responses.create(</code></p><p><code>model="gpt-4o",</code></p><p><code>tools=[{"type": "web_search_preview"}],</code></p><p><code>input=user_input,</code></p><p><code>instructions=system_prompt</code></p><p><code>)</code></p><h2><strong>Key Takeaways</strong></h2><p>Overall, the project was relatively easy, and this seems like the start of many more built-in agent tools by the major AI platforms. I also can&#8217;t state enough how important it was to start with a PRD if you&#8217;re looking for the best result with some AI generated code. That helped me out a great deal during the Grok and Claude portions of my workflow.</p><p>I would love to hear what others are building with these APIs. Drop a comment or reply if you want to share.</p><h2><strong>Key Links</strong></h2><ul><li><p><a href="https://github.com/evorick/soccer_league_chatbot/tree/main">My GitHub repository for this project</a></p></li><li><p><a href="https://openai.com/index/new-tools-for-building-agents/">OpenAI&#8217;s blog post on new Agent tools</a></p></li><li><p><a href="https://platform.openai.com/docs/api-reference/responses">OpenAI&#8217;s Responses API documentation</a></p></li><li><p><a href="https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses">OpenAI&#8217;s Web Search documentation</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.rickkadlac.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Rick Kadlac's Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A Second Look at Product Operations in the Age of AI ]]></title><description><![CDATA[Should Product Ops evolve in the same way as Product Managers?]]></description><link>https://www.rickkadlac.com/p/a-second-look-at-product-operations</link><guid isPermaLink="false">https://www.rickkadlac.com/p/a-second-look-at-product-operations</guid><dc:creator><![CDATA[Rick Kadlac]]></dc:creator><pubDate>Mon, 02 Dec 2024 17:08:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!24g5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There have been many recent blog posts, talks, and podcasts about the need for the Product Manager role to adapt significantly in the near future. Current and upcoming AI capabilities allow for a creative product manager to go beyond simple wireframes to create functional MVP&#8217;s solely with prompt engineering. They could use the same GenAI tools for early designs as well. It&#8217;s true that<strong> the roles of Product Management, Engineering, and Design are coming closer together</strong> and the more adaptable individuals will start to have accelerated career paths.</p><p>This moment in time is generating an underlying level of anxiety for many organizations who have otherwise great Product Managers, but that might be slow to adapt to an entirely new way of operating or are uninterested in &#8220;learning a little bit of code&#8221; to check the work of a GenAI tool. All of the recent posts and talks about the inevitable need for Product Managers to adapt, fail to consider that a non-insignificant percentage of PM&#8217;s will not adapt quickly in many organizations. I&#8217;d like to make an argument that we &#8220;don&#8217;t have to throw the baby out with the bathwater&#8221; and there may be a way to work with the talents and interests of all types of PM&#8217;s.</p><p>There is another role in many organizations that is also having an inflection point at the moment, the role of Product Operations. Many organizations started establishing Product Operations teams in the past couple of years, only to later disband their Product Operations team because they were considered a &#8220;nice to have&#8221;. <strong>The age of ubiquitous GenAI provides a catalyst to evolve the role of the Product Operations Manager.</strong></p><p>Product Operations Managers tend to land somewhere on the gradient between those whose strengths and interests are more focused on <em>&#8220;process and cross-functional collaboration&#8221;</em> and those whose are more focused on <em>&#8220;analytics and product tools&#8221;</em>. Either type could gravitate towards a successful adoption of AI tools, but the latter camp may have an advantage if they are faster to adopt new tools. Product Operations Managers are already in a great position within the product organization to help accelerate bringing a product to market with GenAI. They support product development in a 1:many fashion, they are (usually) the admin for technical product focused tools, and some &#8220;can write a little code&#8221;. One productive AI-using Product Operations Manager could potentially accelerate multiple Product Managers through acting as a GenAI tool &#8220;coach&#8221; and/or by partnering with them and using GenAI for MVP creation.</p><p>The discovery process, speaking with customers, and deeply understanding the customer problem should always live with the Product Manager. What if, after a PM has a list of acceptance criteria to solve customer problems, they pass that to a Product Ops person instead of an engineer to come up with multiple versions of a product MVP while using GenAI tools? That workflow may make sense in some organizations, and it&#8217;s keeping Product Operations in the Operations business. The place Product Operations Managers love to be in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!24g5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!24g5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 424w, https://substackcdn.com/image/fetch/$s_!24g5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 848w, https://substackcdn.com/image/fetch/$s_!24g5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 1272w, https://substackcdn.com/image/fetch/$s_!24g5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!24g5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png" width="1456" height="967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:967,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1839303,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!24g5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 424w, https://substackcdn.com/image/fetch/$s_!24g5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 848w, https://substackcdn.com/image/fetch/$s_!24g5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 1272w, https://substackcdn.com/image/fetch/$s_!24g5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392dc114-ad94-4819-89ec-5fc8ba88786f_14713x9768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This has been a thought exercise and the truth is that it is too soon to say how the typical division of duties will shake out in order to bring a product to market. Everyone will have to do what works best for their organization. With the increasing GenAI involvement in product development, there is no better time to encourage your team to learn new skills and for you to evolve as well.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.rickkadlac.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Rick Kadlac's Newsletter! Subscribe for free to receive new posts.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Blog About Product Analytics and Operations?]]></title><description><![CDATA[(And potentially other related topics.)]]></description><link>https://www.rickkadlac.com/p/why-blog-about-product-analytics</link><guid isPermaLink="false">https://www.rickkadlac.com/p/why-blog-about-product-analytics</guid><dc:creator><![CDATA[Rick Kadlac]]></dc:creator><pubDate>Mon, 15 Aug 2022 02:40:52 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black and silver laptop computer&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="black and silver laptop computer" title="black and silver laptop computer" srcset="https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591696205602-2f950c417cb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw4fHxkYXRhfGVufDB8fHx8MTY2MDUwMjYxNA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@markuswinkler">Markus Winkler</a></figcaption></figure></div><p>Hi Friends,</p><p>This is my first post on this platform and I wanted to give a little bit of an explanation as to why I&#8217;ve decided to begin blogging. </p><ol><li><p>There are not enough resources focused on the specific topics of Product Analytics and Product Operations.</p></li><li><p>After 6+ years of listening to and troubleshooting for Product teams on these topics, I&#8217;ve learned a few things that might benefit others.</p></li><li><p>These topics are universally important for technology companies, <em>or really for any company that has any kind of software at all, </em>and we can&#8217;t afford to not get better at these things. Getting better = better software.</p></li></ol><p>Anyway! Thanks for joining me on this journey, it&#8217;s all going to be ok.</p>]]></content:encoded></item></channel></rss>