<?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[Brian’s Substack]]></title><description><![CDATA[A personal journey of the ups and downs of health, fitness and building companies]]></description><link>https://bkenny.com</link><image><url>https://substackcdn.com/image/fetch/w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a61281b-92e5-4ab3-89a1-fe3cd050e378_1280x1280.png</url><title>Brian’s Substack</title><link>https://bkenny.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 03 Apr 2025 16:25:54 GMT</lastBuildDate><atom:link href="https://bkenny.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Brian Kenny]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[iambrian@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[iambrian@substack.com]]></itunes:email><itunes:name><![CDATA[Brian Kenny]]></itunes:name></itunes:owner><itunes:author><![CDATA[Brian Kenny]]></itunes:author><googleplay:owner><![CDATA[iambrian@substack.com]]></googleplay:owner><googleplay:email><![CDATA[iambrian@substack.com]]></googleplay:email><googleplay:author><![CDATA[Brian Kenny]]></googleplay:author><item><title><![CDATA[Laila has generated €786,744 in 5 months]]></title><description><![CDATA[Since launching 5 months ago, we've generated over three quarters of a million euros in revenue for our customers. &#129327;]]></description><link>https://bkenny.com/p/laila-has-generated-786744-in-5-months</link><guid isPermaLink="false">https://bkenny.com/p/laila-has-generated-786744-in-5-months</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Mon, 11 Nov 2024 11:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg" 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/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11257282,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c7a085-417d-42b6-b875-885038c678ae_8192x5464.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>Why focus on this number? I promise it is not vanity.</p><p>In almost all businesses I&#8217;ve to be apart of, focusing on money leads to failure. Money will come if the business is a success. The business will be successful based on the product, service and delivery. </p><h3>Ok, what is our product?</h3><p>We have built scalable relationship focused customer service. <a href="https://meetlaila.com/">Laila</a> builds relationships with our clients customers. She never gets tired. She speaks pretty much every language. She has been described as the &#8220;highest revenue generating employee&#8221;.</p><p>Laila is trained on our clients business goals and operates in the overlap between their goals and the relationship she has built with the customer. Through this, she converts.</p><p>So, a 5 month old product that has converted &#8364;786,744 in revenue for our clients is a fantastic start. </p><p>Focusing on delivering revenue to our clients guarantees a successful company for us. The future looks fantastic. We have many product features coming and big company news coming soon too. Stay tuned.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Subscribe for more updates along the way!</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><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Who Cares? Rethinking My Relationship with Social Media]]></title><description><![CDATA[I&#8217;ve realised that I&#8217;ve never used social media the &#8216;right&#8217; way&#8212;or at least, the way that feels meaningful to me.]]></description><link>https://bkenny.com/p/who-cares-rethinking-my-relationship</link><guid isPermaLink="false">https://bkenny.com/p/who-cares-rethinking-my-relationship</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Mon, 04 Nov 2024 11:31:27 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&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-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="728" height="485.2886103943973" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3617,&quot;width&quot;:5426,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Apple MacBook beside computer mouse on table&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}" class="sizing-normal" alt="Apple MacBook beside computer mouse on table" title="Apple MacBook beside computer mouse on table" srcset="https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxkZXNrfGVufDB8fHx8MTczMDYzNDI3NHww&amp;ixlib=rb-4.0.3&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"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>I loved Instagram but I&#8217;ve stopped posting lately.</p><p>During my most active time, I would post 10-15 stories on Instagram per day. Before Instagram, I was firmly on the Twitter bandwagon. The number of people following my accounts organically grew but never in a meaningful way. </p><h2>Why?</h2><p>People do not care about what is going on in my life, they care about what is going on in theirs. I posted because it was fun, because I wanted to share my life. But mostly, because that&#8217;s what you&#8217;re supposed to do, right? Be &#8216;present&#8217; online.</p><p>It&#8217;s taken me a long, long time to learn this but it is true. I slowly learned&#8212;mostly from the silence after my posts&#8212;that people care about what relates to their lives, not just snapshots of mine. Social media isn&#8217;t a mirror, it&#8217;s a lens, and people look through it to find something for themselves.</p><p><strong>People do not care about what I am posting</strong> unless the content I post fits into one of these areas:</p><ol><li><p>Family &amp; Friends &#8212;&nbsp;I am apart of their life. As in, family, friends and people I know outside the platform. <strong>Tiny cohort.</strong></p></li><li><p>Niche &#8212; There is an overlap between what I am posting and what is happening in the viewers lives. For example; if I&#8217;m posting Ironman related content, people interested in Ironman may enjoy it. Similarly, if I&#8217;m posting startup related content, people involved in the startup industry may be interested. <strong>Multiple medium sized cohorts.</strong></p></li><li><p>Funny &#8212;&nbsp;It makes them laugh. <strong>Large cohort.</strong></p></li><li><p>Shock &amp; Awe &#8212;&nbsp;It shocks or gets large emotional response from them. <strong>Large cohort.</strong></p></li></ol><h2>What do I want?</h2><p>If you&#8217;ve ever watched the movie The Notebook, there is a scene where one asks the other &#8220;What do you want?&#8221; out of frustration of trying to understand the other.</p><p>I had never asked myself the same question about social media&#8230; what do I want from it?</p><p>I do not want to spend my time on social media simply making people laugh as&#8230; I&#8217;m not that funny.</p><p>I do not want to become the next Mr Beast and create shocking videos&#8230; I would be awful at it.</p><p>I have a WhatsApp groups for my family and friends.</p><p>It leaves me with point two; &#8220;an overlap between what I am posting and what is happening in the viewers lives&#8221;. </p><h2>What to expect? A Renewed Focus</h2><p>I love fitness. I love health. I love creating digital products. I love building and growing businesses. Creating content around these four pillars to showcase the fun, the struggles and the growth around pushing myself to achieve as much as I can whilst I&#8217;m on this planet will be the focus.</p><p>I&#8217;m taking this in a new direction, and I&#8217;d love for you to come along&#8212;not as an audience, but as fellow travellers. This is the journey I want to share, not just the highlight reel. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">So, let&#8217;s see where it takes us&#8230;</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><p></p>]]></content:encoded></item><item><title><![CDATA[Laila’s Incredible Journey: 280,000 Euros in Bookings in Just 7 Weeks!]]></title><description><![CDATA[We are beyond thrilled to share that in this short span, Laila has generated a whopping &#8364;280,000+ for our users who have joined our platform!]]></description><link>https://bkenny.com/p/lailas-incredible-journey-280000</link><guid isPermaLink="false">https://bkenny.com/p/lailas-incredible-journey-280000</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Thu, 22 Aug 2024 11:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg" 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/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2563766,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8dfa0a9-4969-4c20-9de8-90eeb0e2d0d5_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p></p><p>Wow! This has been an adventure. It seems like only yesterday I wrote about how we had just landed <a href="https://iambrian.substack.com/p/part-3-did-i-just-get-my-first-customer">our first customer</a> with Laila. Now, we're growing faster than I had every expected.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><p>It&#8217;s hard to believe that it&#8217;s only been seven short weeks since we launched Laila, and we&#8217;re already celebrating a milestone that has far exceeded our wildest expectations. We are beyond thrilled to share that in this short span, Laila has generated a whopping &#8364;280,000 for our users who have joined our platform! &#127881; &#129327;</p><h3>What is Laila?</h3><p>In case you&#8217;re new here, Laila isn&#8217;t just any AI. Laila is a relationship-driven AI customer service agent designed with a singular mission: to build meaningful connections between businesses and their customers. In a world where customer service often feels robotic and impersonal, Laila stands out by making every interaction count. We&#8217;re not just solving problems; we&#8217;re fostering relationships.</p><p>Right now, Laila is working her magic on WhatsApp and through website chat widgets, but that&#8217;s just the beginning. We&#8217;re on the brink of rolling out integrations with Facebook Messenger, Instagram DMs, Twitter DMs, and even phone calls. Imagine a world where no matter the medium, Laila is there, ready to assist with a personal touch that feels more like chatting with a friend than dealing with a bot.</p><h3>A Huge Win for Our Users</h3><p>In just seven weeks, Laila has already helped businesses bring in over &#8364;280,000 in bookings. Yes, you read that right&#8212;over a quarter of a million! Our early users have been blown away by how quickly Laila has become an integral part of their operations, driving bookings, and making customer interactions smoother than ever.</p><p>Our salon clients, for example, who use <a href="https://www.linkedin.com/company/phorest/">Phorest Salon Software</a> as their CRM or salon management tool, have seen Laila seamlessly handle everything from booking and rescheduling appointments to canceling them when needed. The feedback has been incredible&#8212;Laila isn&#8217;t just a tool; she&#8217;s becoming part of the team.</p><h3>What&#8217;s Next for Laila?</h3><p>We&#8217;re just getting started! Our roadmap is packed with exciting developments. Next up, we&#8217;re diving into integrations with <a href="https://www.linkedin.com/company/zoho/">Zoho</a>, <a href="https://www.linkedin.com/company/trengo/">Trengo</a>, <a href="https://www.linkedin.com/company/zenoti/">Zenoti</a> and a host of other tools. Our goal is simple: to make Laila even more powerful, helping her action requests for users across a diverse range of businesses.</p><p>But through it all, our focus remains on relationships. We&#8217;re not just about getting the job done&#8212;we&#8217;re about doing it in a way that makes customers feel valued, heard, and understood. That&#8217;s the Laila difference.</p><h3>Looking Ahead</h3><p>We&#8217;re over the moon with the success Laila has already achieved, but we&#8217;re not resting on our laurels. The future is bright, and we can&#8217;t wait to see where this journey takes us next. Whether you&#8217;re already part of the Laila family or just discovering what she can do, stay tuned&#8212;there&#8217;s so much more to come.</p><p>Thank you to all of our early adopters for your trust, feedback, and enthusiasm. You&#8217;ve helped make Laila what she is today, and we&#8217;re so excited to keep growing with you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[The Broken World of Brand Empowered Customer Service]]></title><description><![CDATA[I had an issue with my Revolut account recently. A &#8364;10,000 transfer had gotten &#8216;stuck&#8217; between the sending bank of Bank of Ireland and the receiving bank of Revolut.]]></description><link>https://bkenny.com/p/the-broken-world-of-brand-empowered</link><guid isPermaLink="false">https://bkenny.com/p/the-broken-world-of-brand-empowered</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Mon, 22 Jul 2024 14:53:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg" 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/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2390229,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7804710f-67c7-45d6-aa2f-5c6bfa29fa90_5184x3456.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>The Magical &#8364;10,000 with Revolut</h2><p>I had an issue with my Revolut account recently. A &#8364;10,000 transfer had gotten &#8216;stuck&#8217; between the sending bank of Bank of Ireland and the receiving bank of Revolut. Revolut doesn&#8217;t offer a telephone customer service channel so I directed my queries to their chat service.</p><p>The customer service agent who initially dealt with my query was <a href="https://www.ft.com/content/da82bae4-5846-499d-9a9e-f6a429fa9528">almost following a script</a> and a set of rules. The core KPI they seemed to be chasing was how fast they could simply close my query not whether I <a href="https://www.reddit.com/r/Revolut/comments/154ovqa/are_the_revolut_support_people_stupid/">was satisfied as a customer</a>. My conversation bounced to a total of 9 different agents over a period of 4 days. I was constantly told it was the sending banks issue and if I wanted, they could force the transfer to be stopped but they didn&#8217;t know what would happen when I did this. I instructed them to stop the transfer and low and behold, the funds magically arrived.</p><p>I still feel that there might have been a cost on their end for stopping the transfer which is where the reluctance came from but I&#8217;m not sure.</p><h2>The Undecided Policy at Stripe</h2><p>We recently launched an app for a large airline to allow their crew members to order meals whilst traveling around the world. When building the app, we were asked who would be the best fit on the payments side. Instantly we recommended Stripe.</p><p>I <em>know</em> Stripe. I&#8217;ve witnessed the company grow from strength to strength through hard work, excellent strategy and exceptional talent. I&#8217;m one of their biggest advocates.</p><p>We launched our new app with Stripe powering payments over IBAN and card. When it came time to process the payments, we were flagged and blocked on the IBAN side within 5 payments. Yet again, like Revolut, Stripe doesn&#8217;t offer a telephone customer service channel so I directed my queries to their chat service.</p><p>In multiple conversations I was told;</p><ul><li><p>You have to wait until your account is in good standing with multiple payments successful before the block can be lifted.</p></li><li><p>The block cannot be lifted.</p></li><li><p>You have a limit of &#8364;10,000 on IBAN payments</p></li><li><p>You have a limit on the number of IBAN payments</p></li></ul><p>All disconnected policies and confused. I believe the conversation is <a href="https://stripe.com/ie/legal/service-providers">outsourced to Telus</a>. To resolved it quickly, I was bold, I went to a contact who is quite high up in Stripe and asked them to review this. Within a couple of emails, my account was back operational and all was well.</p><h2>The Future</h2><p>I understand it is an extremely difficult and challenging topic for companies of these sizes. How to you outsource customer service and empower the agents to truly fix and resolve the customers issues. This is a challenge I&#8217;m excited to solve.</p><p>As we continue to build Laila, I see two core north stars.</p><p><strong>Brand</strong></p><p>The experience should be on brand for the company. The tone, the personality, all the way through to the KPIs. If customer experience is a core driver for the company over task/issue resolution, lets make that happen.</p><p>I heard a great quote from Seth Godin. If Nike opened a hotel, you could easily visualise what it would be like. If Hyatt made a shoe, you would have no idea. This is the power of Brand. </p><p><strong>Empowerment</strong></p><p>The experience can only be as good as it&#8217;s capability to resolve your issue. If you tie the hands of the person trying to help you, you&#8217;re shooting yourself in the foot.</p><p>In Laila, we are developing a range of integrations into the top providers but we will also work to build bespoke custom integrations for businesses.</p><p>Onwards!</p><p>Brian</p>]]></content:encoded></item><item><title><![CDATA[Part 3 - Did I just get my first customer for my AI app!?]]></title><description><![CDATA[I spent the last two weekends build an AI power assistant to help medical spas with their client experience and customer service and... I might just have gotten my first customer!]]></description><link>https://bkenny.com/p/part-3-did-i-just-get-my-first-customer</link><guid isPermaLink="false">https://bkenny.com/p/part-3-did-i-just-get-my-first-customer</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Sun, 26 May 2024 12:12:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.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/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1269756,&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}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a590f17-8947-4dd2-a5a5-6fdf848874d8_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>Over the past two weekends and a few late evenings, I&#8217;ve been building an AI assistant called Laila. I&#8217;ve documented the process over the past two weeks. Here is <a href="https://iambrian.substack.com/p/part-1-learning-to-build-an-openai">part 1</a> and <a href="https://iambrian.substack.com/p/part-2-an-openai-booking-assistant">part 2</a>.</p><p>It started as an experiment. Could I leverage the power of AI to help solve a pain point that I knew once of our clients in <a href="https://www.minicorphq.com/">MiniCorp</a> had. After building an initial product, I handed it over to <a href="https://www.sisuclinic.com/">Sisu</a> a few days ago and asked them what they thought! </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><p>I want to really thank <a href="https://x.com/patphelan">Pat Phelan</a> too. He is always so open to new ideas and does everything he can to help those around him achieve great things for nothing in return. He&#8217;s one of the top people I&#8217;ve ever gotten to know. Thanks Pat. </p><h2>The Product</h2><p>Technically solving a challenge is one thing. Wrapping up the solution into a product is something much different. I&#8217;ve decided to call this product Laila. The north star and goal of Laila is to provide assistance to busy services based companies that are in regulated industries. Thing about medical, legal, finance or airlines for example. </p><p>For the moment, Laila will focus on the medical space and her core focus is to help companies through providing an exceptional front of house experience. </p><h2>We need a customer</h2><p>A plan&#8230; is worthless. A customer willing to pay, is everything. </p><p>On Friday, I wrote up on a whiteboard in our office the final pieces of functionality that I believed we needed before I could let the eyes of a potential customer take a peek. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png" width="1456" height="829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2471679,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466e972-ca5a-4afb-bca5-722d7ddad639_1666x948.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>A simple, quick and dirty list. I got my head down and made it happen. </p><p>This got me to a product that I felt I could hand over. Next, I recorded a video walkthrough showcasing the power of Laila. How you could;</p><ul><li><p>Managing your clinics, services and people</p></li><li><p>Book an appointment</p></li><li><p>Cancel an appointment</p></li><li><p>Managing upcoming appointments</p></li><li><p>Ask for someone to contact you</p></li></ul><p>It looked fantastic. I knew I had to rip the bandaid off and get it over to the team in Sisu and so&#8230;. I did. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png" width="1456" height="1100" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1100,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:576536,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f0eb32-b694-475a-b7fb-de2e26ea062c_3118x2356.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>I failed&#8230; like an idiot</h2><p>I made two silly mistakes. </p><ol><li><p><strong>Mistake 1</strong>: You see, when Laila hits our API to find available clinics, she gets returned a list of IDs as strings. I, stupidly, had set this to &#8220;integer&#8221; within the OpenAI function which caused her to do some strange things. An easy problem to solve, but looks terrible to a prospective client.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png" width="370" height="524.4845360824743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1100,&quot;width&quot;:776,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:135185,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b91dbf-9443-4d90-826e-0755aa5c8c2d_776x1100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p><br></p></li><li><p><strong>Mistake 2</strong>: I used Twilio for the SMS validation. It&#8217;s fantastic but I forgot to make the account &#8220;production&#8221; ready. This meant that when they went to test, they couldn&#8217;t get a text message. Face. Palm.<br><br><em>Twilio::REST::RestError: [HTTP 400] 21608 : Unable to create record The number +35389XXXXXXX is unverified. Trial accounts cannot send messages to unverified numbers; verify +35389XXXXXXX at twilio.com/user/account/phone-numbers/verified, or purchase a Twilio number to send messages to unverified numbers <a href="https://www.twilio.com/docs/errors/21608">https://www.twilio.com/docs/errors/21608</a></em></p></li></ol><h2>Communication is key</h2><p>I fixed this issues, rapidly but more importantly, I communicated clearly and quickly to the potential customer about how I&#8217;ve solved them and what has occurred. I&#8217;ve witness far to many companies not offer transparency on their issues. My motto is to hold your hand up and tell the truth when you fail and it has served me well.</p><p>After some persistence, I got two major validation points.</p><ol><li><p>A happy customer email: As a constantly refreshed to see how people were using Laila, I could see some good interactions coming through. Then I got an email with the words <em>&#8220;Mind officially blown. Blown. You are really onto something here Brian , seriously&#8221;</em>. Honestly, this meant the world to me.<br></p></li><li><p>Lots of interactions: I could see that internally Laila was being shared and that people were testing her capabilities. This was a major validation point too. </p></li></ol><h2>Testing &#8594; Production</h2><p>Over the next week, my fingers and toes will be crossed to see if I can get Laila live and on Sisu&#8217;s core website. This will prove the biggest validation point and one that I know I can then push Laila further and into more customers hands.</p><p><strong>I hope that this series of posts really inspires others to create. A good solution, hard work and great people can really create exceptional things.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Part 2 - An OpenAI Booking Assistant... that can hack itself?]]></title><description><![CDATA[I'm building an AI assistant that could help potential clients manage their appointments for a client of ours, Sisu.]]></description><link>https://bkenny.com/p/part-2-an-openai-booking-assistant</link><guid isPermaLink="false">https://bkenny.com/p/part-2-an-openai-booking-assistant</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Sun, 19 May 2024 17:00:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.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/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:924881,&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}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0cf744-214d-4e95-94e1-e986800cc484_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>Last weekend, I set myself a challenge of building an AI assistant that would help a prospective client manage their appointments for our client, Sisu. If you haven&#8217;t read <a href="https://iambrian.substack.com/p/part-1-learning-to-build-an-openai">Part 1</a>, I&#8217;d suggest starting there.</p><p>This week, I wanted to focus on the integration into Sisu&#8217;s booking system, Phorest. I set a few core functionality tasks for the AI;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><ul><li><p>What are my upcoming appointments?</p></li><li><p>Can you help me cancel an appointment?</p></li><li><p>What services are available at a clinic?</p></li><li><p>What Doctors are available at a clinic?</p></li><li><p>What available appointments are there?</p></li></ul><h2>Account Management</h2><p>When looking up a clients upcoming appointments, I need to validate that they have an account. I decided to do this by asking them for their mobile phone number and sending them a validation text. Once they are confirmed, I could then permit the AI to lookup their upcoming appointments.</p><p>Below, you&#8217;ll notice that Laila has performed really well when being passed 4 or 5 digit codes. She doesn&#8217;t passing anything back to the API until it&#8217;s the valid length. It then checks if the code is correct via the API and handles potential errors really well.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif" width="369" height="515.1832460732984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/355cf950-67b8-430b-9f09-dc251505af04_573x800.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:573,&quot;resizeWidth&quot;:369,&quot;bytes&quot;:1620710,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355cf950-67b8-430b-9f09-dc251505af04_573x800.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>Once I think have the list of appointments, she can cancel them really easily by passing the request to our API.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png" width="384" height="536.64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1118,&quot;width&quot;:800,&quot;resizeWidth&quot;:384,&quot;bytes&quot;:122399,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2234c74e-3b63-41d9-95dd-463402dd4e85_800x1118.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>Can Laila hack herself?</h2><p>Lets run a little experiment. I wonder can Laila manage to hack itself and find a way for an attacker to find a way to look up other peoples appointments? </p><p>I know the way I&#8217;ve coded the API and auth system will not allow this but it&#8217;s interesting to watch her try.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:378,&quot;bytes&quot;:4343326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6f3874-8780-4381-9f93-d96b1e3cb733_581x800.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That&#8217;s really interesting. I don&#8217;t return the verification code to Laila so there&#8217;s nothing she can do but she&#8217;s happy to tell me all about the function call.</p><p>I can limit this within the configuration of the assistant but it doesn&#8217;t highlight another concern. A spammer could start pumping out verification checks. I&#8217;ll need to add some handling for this case.</p><h2>Feeding Laila</h2><p>In order to increase the capabilities of Laila, I started to add some more functions to her.</p><ul><li><p>The ability to get clinics</p></li><li><p>The ability to get services in those clinics</p></li><li><p>The ability to get Doctors in those clinics</p></li><li><p>The ability to get available appointment slots based on a service, clinic and even a Doctor! </p></li></ul><p>Nothing here is groundbreaking but it could be really monotonous for the user to have to ask the questions in sequence. For example</p><ol><li><p>&#8220;What clinic is near me?&#8221;</p></li><li><p>&#8220;What services are available in that clinic?&#8221;</p></li><li><p>&#8220;What Doctors are available in that clinic?&#8221;</p></li><li><p>&#8220;What is the next available slot for this Doctor in for that service in that clinic?&#8221;</p></li></ol><p>This <strong>ARE</strong> the API requests that need to be logically sent though.</p><p>I want something much more intuitive to happen, a simple question like:</p><div class="pullquote"><p><strong>Is Dr Brian Cotter available for a lip flip in Cork next Tuesday?</strong></p></div><p>The response, is really good.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png" width="444" height="1122.642369020501" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2220,&quot;width&quot;:878,&quot;resizeWidth&quot;:444,&quot;bytes&quot;:272623,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7313d2a0-3c7f-4f84-80a8-e7dfb5662cfd_878x2220.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>Ok, so she&#8217;s a little confused on a few points. She starts out by saying &#8220;Dr. Brian Cotter <strong>has available appointment slots</strong> for a Lip Flip service at the Cork - Sisu Clinic <strong>next Tuesday</strong> (which is not May 24th)&#8221; but then clearly goes on to describe how that isn&#8217;t Tuesday with &#8220;It appears Dr. Brian Cotter is <strong>not available for next Tuesday</strong>. However, you can choose from these available slots on May 24th or look for another date.&#8221;</p><p>I&#8217;ve noticed this quite a bit. These errors where she contradicts or corrects herself. For example, she has feeling that it&#8217;s the 5th of October, 2023. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png" width="418" height="588.5692695214105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1118,&quot;width&quot;:794,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:121561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6b1e66-2b86-49f6-af10-fb81c62b5c94_794x1118.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>Next steps</h2><p>I think I can solve 90% of these issues by correctly prompting Laila and asking her to only share pertinent information. The next steps are</p><ul><li><p>Can Laila book an appointment for a client?</p></li><li><p>What does an admin dashboard for people to oversee how Laila is interacting with people look like?</p></li><li><p><strong>When the audio aspect of that latest ChatGPT is available, can I call Laila on the phone!?</strong></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Part 1 - Learning to build an OpenAI powered assistant for a client]]></title><description><![CDATA[I decided to set myself a challenge. We built a booking flow for a client of ours, Sisu. I want to build an AI assistant that would talk a prospective client through this process but in a fluid way.]]></description><link>https://bkenny.com/p/part-1-learning-to-build-an-openai</link><guid isPermaLink="false">https://bkenny.com/p/part-1-learning-to-build-an-openai</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Sun, 12 May 2024 12:52:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6c72412a-5740-41c1-8c70-4eb70987e82d_2576x1707.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I love learning. I hate the idea of stagnating or not getting to play with the latest technology. It fires me up. Of course, in my role as CEO at <a href="https://minicorphq.com/">MiniCorp</a>, I often don&#8217;t have a lot of time to dedicate to it, but this weekend I did!</p><h2>The Challenge</h2><p>I decided to set myself a challenge. We built a booking flow for a client of ours, <a href="https://app.ie.sisuclinic.com/">Sisu</a>. Sisu is a leading aesthetic clinic and they are powered by <a href="https://www.phorest.com/">Phorest</a>. In order to book an appointment you need</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><ul><li><p>The clinic you&#8217;d like to book with</p></li><li><p>The treatment you&#8217;d like</p></li><li><p>The date &amp; time of your appointment</p></li><li><p>The provider you&#8217;d like to administer the treatment</p></li></ul><p>I want to build an AI assistant that would talk a prospective client through this process but in a fluid way. In the screenshot below, you&#8217;ll notice the flow is sequential. You need to select your clinic&#8230; then your treatment&#8230; then your slot etc.</p><p>I want to know, can I get an AI assistant to be fluid about this conversation and answer questions like</p><ul><li><p>&#8220;Where in Ireland do you offer Jaw-Sculpting?&#8221;</p></li><li><p>&#8220;Is Botox the same price across all clinics in Ireland?&#8221;</p></li><li><p>&#8220;Is Dr Brian Cotter working in any clinics in Ireland next week?&#8221;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png" width="1456" height="1345" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1345,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:663401,&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}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedbac455-2826-472e-b544-619d6bd41ad7_3052x2820.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>The Setup</h2><p>I&#8217;m a Ruby on Rails expert for at least 20 years so I&#8217;m super fast at it. With an impending deadline, I created a brand new Rails 7 project and set to accomplish my first task</p><p>Can I use the turbo frames feature in Rails 7 to display chat like messages?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif" width="724" height="361.095" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:399,&quot;width&quot;:800,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:216528,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad595eb-cb64-4658-8b7f-72cd453eaefb_800x399.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>That was very achievable and I was off to the races in a few minutes. Next, it was time to set up a nice structure. I set up a model for a Chat and a Message and started with some styling of what this chat window might look like.</p><p>I wanted it to feel like there was a person on the other end so I wanted a photo or avatar that conveyed that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif" width="800" height="409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:242120,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6d0479-da9c-436f-9fd4-b54ae550fb86_800x409.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>I found the barebones CSS and JS on a Codepen that I should really reference here but I&#8217;ve completely lost the link. Sorry! Either way, I heavily edited the CSS to make it more polished. I now had a little dialog and the feeling of chatting with someone on the other end.</p><h2>Gathering the Data</h2><p>We have been using the <a href="https://developer.phorest.com/">Phorest API</a> for some time so it didn&#8217;t take long to implement an API service that would sync the branch, categories and service data for Sisu in Ireland. </p><p>Storing this data locally would hopefully speed up the communication with OpenAI and meant we could potentially look at integrating this assistant with any company that uses Phorest. </p><h2>Adding OpenAI</h2><p>Here comes the fun! I had never really worked with OpenAI or any LLM before so I&#8217;m very much cutting my teeth here.</p><p>I set my first goal of simply integrating the Ruby OpenAI gem and having a conversation like you would with OpenAI. Nothing fancy. You can find the OpenAI gem <a href="https://github.com/alexrudall/ruby-openai">here</a>.</p><p>Within the gem, they give some really strong documentation to get up and running and start streaming.</p><pre><code>client.chat(
    parameters: {
        model: "gpt-3.5-turbo", # Required.
        messages: [{ role: "user", content: "Describe a character called Anna!"}], # Required.
        temperature: 0.7,
        stream: proc do |chunk, _bytesize|
            print chunk.dig("choices", 0, "delta", "content")
        end
    })
