<?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[Minimum Viable Founder]]></title><description><![CDATA[Technical and commercial notes from bootstrapping as a solo-founder, and doing as little as possible on purpose.]]></description><link>https://www.minimumviablefounder.com</link><image><url>https://substackcdn.com/image/fetch/$s_!nJKu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f7195d8-4413-4ea8-940a-2f59652a5a3a_1024x1024.png</url><title>Minimum Viable Founder</title><link>https://www.minimumviablefounder.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Jul 2026 20:32:50 GMT</lastBuildDate><atom:link href="https://www.minimumviablefounder.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jai Juneja]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[theminimumviablefounder@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[theminimumviablefounder@substack.com]]></itunes:email><itunes:name><![CDATA[Jai Juneja]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jai Juneja]]></itunes:author><googleplay:owner><![CDATA[theminimumviablefounder@substack.com]]></googleplay:owner><googleplay:email><![CDATA[theminimumviablefounder@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jai Juneja]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Deep Research: How It Works And How To Build It]]></title><description><![CDATA[The architecture behind OpenAI, Google and Perplexity's research agents, explained by someone who built one. Code included.]]></description><link>https://www.minimumviablefounder.com/p/deep-research-how-it-works</link><guid isPermaLink="false">https://www.minimumviablefounder.com/p/deep-research-how-it-works</guid><dc:creator><![CDATA[Jai Juneja]]></dc:creator><pubDate>Tue, 25 Mar 2025 13:04:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vaO8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><em>&#128075; Hey, Jai here! I&#8217;m a software engineer and tech investor turned solo founder building a bootstrapped software company. I write about using AI to build faster, sell smarter, and run a whole company solo. New here? Join me:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.minimumviablefounder.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.minimumviablefounder.com/subscribe?"><span>Subscribe now</span></a></p><p><em>Or if you don&#8217;t like my work, send me <a href="mailto:hatemail@qxlabs.com?subject=I%20hate%20you">hate mail</a>.</em></p><div><hr></div><h2>Before we dive in...</h2><p>If you&#8217;re keen to understand how deep research works, you can play with my Python implementation <strong><a href="https://github.com/qx-labs/agents-deep-research">here</a></strong> (~800 stars on GitHub) or install it with `pip install deep-researcher`. It produces detailed reports with one CLI command:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;shell&quot;,&quot;nodeId&quot;:&quot;2dc6c875-1ebe-4a72-a3f8-3b2848cc1f52&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-shell">deep-researcher --query "Write about Plato's life and works" </code></pre></div><div><hr></div><h2>A New Hope</h2><p>Back in 2023, <strong><a href="https://github.com/Significant-Gravitas/AutoGPT">AutoGPT</a></strong> dropped &#8212; and it felt like magic. It was the first major example we had of an AI agent that could <em>plan and execute complex tasks</em> autonomously. Given a high-level goal, it would break problems down into sub-tasks and use tools in a continuous loop to solve them. It could google stuff, open websites, write files, and even reflect on its own performance.</p><p>But... it also kind of sucked.</p><ul><li><p>It got stuck in loops</p></li><li><p>It forgot what it was doing mid-way</p></li><li><p>It hallucinated confidently</p></li><li><p>It burned through tokens (and your wallet)</p></li></ul><div><hr></div><h2>The LLM As The &#8220;Central Brain&#8221;</h2><p>Despite these limitations, AutoGPT and similar prototypes <strong>proved the concept</strong> of autonomous agentic AI. They established a basic architecture that many later systems would build on: an LLM as the central &#8220;brain&#8221;.</p><p>Research from this period introduced techniques like <strong><a href="https://arxiv.org/abs/2210.03629">ReAct (Reason + Act)</a></strong>, which had the model interweave reasoning statements with tool calls (e.g. &#8220;Thought: ...; Action: ...&#8221;), rather than issuing commands without explanation&#8203;. This helped create an internal chain-of-thought and reduced obvious failures. Other experiments introduced forms of self-reflection (having the model critique its own past actions) to prevent it from getting stuck in loops.</p><p>The early agent systems laid the groundwork by identifying what was needed: the ability to decompose tasks, remember intermediate results, leverage external knowledge sources, and safely remain goal-directed.</p><div><hr></div><h2>What Was Missing</h2><p>These early recursive agents needed 4 critical upgrades to work well:</p><ol><li><p><strong>Larger context windows</strong>: To <em>remember</em> the original task as well as historical actions and findings. GPT-3.5 originally had a context window of only 4k tokens vs 128k for GPT-4o and 200k for o3-mini.</p></li><li><p><strong>Multi-modal capability</strong>: To enable agents to interpret and interact with more resources - especially images.</p></li><li><p><strong>A stronger ecosystem of tools</strong>: The ability to use browsers, search the web, execute code in a sandboxed environment, access local files and APIs etc. The open source community has seen an explosion of tooling in the last year, for example:</p><ul><li><p><strong><a href="https://github.com/browser-use/browser-use">Browser Use</a></strong> to control browsers</p></li><li><p><strong><a href="https://tavily.com/">Tavily</a></strong>, <strong><a href="https://exa.ai/">Exa</a></strong>, <strong><a href="https://www.firecrawl.dev/">Firecrawl</a></strong> and <strong><a href="https://github.com/unclecode/crawl4ai">Crawl4AI</a></strong> for web search and retrieval</p></li><li><p><strong><a href="https://e2b.dev/">E2B</a></strong> for executing code in a sandbox</p></li><li><p>The <strong><a href="https://github.com/modelcontextprotocol">MCP protocol</a></strong> from Anthropic</p></li></ul></li><li><p><strong>Better tool selection capability</strong>: To actually pick the right tool for each task without getting stuck in loops, hallucinating or veering off-topic. GPT-4o, 4o-mini and o3-mini introduce massive improvements in tool-selection. <strong><a href="https://gorilla.cs.berkeley.edu/leaderboard.html">This leaderboard</a></strong> is my favourite reference on this - what&#8217;s incredible is how performant 4o-mini is despite being 10-50x cheaper (and substantially faster) than similarly ranked models.</p></li></ol><div><hr></div><h2>Fast Forward to Now...</h2><p>Huge improvements across all three fronts have led to the rise of:</p><ul><li><p><strong>Deep research agents</strong>: OpenAI, Google, Perplexity all offer their own versions of deep research.</p></li><li><p><strong>Open-source versions</strong>: <strong><a href="https://huggingface.co/blog/open-deep-research">Hugging Face</a></strong>, <strong><a href="https://github.com/langchain-ai/local-deep-researcher">LangChain</a></strong> and even <strong><a href="https://github.com/qx-labs/agents-deep-research">my own version</a></strong></p></li><li><p><strong>Other agentic apps</strong>: Like <strong><a href="https://manus.im/">Manus AI</a></strong> for general tasks, <strong><a href="https://convergence.ai/">Convergence</a></strong> for productivity, <strong><a href="https://github.com/RooVetGit/Roo-Code">Roo Code</a></strong> for coding. These combine deep research logic with broader, multi-tool capabilities - think coding, file analysis, PDFs, browsing, image understanding, etc.</p></li></ul><div><hr></div><h2>How Deep Research Works</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rOrb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rOrb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 424w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 848w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 1272w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rOrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png" width="1026" height="642" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:642,&quot;width&quot;:1026,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Deep Research Paradigms&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Deep Research Paradigms" title="Deep Research Paradigms" srcset="https://substackcdn.com/image/fetch/$s_!rOrb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 424w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 848w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 1272w, https://substackcdn.com/image/fetch/$s_!rOrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7f5343-a1c6-47e4-9b3e-ca41cedb16b2_1026x642.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can think of two paradigms for building AI apps that sit on opposite ends of a spectrum.</p><ul><li><p><strong>Workflow tools</strong> follow a <em>fixed flow</em> often in a loop<br>E.g. Think &#8594; Search &#8594; Read &#8594; Repeat &#8594; Summarize.</p></li><li><p><strong>Purely agentic tools</strong> go wild with autonomy<br>E.g. one or many agents with defined roles autonomously deciding what tools to use, what to do next, who to pass tasks to, and when they&#8217;ve finished their task. This could mimic human teams - a supervisor, line-manager, teams of analysts working on sub-tasks.</p></li></ul><p>Most <strong>real-world implementations sit somewhere in between</strong>. Bear in mind that Deep Research is just one use-case (i.e. producing long reports), but similar frameworks with a wider set of tooling can cater to broader use-cases. For example, Manus AI demonstrates what you can achieve with a set of agents wrapped around Claude and Qwen with access to 29 tools. Under the hood, all of these apps are using fairly fixed workflows to minimise token usage and improve reliability.</p><h3>OpenAI&#8217;s Approach (Deep Research)</h3><ul><li><p>Based on a smart model (o3, not yet available via API) <em>fine-tuned</em> for multi-step reasoning and tool use</p></li><li><p>Uses an internal framework to plan &#8594; search &#8594; read &#8594; think &#8594; write</p></li><li><p>Utilizes their in-house browser tool (<strong>Operator</strong>) to interact with the web</p></li><li><p>Has the ability to backtrack to avoid getting stuck in loops</p></li><li><p>Outputs full reports with <strong>citations and source traceability</strong></p></li><li><p>Achieves <strong>state-of-the-art results</strong> on real-world benchmarks (GAIA, etc.)</p></li><li><p>But: it&#8217;s proprietary, compute-intensive, and gated to higher-tier users</p></li></ul><h3>Open Source Agents</h3><p>Most open-source approaches:</p><ul><li><p>Stick with <strong>workflow-first logic</strong> (to keep things predictable and cheap)</p></li><li><p>Can achieve <em>surprisingly good performance</em> even with open models like DeepSeek</p></li><li><p>Are often <strong>faster and cheaper</strong> to run and highly customizable.</p></li></ul><p>But they don&#8217;t yet have:</p><ul><li><p>Vision support (unless you bolt it on)</p></li><li><p>Sophisticated browsers like OpenAI&#8217;s Operator</p></li><li><p>As much safety and hallucination mitigation</p></li></ul><p>Hugging Face&#8217;s implementation uses <strong>code-based agents</strong>: instead of saying &#8220;search for X using the search tool&#8221; (in a JSON output), the model writes Python code to do it. This might sound odd at first, but it has some powerful advantages:</p><ul><li><p>Code can express more complex logic than a single / sequential set of tool calls</p></li><li><p>Code is more concise - e.g. it can write code to run a bunch of tools in parallel, which lowers token usage</p></li><li><p>LLMs are good at writing code and can self-debug if there are errors</p></li></ul><p>A <strong><a href="https://huggingface.co/papers/2402.01030">recent paper</a></strong> showed that letting the agent express complex action sequences in code can make the whole process more efficient and reliable&#8203;. The Hugging Face open deep research project implemented this idea and saw a big boost in performance: their accuracy on one benchmark jumped from <strong><a href="https://huggingface.co/blog/open-deep-research#:~:text=This%20bump%20in%20performance%20is%20due,average%20on%20the%20validation%20set">33% to 55%</a></strong> simply by switching from JSON-style actions to code-style actions (with the same underlying model and tasks).</p><div><hr></div><h2>The QX Labs Implementation</h2><p>For illustration, let me break down how my implementation works.</p><blockquote><p><em><strong>TL;DR: It leans workflow-heavy but with autonomy on tool selection and async execution for scale.</strong></em></p></blockquote><ol><li><p>Carries out initial research on the query to understand the topic</p></li><li><p>Splits the research topic into sub-topics and sub-sections</p></li><li><p>Iteratively runs research on each sub-topic - this is done in async/parallel to maximise speed</p></li><li><p>Consolidates all findings into a single report with references</p></li><li><p>(Optional) Includes a full trace of the workflow and agent calls in OpenAI&#8217;s trace system</p></li></ol><p>It has 2 modes:</p><ul><li><p><strong>Simple Mode</strong><br>Runs the iterative researcher (Step 3 above) on the full query in one go.<br>Great for fast answers on narrower topics.</p></li><li><p><strong>Deep Mode</strong><br>Runs the planning phase (Step 1+2 above) then spawns concurrent researchers for each sub-topic.<br>Ideal for multi-dimensional or expansive research questions.</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/$s_!r8XC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r8XC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 424w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 848w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 1272w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r8XC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png" width="382" height="847" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:847,&quot;width&quot;:382,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Deep Research - Simple Mode&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Deep Research - Simple Mode" title="Deep Research - Simple Mode" srcset="https://substackcdn.com/image/fetch/$s_!r8XC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 424w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 848w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 1272w, https://substackcdn.com/image/fetch/$s_!r8XC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe69c31-ece8-4eb3-9f88-4bf7211b4eca_382x847.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vaO8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vaO8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 424w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 848w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 1272w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vaO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png" width="982" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Deep Research - Deep Mode&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Deep Research - Deep Mode" title="Deep Research - Deep Mode" srcset="https://substackcdn.com/image/fetch/$s_!vaO8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 424w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 848w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 1272w, https://substackcdn.com/image/fetch/$s_!vaO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7da3c1a1-5388-470e-b5cd-ba866753b8b9_982x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#128161; Interesting Findings</h3><ul><li><p><strong>gpt-4o-mini</strong> works surprisingly well for this use case</p><ul><li><p>Matches o3-mini on <strong><a href="https://gorilla.cs.berkeley.edu/leaderboard.html">tool-use benchmarks</a></strong></p></li><li><p>Faster + cheaper</p></li><li><p>You don&#8217;t need the full GPT-4o brain since deep research relies more on <em>retrieved content</em> than parametric knowledge</p></li></ul></li><li><p>LLMs <strong>suck at following word count instructions</strong></p><ul><li><p>Better to use heuristics they&#8217;ve seen before like:</p><ul><li><p>&#8220;Length of a tweet&#8221;</p></li><li><p>&#8220;A few paragraphs&#8221;</p></li><li><p>&#8220;2 pages of text&#8221;</p></li></ul></li></ul></li><li><p>Most LLMs <strong>cap at ~2,000 words of output</strong> even though they can in theory output thousands more tokens</p><ul><li><p>Why? Because they weren&#8217;t trained to write 50-page documents</p></li><li><p>Want longer reports?</p><ul><li><p>Use a streaming writer pattern that chains LLM outputs (like <strong><a href="https://medium.com/@techsachin/longwriter-using-llm-agent-based-pipeline-to-scale-llms-output-window-size-to-10-000-words-33210d299e2b">this approach</a></strong>)</p></li><li><p>Or chunk by section and concatenate intelligently (watch out for repetition)</p></li></ul></li></ul></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6q-N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6q-N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 424w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 848w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 1272w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6q-N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp" width="368" height="92" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1456,&quot;resizeWidth&quot;:368,&quot;bytes&quot;:26478,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6q-N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 424w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 848w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 1272w, https://substackcdn.com/image/fetch/$s_!6q-N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581ab53c-5e6e-414c-8008-5ded7a60bb59_1456x364.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.minimumviablefounder.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div>]]></content:encoded></item></channel></rss>