<?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[Connecting Dots]]></title><description><![CDATA[Some dots of thoughts that hopefully connect someday. ]]></description><link>https://newsletter.connectingdots.com</link><image><url>https://substackcdn.com/image/fetch/$s_!XRd1!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26d0773-982b-478e-a0aa-cfc9e3c8d4a6_1280x1280.png</url><title>Connecting Dots</title><link>https://newsletter.connectingdots.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 11:23:36 GMT</lastBuildDate><atom:link href="https://newsletter.connectingdots.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Dharmesh Shah]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[connectingdots@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[connectingdots@substack.com]]></itunes:email><itunes:name><![CDATA[dharmesh]]></itunes:name></itunes:owner><itunes:author><![CDATA[dharmesh]]></itunes:author><googleplay:owner><![CDATA[connectingdots@substack.com]]></googleplay:owner><googleplay:email><![CDATA[connectingdots@substack.com]]></googleplay:email><googleplay:author><![CDATA[dharmesh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How To Build a Defensible A.I. Startup]]></title><description><![CDATA[With all the excitement around the recent OpenAI Dev Day event (whereby they launched a slew of new capabilities), one of the questions that has been floating around the Internet is:]]></description><link>https://newsletter.connectingdots.com/p/how-to-build-a-defensible-ai-startup</link><guid isPermaLink="false">https://newsletter.connectingdots.com/p/how-to-build-a-defensible-ai-startup</guid><dc:creator><![CDATA[dharmesh]]></dc:creator><pubDate>Wed, 08 Nov 2023 16:24:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5f2454fe-9987-4aad-a18e-5646db544def_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With all the excitement around the recent OpenAI Dev Day event (whereby they launched a slew of new capabilities), one of the questions that has been floating around the Internet is:</p><p>How many startups did OpenAI kill during that event?</p><p>In other words, what startups are no longer necessary/relevant given what OpenAI launched.</p><p>The related question that comes up is:</p><p><strong>How does one build a defensible A.I. startup?</strong></p><p>Let&#8217;s take a step back. The way you build a defensible A.I. startup is the way you build any kind of defensible startup. A.I. startups are interesting now because of the new opportunities that generative A.I. has unlocked &#8212; and because the speed at which things are happening.  </p><p>Also, recognize that this question of defensibility is not a binary one. It&#8217;s not that one startup is defensible and another is not. It&#8217;s a <em>spectrum</em> of defensibility. And, there are different factors that will increase the defensibility. </p><p><strong>Factor 1: Creating Enough Customer Value</strong></p><p>The first thing to recognize:  The most common threat your startup has of being rendered irrelevant is <em>not</em> that OpenAI (or someone else) renders it irrelevant because of a new launch. The most common cause of death is that your startup wasn&#8217;t relevant enough in the first place because it didn&#8217;t create <em>enough</em> customer value. Note: Chances are, you&#8217;re creating <em>some</em> customer value (no entrepreneur intentionally starts a company that doesn&#8217;t create customer value). The issue is that you have to create <em>enough</em> customer value to overcome the natural inertia of the market. In other words, the energy of your startup has to overcome the friction people have to go through to even <em>consider</em> your product.</p><p><strong>Factor 2: Doing Hard, Helpful Things</strong></p><p>To increase defensibility, you need to do things that are relatively hard to do which makes your product more helpful to customers. The reason they need to be <em>hard</em> things is that otherwise others can readily do it and you have a hard time differentiating. </p><p>This is usually where the new crop of A.I. startups often fail. Often, they are described as &#8220;thin wrappers around the GPT APIs&#8221;.  </p><p>Here&#8217;s an example: You build an A.I. powered tool that helps the recruiting department write effective job postings.  A couple of years ago, that would have seemed magical because nobody had really figured out how to understand natural language &#8212; or to <em>write</em> in natural language.  But now, with the popularity of ChatGPT (and the GPT APIs more broadly), this is a widely available technology. So, the hard thing you were doing is no longer hard. In fact, it&#8217;s easy enough that customers can reasonably just use ChatGPT to get a decent approximation of what they need. Perhaps not as good as yours, with its fancy prompt-engineering, but often good enough. </p><p>So, to increase your defensibility, you need to do things of value that are going to be hard for others to do for some period of time. If all you&#8217;re effectively doing is supplying GPT a really fancy prompt, that&#8217;s unlikely to be enough if your market opportunity is large enough. </p><p>There&#8217;s an important point embedded in there: The more customer value you are creating, the more <em>economic opportunity</em> your startup has. And, the more opportunity there is, the more <em>competition</em> that opportunity will draw. So, you&#8217;re trying to balance doing something interesting enough to be valuable, but have a counter-balancing difficulty that will limit the number of competitors that also attempt it.</p><p>This one&#8217;s worth breaking down, in terms of the <em>types</em> of hard things you can do.</p><ol><li><p>You have access to a <strong>proprietary asset</strong> (like data) that others don&#8217;t have easy access to.  In our &#8220;write job postings&#8221; example, perhaps you have a corpus of thousands of job postings including some outcome scores (as to how well they did). You could use this data to create <em>better</em> job postings. Others don&#8217;t have ready access to this data.  Note: The asset doesn&#8217;t have to be data. It could be prior code that you can leverage. It could be hard-to-gain partnerships with suppliers. Anything that&#8217;s valuable and hard.</p></li><li><p>You have <strong>efficient access to customers</strong>.  This is an oft-ignored one.  If you have built channels to reach customers in efficient ways, that&#8217;s an advantage. Even if others build a similar (or even slightly better) product, you can still have defensibility if you have a way of more easily gaining users/customers.  Specifically in the A.I. world, often access to users/customers provides a related advantage: more data. It&#8217;s possible to create a virtuous loop whereby the more users of your product, the better the product gets (because of feedback loops) thereby making it easier to get even more users. That&#8217;s often hard for others to replicate.</p></li><li><p>You have a <strong>network effect</strong>. A simple and common example is if you&#8217;re creating a marketplace of some sort.  These are often hard to do &#8212; but that&#8217;s precisely what makes them so valuable, because once you have a strong network effect in place, it&#8217;s really hard for others to replicate or displace it. </p></li></ol><p></p><div><hr></div><p>Ok, so let&#8217;s dig in a bit specifically to A.I. startups. Some additional thoughts:</p><ol><li><p>Building foundational LLMs is exceptionally hard (and expensive). So, there&#8217;s an opportunity to create some defensibility there. But the challenge is that what is hard today may be rendered not-so-hard tomorrow either through open source (which is moving at a torrid pace) or a release by one of the existing LLM providers (like OpenAI).</p></li><li><p>If you&#8217;re building dev tools that make it easier for developers to leverage generative A.I., you are at the risk of the LLM providers themselves building that into their offering. They have every incentive to make their platform <em>easy</em> and <em>useful</em>. They&#8217;re not intentionally trying to kill you, they&#8217;re just trying to better serve the developers on their platform.</p></li><li><p>If you&#8217;re building a &#8220;ChatGPT for [x]&#8221;, it&#8217;s important to be mindful of whether the differentiation you have on top of ChatGPT is really enough. Especially now that OpenAI is launching custom &#8220;GPTs&#8221; with their own app/GPT store.</p></li></ol><p>To close out, let&#8217;s summarize.</p><p>Here&#8217;s what I&#8217;d ask myself:  How valuable is what I&#8217;m doing? What makes this hard for others to do? Could this get dramatically easier because of what others launch or how the industry evolves? If this <em>does</em> get easier, do I have a &#8220;Plan B&#8221; to create differentiated value?<br><br>The important thing is to be honest with yourself.</p><p></p>]]></content:encoded></item><item><title><![CDATA[The Subtle Strategic Moat-Widening of OpenAI's Dev Day ]]></title><description><![CDATA[As a developer, I'm excited. As an OpenAI investor, even more so.]]></description><link>https://newsletter.connectingdots.com/p/the-subtle-strategic-moat-widening</link><guid isPermaLink="false">https://newsletter.connectingdots.com/p/the-subtle-strategic-moat-widening</guid><dc:creator><![CDATA[dharmesh]]></dc:creator><pubDate>Tue, 07 Nov 2023 15:18:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1fcf2ae7-942b-4dfb-9269-4f90a7653c2d_1976x1788.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As you know, OpenAI has been on fire. First with the launch of ChatGPT to an unsuspecting world in November 2022.</p><p>And now, with a slew of updates and improvements launched at their first Dev Day event yesterday (Nov 6 2023).</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.connectingdots.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dharmesh's Dots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Lots has been written about all the new features and capabilities, so I&#8217;m not going to dig into that here. But, not a lot has been written about the <em>strategic</em> benefits of some of these launches.</p><p><strong>LLMs Are Somewhat Of a Commodity</strong></p><p>GPT-4 is the most <em>capable</em> LLM out there. But that does not confer absolute strategic advantage as one might think.<br><br>Why?<br><br>Because if you put aside the power of an individual model (like GPT-4), the underlying <em>interface</em> is actually very simple.</p><p>LLMs are simply a function that takes text in (the prompt) and provides text back out. Now granted, there&#8217;s a lot of <em>variability</em> in power and capability, but the <em>interface</em> is quite consistent.</p><p>This is why it&#8217;s relatively easy to move from one model to the other to try it out. If you&#8217;re using GPT-3.5 or GPT-4, trying out Anthropic&#8217;s Claude (to gain access to the 100k tokens) or to the open source Mistral LLM is relatively straight-forward.  You&#8217;re still passing text in and getting text out.  And there are new, quite capable LLMs coming out seemingly every week. </p><p>Because the interface is simple and consistent, as new models come out, it&#8217;s not too hard to actually <em>try out</em> a new model or in some cases, use model X for some use cases and model Y for other use cases.</p><p><strong>Strategic Impact Of Dev Day Launches</strong></p><p>Now, let&#8217;s look at some of the key new capabilities that OpenAI launched. I want to focus on the ones that don&#8217;t make the foundational model better per se, but just make the model easier to work with.</p><p>Anything that raises the level of abstraction that developers can work at has an advantage, because the higher the level of abstraction, the higher the number of developers that you get on the platform (all things being equal). </p><p>But, there&#8217;s a subtle but significant side-effect of these improved abstractions:  In order to <em>benefit</em> from these better abstractions: The underlying interface is no longer simply pass text-in, get text-out.</p><p>For example: In the new Assistants API, OpenAI will now do the memory management for you. So you can implement a conversational-style interaction in your chatbot without having to worry about context windows, sliding windows of memory, selective summarization or a bunch of other things. You just use the new APIs to interact with the LLM and it manages all the memory for you.</p><p>Why is this a big deal?</p><p>Because the more developers start <em>using</em> this new API with memory management,  the less of a commodity GPT-4 becomes. Now, you can&#8217;t just willy-nilly switch to another model that comes out next week without first considering whether it <em>supports</em> memory management and even if it does, you have to figure out whether your code has to change to match however that new model supports memory management. OpenAI does it elegantly with the notion of assistants, threads and messages. But there&#8217;s no requirement that other LLMs have to use those same concepts.</p><p>Same with the new Retrieval features in the Assistants API.  You get a lot of power, and you get it simply, but you have to use the feature in the way OpenAI designed it.<br><br>Same with Code Interpreter and data analysis.<br><br>All of these are massively powerful features &#8212; and all make OpenAI&#8217;s platform <em>different</em> from the other models that are out there.  </p><p>Different not just in what OpenAI can do, but different in terms of <em>how</em> you interact with the platform and use the capabilities.</p><p>Net result: The switching costs go up the more people use these features as a result of which the moat around OpenAI widens. That&#8217;s the strategic benefit.</p><div><hr></div><p>Now, of course, there will be open source libraries like LangChain that will emerge to help abstract away these differences and help you move across models while still preserving some of these new features &#8212; but as well intentioned and well executed as those implementations will be, there will <em>always</em> be leaks in the abstractions. Things won&#8217;t always work <em>exactly</em> the way you want. Switching models will still require some thought and consideration.</p><p>So, people will stay in the warm confines of OpenAI&#8217;s platform longer because there&#8217;s no <em>reason</em> to try out other models and increasing reason not to. It&#8217;s cold and chaotic out there.</p><p>And just like nobody got fired for buying IBM back in the day, nobody gets fired for building with OpenAI. </p><p>This makes OpenAI the company more valuable. It&#8217;s strategy 101.</p><div><hr></div><p>p.s. Apologies for the wonky image/illustration. I was lazy and just gave this post to DALL-E 3 and let it create a visual.  It&#8217;s not awful, but there&#8217;s clearly work to do.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.connectingdots.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dharmesh's Dots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The 3 Biggest Unlocks From OpenAI Dev Day]]></title><description><![CDATA[The 60%+ reduction in price doesn't even make the cut]]></description><link>https://newsletter.connectingdots.com/p/the-3-biggest-unlocks-from-openai</link><guid isPermaLink="false">https://newsletter.connectingdots.com/p/the-3-biggest-unlocks-from-openai</guid><dc:creator><![CDATA[dharmesh]]></dc:creator><pubDate>Mon, 06 Nov 2023 21:49:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e834a2dd-9502-44eb-869a-7503dbc06ef1_2106x1068.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today was the big day of OpenAI&#8217;s first Dev Day event.</p><p>Before we dig in, quick disclosures:<br>1. I&#8217;ve been a long-time fan of OpenAI &#8212; and am also an investor.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.connectingdots.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dharmesh's Dots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>2. I have been tinkering with alpha versions of the APIs for a little while now.</p><p>Here&#8217;s what I&#8217;m personally most excited about.</p><p><strong>#1 Memory/Thread Management</strong></p><p>If you&#8217;ve done any development of a chat bot (like <a href="https://chatspot.com">ChatSpot.com</a>) using GPT, you&#8217;ve likely wanted to implement some sort of &#8220;memory&#8221; so that users can have a conversation with your chat bot (similar to what can be done in ChatGPT). This allows users to ask &#8220;follow-up&#8221; questions.<br><br>The problem is that implementing such memory is non-trivial.  First off, all memory has to be squeezed into the context window and it&#8217;s often hard to know a priori how much context window you should be consuming for the memory vs. the prompt output. Then, you likely need to &#8220;summarize&#8221; some of the conversation in order to compress more of the previous conversation into the context window. And, if the kinds of things you have in memory is actually <em>data</em> (like the results of a data query), life is really hard, because there&#8217;s no good way to <em>summarize</em> that.  <br><br>Now, with the new Assistants API, OpenAI does all of the heavy lifting for you. You just create a &#8220;thread&#8221; and add messages to that thread. All the management of memory is done for you.<br><br><strong>#2 Retrieval Support in API<br><br></strong>One of the most common approaches to implementing LLM apps that need to have access to custom knowledge is using what&#8217;s called Retrieval Augmented Generation (RAG). With RAG, you take the custom knowledge/data you have and create vector embeddings of it and store in a vector database of some sort. Then, when a user submits a query, you do a semantic search to find the most relevant documents based on the user query. You then pass *those* documents along to the LLM inside the context window along with the user query. This all works pretty well, but takes some effort.</p><p>OpenAI has now made that easy with support for retrieval right in the API. When building out your bot/assistant, you can first up[load your custom knowledge. GPT will then access that knowledge as needed in order to respond to user prompts. It basically takes care of the RAG for you.<br><br><strong>#3 Code Interpreter Support</strong></p><p>With the new Assistants API you can now also enable &#8220;code interpreter&#8221; support (also known as data analysis support). This lets you leverage a Python runtime engine right inside GPT so GPT can generate and run code to do data analysis or otherwise respond to a user prompt. Very, very powerful.  </p><p></p><div><hr></div><p>That&#8217;s what I&#8217;m most excited about. There&#8217;s also of course the new 128k token context window (huge!), support for multi-modal input/output, etc. But these are the 3 things I&#8217;m most excited for as a developer right now.</p><p><strong><br></strong></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.connectingdots.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dharmesh's Dots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>