# =&gt; "Anna is a young woman in her mid-twenties, with wavy chestnut hair that falls to her shoulders..."</code></pre><p>Fantastic! I also found <a href="https://gist.github.com/alexrudall/cb5ee1e109353ef358adb4e66631799d">this really impressive GitHub Gist</a> that literally walked me through the streaming process. I&#8217;d highly recommend a read. A large hat tip to <a href="https://twitter.com/alexrudall">Alex Rudall</a> for this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif" width="480" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1335967b-523c-41f2-ad7d-43053d767126_480x305.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:621329,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1335967b-523c-41f2-ad7d-43053d767126_480x305.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><h2>Learning the OpenAI structure</h2><p>Now that I had my UI and integrated OpenAI, it was time to learn the more complicated structures of how OpenAI works. It&#8217;s broken down to the following;</p><ul><li><p><strong>Assistant</strong><br>The OpenAI assistant API essentially allows you to determine how OpenAI will interact with your application or users.</p></li><li><p><strong>Thread</strong><br>A thread is like a chat. It is a thread of messages to and from OpenAI and contains the messages and any other related information</p></li><li><p><strong>Run</strong><br>Once you had a message to a thread, you then &#8220;run&#8221; your assistant. The assistant should have the full context of the previous messages.</p></li><li><p><strong>Functions</strong><br>Finally, a function is where you can specify to OpenAI when to request additional information from the application through a function. </p></li></ul><p>All very nice! After learning this, I decided that I should create a new OpenAI thread when a new chat has been created by the user. The thread will be created with my assistant and the context of my assistant has been set to;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:396962,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07c9b090-94c6-47f1-94f2-9916bbc689a3_3000x1750.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><div class="pencraft pc-reset icon-container restack-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-refresh-cw"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></div><div class="pencraft pc-reset 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"><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></div></div></div></div></a></figure></div><p>You can spot things like:</p><ul><li><p>Once we know the location, we can then run the function <strong>get_clinics</strong> which will return a list of available clinics and their associated <strong>unique_clinic_id</strong>.</p></li><li><p>We can get a list of available services at a clinic by providing the <strong>unique_clinic_id</strong> to the <strong>get_services_for_clinic</strong> function. </p></li></ul><p>This gives you an idea of how these functions are being called. I have stored all of the clinics and the services the clinics provide locally. I think allow the assistant to call for this information when it needs to. This gives me;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2394123,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d88badf-59f3-4041-bbef-4366948ef3fe_766x800.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><br>Woah! Powerful. Lets keep going! I need the &#8220;three dots&#8221; to show that the AI is thinking at some point.</p><h2>It&#8217;s still sequential, that&#8217;s not good enough</h2><p>I&#8217;m still asking for a clinic and then what services are available. I decided to see if I could then daisy chain requests and could GPT-4 figure it out!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2721911,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 424w, https://substackcdn.com/image/fetch/w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 848w, https://substackcdn.com/image/fetch/w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 1272w, https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cacb396-f7b9-4148-98f4-d3844da8a692_660x800.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That&#8217;s nice! I can see this really growing where the LLM is learning about the services and using the context to fire the right functions at the right time. </p><h2>Next Up</h2><ul><li><p>It seems slow. When firing both get_clinic and get_clinic_services, it&#8217;s too slow. How can I speed this up?</p></li><li><p>Can I book an appointment or see a list of available slots?</p></li><li><p>Add the three dots to show that the AI is thinking</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Are you a creator or an entrepreneur?]]></title><description><![CDATA[After building over 100 digital businesses, I have seen some succeed and most fail. Why do they fail? In my experience, it's about truly knowing yourself and the path ahead.]]></description><link>https://bkenny.com/p/are-you-a-creator-or-an-entrepreneur</link><guid isPermaLink="false">https://bkenny.com/p/are-you-a-creator-or-an-entrepreneur</guid><dc:creator><![CDATA[Brian Kenny]]></dc:creator><pubDate>Sat, 27 Apr 2024 17:16:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a61281b-92e5-4ab3-89a1-fe3cd050e378_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Note; This is my first newsletter and you&#8217;ve received it because you have signed up to my newsletter at an earlier stage. If you would prefer not to receive these, please unsubscribe below. It won&#8217;t hurt my feelings.</em> </p><p>A creator can often spot interesting challenges. I certainly did. In 2012, I built an app called <a href="https://web.archive.org/web/20030315000000*/spots.io">Spots</a> that would allow you to follow locations rather than people on Instagram. It gained some traction but enviably died. You can no doubt guess the reasons why it failed.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><p>An entrepreneur can often spot if a new business or product might be successful. I had the opportunity to work with Kevin and Dave from <a href="https://butternutbox.com/">Butternut Box</a> and build the first version of the digital product. They recently raised a funding round of $350m and continue to grow.</p><p>In my opinion, a creator is like a chef. They care intimately about the dish they are creating. It&#8217;s an experience to be enjoyed. An entrepreneur works with that chef to understand if a restaurant is viable. The location, the ingredients, the salaries. They also need to see past the single restaurant through to the potential of scaling across multiple locations of even franchising. </p><p>A creator and entrepreneur are often confused in my experience. After building hundreds of digital products, I believe that the marriage between a creator and entrepreneur is an unstoppable force. Lets take a look at the following stages of a business&#8230;</p><h2><strong>First, The Soup &#127836;</strong></h2><p>I compare the initial product idea to a cooking recipe. Your idea comprises of different features or <em>ingredients</em>. Discovering if you are missing an ingredient or if you have the incorrect proportion of the ingredients is vital. The goal is to get your recipe right.</p><p>At the start, the creator is in your kitchen experimenting. They are cooking different possible combinations and taste testing. After lots of taste testing, your taste buds are all out of whack from the sheer volume of soup you're consuming! This is why it is essential to taste test your recipe on <strong>honest</strong> people. They need to be able to tell if you if there is too much salt, too much tomato etc. This is often referred to as "product validation".</p><h2><strong>The Restaurant &#128105;&#8205;&#127859;</strong></h2><p>Now that you have validated your product/soup, it's time to open a restaurant. A big step that brings with it a slue of new challenges. Customer service, hiring, finances and customer retention all come into the mix.</p><p>Remember, you know you have the recipe for a great soup! Do not forget this and focus your attention on opening a great restaurant. You must refine your operations, work to build a great culture with your staff and ensure your customers have a wonderful experience.</p><p>Easier said than done right? I have seen the process of refining a single store take 12 months and more. Much like the soup, getting the restaurant recipe right and documenting the internal processes for an optimised restaurant is key. &#128273;</p><h2><strong>The Franchise</strong></h2><p>You have a fantastic soup that is being sold in a wonderful restaurant, what's next? Well, it's time to duplicate the restaurant across multiple locations.</p><p><em>It is at this point that I believe that venture capital provides the most value. You have proven that customers enjoy the soup and the experience. They continually come back. The barrier is the finances required to open more locations nearby similar customers.</em></p><p>When you think about it, raising money at The Soup stage can often lead to a lot of problems. You end up giving up too much equity, it's extremely risky and more often than not, there is no need to raise money at that stage at all. A home kitchen, some local store ingredients and passion can get you a lot further than the cash will.</p><p>Thanks for reading,<br>Brian</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bkenny.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">Brian&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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></channel></rss>