<?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[Tech Docs]]></title><description><![CDATA[Subscribe if technical documentation is your problem.]]></description><link>https://blog.techdocs.studio</link><image><url>https://substackcdn.com/image/fetch/$s_!2k14!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff99f17-2d47-4548-9b5d-0caae3d7adeb_1200x1200.png</url><title>Tech Docs</title><link>https://blog.techdocs.studio</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 09:17:53 GMT</lastBuildDate><atom:link href="https://blog.techdocs.studio/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[David Garcia]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[david@techdocs.studio]]></webMaster><itunes:owner><itunes:email><![CDATA[david@techdocs.studio]]></itunes:email><itunes:name><![CDATA[David Garcia]]></itunes:name></itunes:owner><itunes:author><![CDATA[David Garcia]]></itunes:author><googleplay:owner><![CDATA[david@techdocs.studio]]></googleplay:owner><googleplay:email><![CDATA[david@techdocs.studio]]></googleplay:email><googleplay:author><![CDATA[David Garcia]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to make your docs discoverable to AI agents]]></title><description><![CDATA[The basics that cover 90% of the work, plus what to do if you want to push further.]]></description><link>https://blog.techdocs.studio/p/how-to-make-your-docs-discoverable</link><guid isPermaLink="false">https://blog.techdocs.studio/p/how-to-make-your-docs-discoverable</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Thu, 16 Apr 2026 10:33:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/29f0a494-7a33-4068-ab3b-c35365c4694b_5980x3665.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mintlify reported earlier this year that <a href="https://www.mintlify.com/blog/ai-traffic">almost half of documentation site traffic</a> now comes from AI, not humans. Claude Code, Cursor, Copilot. They crawl docs to answer developer questions.</p><p>Most docs sites are not set up for this. Some block AI crawlers by default in r<code>obots.txt</code> and don&#8217;t know it. Others rely on JavaScript rendering that crawlers can&#8217;t see. Others have great content that buries the answer under three paragraphs of context.</p><p>Here&#8217;s what we&#8217;ve been testing and fixing across consulting projects.</p><h2>Four tests to run now</h2><h3>Test 1: is your site crawlable without JavaScript?</h3><p>Open your docs in a fresh browser. Disable JavaScript. Reload.</p><p>If the page loads and the content is readable, AI crawlers can probably read it too. If not, you have a problem. Most crawlers don&#8217;t execute JavaScript. They see what curl sees.</p><p>You can also test directly:</p><pre><code><code>curl -A "ClaudeBot" https://your-docs.com/getting-started</code></code></pre><p>If the response is a mostly empty HTML shell with a &lt;script&gt; tag, AI crawlers are getting the same empty shell.</p><h3>Test 2: is your robots.txt blocking AI crawlers?</h3><p>Check https://your-docs.com/robots.txt for these user agents:</p><pre><code><code>GPTBot        # OpenAI
ClaudeBot     # Anthropic
PerplexityBot # Perplexity
CCBot         # Common Crawl (used by many LLMs)
Google-Extended # Google's AI training bot</code></code></pre><p>If any of these are disallowed, AI crawlers are skipping your site. Some CDNs and hosting platforms block AI bots by default as part of &#8220;bot protection&#8221; settings. Worth checking.</p><h3>Test 3: do you rank for questions users actually ask?</h3><p>Pick three questions a developer might ask about your product. Google them with your company name.</p><p>Example: <code>"biel.ai create account"</code>, <code>"biel.ai docusaurus install"</code>, <code>"biel.ai customize widget"</code></p><p>If you don&#8217;t rank in the first results, AI probably can&#8217;t find you either. AI retrieval uses the same signals as search engines, weighted differently. This applies both to live retrieval (what ChatGPT and Claude Code query in real time) and to training data (what the models learned from). No Google ranking usually means no AI ranking in either case.</p><h3>Test 4: does your docs answer common questions up front?</h3><p>Pick three common questions users ask about your product. Open the relevant docs page for each.</p><p>Is the answer on the page? Is it in the first paragraph, or buried three paragraphs deep?</p><p>AI agents retrieve a chunk of content and return an answer based on it. If your page opens with context before the answer, the agent will summarize the context instead. If the answer is missing entirely, the agent will either hallucinate or say it doesn&#8217;t know.</p><h2>The 90%: indexable + useful + popular</h2><p>Those four tests measure three things:</p><ul><li><p><strong>Indexable: </strong>can AI crawlers access your content?</p></li><li><p><strong>Useful: </strong>does your content answer what users ask?</p></li><li><p><strong>Popular: </strong>is your content referenced by high-signal sources?</p></li></ul><p>Cover these three and you&#8217;ve done 90% of the work.</p><h2>The 10%: extra credit</h2><p>We can&#8217;t know exactly which retrieval methods each AI system uses. The more signals we provide, the more discoverable our content becomes. If you&#8217;ve covered the basics and want to push further, here&#8217;s what to add.</p><p><strong>Publish an </strong><code>llms.txt</code><strong> file.</strong> Like <code>sitemap.xml</code> but for LLMs. A plain text file at your site root describing what your documentation contains and how it&#8217;s organized.</p><pre><code># Biel.ai Docs
&gt; AI chatbot for technical documentation

## Getting Started
- [Install in Docusaurus](https://docs.biel.ai/docusaurus)
- [Install in MkDocs](https://docs.biel.ai/mkdocs)

## API Reference
- [Authentication](https://docs.biel.ai/api/auth)</code></pre><p>Still emerging, still evolving, but increasingly supported.</p><p><strong>Serve markdown URLs.</strong> Crawlers and agents work best with clean markdown over bloated HTML. You can serve the same page at .md for a cleaner, token-efficient version. Example: yoursite.com/api.md instead of making them parse your HTML, CSS, navigation, and cookie banner.</p><p><strong>Structured data and metadata.</strong> Add Schema.org markup for pricing, FAQs, and product info. Keep Open Graph tags and meta descriptions accurate. Use page metadata to describe what each page is about, including keywords and synonyms for concepts users might call by different names (e.g. &#8220;asset&#8221; vs &#8220;token&#8221;).</p><p><strong>Publish machine-readable schemas. </strong>Make your OpenAPI specs publicly available. Same for GraphQL schemas, Protocol Buffers, or any structured contract your API exposes. Agents can parse these directly, no HTML scraping needed.</p><h2>Measure where you stand</h2><p><a href="https://buildwithfern.com/agent-score">Fern&#8217;s Agent Score</a> evaluates your docs against 22 checks covering most of the above. You get a grade and a list of issues, and a prompt you can paste into Claude Code to fix them automatically.</p><p>We ran it on our own docs and got a <strong>C </strong>on the first run. As they say, &#8220;the shoemaker&#8217;s son always goes barefoot&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jQZX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jQZX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 424w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 848w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 1272w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jQZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png" width="1456" height="873" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:873,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133640,&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;:&quot;https://blog.techdocs.studio/i/194386309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jQZX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 424w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 848w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.png 1272w, https://substackcdn.com/image/fetch/$s_!jQZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb282f3-4034-4af1-aae9-403e076a2044_1615x968.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>But this didn&#8217;t stop <a href="https://biel.ai">Biel.ai</a> from ranking first when asking ChatGPT for the <strong>best AI chatbot for Docusaurus</strong>. Because we focused on the basics first.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D2kW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D2kW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 424w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 848w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 1272w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D2kW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173852,&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;:&quot;https://blog.techdocs.studio/i/194386309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D2kW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 424w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 848w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.png 1272w, https://substackcdn.com/image/fetch/$s_!D2kW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1dc826-bbb4-4be6-bdd2-3e994457ebc1_1705x968.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><h2>Start with the basics</h2><p>The 90% is where most of the value is. Be crawlable, improve the quality of your docs, make them popular. The extra 10% is worth doing if you&#8217;re already in good shape, but don&#8217;t skip the basics to chase it.</p><p>Most docs teams are still catching up. Start with the basics now and your docs will be easier to find when everyone else is still figuring it out.</p>]]></content:encoded></item><item><title><![CDATA[We tried following a client's getting started guide]]></title><description><![CDATA[Half the code examples didn't compile.]]></description><link>https://blog.techdocs.studio/p/we-tried-following-a-clients-getting</link><guid isPermaLink="false">https://blog.techdocs.studio/p/we-tried-following-a-clients-getting</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Wed, 25 Mar 2026 14:03:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/791d95b5-acad-4c95-a2bc-bbfada457147_3505x2663.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week a client asked us to review their getting started module. The manual installation section was deeply technical: lots of steps, lots of code blocks, lots of commands to run in sequence.</p><p>We started following it. Within a few minutes, we had our answer. Some steps worked fine. Others didn&#8217;t compile. One snippet referenced a method that no longer existed. Another used a dependency version from two releases ago.</p><p>The client didn&#8217;t know. The page looked great. Clean formatting, syntax highlighting, clear explanations between each code block. Nothing about it screamed &#8220;broken.&#8221; You had to actually run the code to find out.</p><p>This is what happens when code lives in Markdown files, disconnected from any build process. Nobody re-runs examples after every release. The docs look fine. They just don&#8217;t work anymore.</p><h2>Keep examples in a project, not in your docs</h2><p>The fix: stop pasting code into Markdown files. Instead, keep your examples in a separate project that actually compiles.</p><p>The project lives in its own folder near the docs, with real dependencies, a real build step, and version control. Your docs import snippets from this project instead of containing them directly. When the product releases a new version, you update the project. If a snippet breaks, the build fails. You find out before your users do.</p><p>You can also version your examples properly. Need docs for v2 and v3? The project has branches for each. You bump the dependency, run the build, and know immediately what still works.</p><p>Once we set this up for the client, updating code examples stopped being scary. It went from editing a Markdown file and hoping it still worked to making a code change with a build. New users following the getting started guide actually got to the end.</p><p>It does mean maintaining a project alongside your docs. But the alternative is finding out your examples are broken when a user does.</p><div><hr></div><p>If you want the practical details on how to set this up, I wrote a <a href="https://blog.techdocs.studio/p/how-to-keep-documentation-code-examples">step-by-step guide</a> a few years ago.</p>]]></content:encoded></item><item><title><![CDATA[Docs are fuel for AI. Not every company sees it that way.]]></title><description><![CDATA[While some companies eliminate their entire docs team, others are doubling down.]]></description><link>https://blog.techdocs.studio/p/docs-are-fuel-for-ai-not-every-company</link><guid isPermaLink="false">https://blog.techdocs.studio/p/docs-are-fuel-for-ai-not-every-company</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Thu, 19 Mar 2026 14:02:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ca481b3f-26f9-4c18-907d-4f59df8b8886_3240x2160.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week, a major data platform eliminated its dedicated documentation team. Around 70 writers, gone. Last year, a well-known design tool made similar cuts after telling employees to use AI tools wherever possible. (I&#8217;m not naming companies here, but both layoffs were publicly reported and widely discussed in tech writing circles.)</p><p>Across the industry, when companies need to reduce headcount, documentation teams are among the first on the list. Sometimes to cut costs, sometimes to justify AI investment. But the stated logic tends to be the same: AI can write docs now, so why pay people to do it?</p><p>Not every company is moving in this direction. And the ones that aren&#8217;t have a very different theory about what documentation is for.</p><h2>The companies cutting writers</h2><p>There are AI agents that detect code changes and draft doc updates. Tools that generate release notes, changelog entries, and API references from code and product specs. They&#8217;re fast, and for companies shipping quickly, that speed is a real advantage. On paper, you no longer need a dedicated team for this.</p><p>The question isn&#8217;t whether AI can produce docs. It&#8217;s whether it can maintain them, structure them, and make them useful over time without someone thinking about that full-time.</p><p>In practice, documentation gets reassigned to engineers or product managers, who use AI to draft it. In theory, it works. In reality, developers have already absorbed testing, infrastructure as code, CI/CD, on-call. Now add docs strategist to the pile. They have more on their plate, not less. Docs get written when there&#8217;s time, which is rarely.</p><p>Nobody reviews whether the content actually helps a user get from A to B. Nobody maintains the getting started guide when the SDK changes. Nobody decides what shouldn&#8217;t be documented.</p><p>And to be fair, there&#8217;s a real argument that the people who build the thing should document the thing. I don&#8217;t disagree. We&#8217;ve been advocating for that even before AI entered the picture. But there&#8217;s a difference between engineers contributing to docs and engineers being fully responsible for docs strategy, maintenance, and information architecture on top of everything else they already own. I&#8217;m describing a pattern I&#8217;ve seen, not citing a controlled study, but from the contracts we&#8217;ve picked up after layoffs like these, it&#8217;s consistent: the docs drift, support tickets go up, onboarding takes longer, and there&#8217;s nobody whose job it is to fix it.</p><p>Could this work with strong processes, dedicated doc sprints, or better guardrails around AI-generated content? Maybe. I haven&#8217;t seen it succeed at scale yet, but I&#8217;d welcome examples that prove otherwise.</p><h2>The companies investing in writers</h2><p>On the other side, some companies are hiring more writers, not fewer, and using AI to augment them. Their reasoning: documentation is now the source material that every AI system depends on. AI coding assistants, chatbots, support agents. They all consume your docs. If the docs are wrong, the AI is wrong.</p><p>Here&#8217;s a concrete example. An AI coding assistant trained on outdated API docs will confidently suggest deprecated endpoints and wrong parameter names. Developers follow the suggestion, hit errors, file issues, and lose trust in the tool. The root cause isn&#8217;t the AI. It&#8217;s the docs the AI was reading.</p><p>These companies treat documentation as infrastructure. The foundation for how users and AI understand their product. The better the docs, the better every experience built on top of them.</p><p>Anyone who&#8217;s actually used AI to write or code knows it&#8217;s a back and forth. You prompt, you review, you correct, you re-prompt. The output needs judgment. Someone who knows what good docs look like, not just someone who can generate more of them.</p><p>But it&#8217;s not just about producing docs. There&#8217;s also a role AI can&#8217;t fill, at least for now. Technical writing has never been 100% writing. It&#8217;s deciding what gets documented and what doesn&#8217;t. Knowing who to ask for the right information. Evaluating whether docs are useful or need rework. Figuring out what order things should be learned in. And knowing when adding more pages actually makes things harder to find. An AI will happily generate pages for everything. A good docs team knows when to say no.</p><h2>Where I stand</h2><p>I run a documentation engineering consultancy. I have skin in the game, and I&#8217;ll be honest about that. We&#8217;ve had contracts cancelled because companies decided AI could handle the docs. We&#8217;ve also gained contracts from companies that understand docs are the fuel for AI.</p><p>Our position: AI makes writers more capable, not redundant. Writers who use AI to draft, then edit, verify, test, and structure produce better output than before. Maybe the companies that cut their teams had other reasons for making that call. But creating better docs wasn&#8217;t one of them.<br><br>The companies investing in documentation right now understand something simpler: every answer AI generates is only as good as the docs it&#8217;s reading.</p>]]></content:encoded></item><item><title><![CDATA[We added an AI assistant to a docs site. Support tickets went up.]]></title><description><![CDATA[Here&#8217;s why that&#8217;s actually a good thing.]]></description><link>https://blog.techdocs.studio/p/we-added-an-ai-assistant-to-a-docs</link><guid isPermaLink="false">https://blog.techdocs.studio/p/we-added-an-ai-assistant-to-a-docs</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Wed, 11 Mar 2026 16:48:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d05cc466-a7eb-4e20-b4d6-29cc3fbb0a56_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We added an AI assistant to a client&#8217;s docs site. First week, support tickets went up. Not down.</p><p>The assistant kept responding &#8220;I couldn&#8217;t find information about this&#8221; for basic things. Export data. Reset password. Delete account.</p><p>Support had been answering these verbally for years. Everyone assumed it was documented, but it wasn&#8217;t.</p><h2>Why basic flows go undocumented</h2><p>When a team ships something new, they want to document the shiny parts. The feature they spent months building. The complex integration that&#8217;s hard to understand without a guide.</p><p>Nobody writes a page about how to reset a password. It feels too obvious.</p><p>Then support starts getting questions. They answer them in 30 seconds over chat, and writing a whole doc page for that feels like overkill. So it stays verbal. Months pass, new support agents join, and they learn the answers from colleagues, not from docs. At some point everyone just assumes it&#8217;s written down somewhere.</p><p>An AI assistant breaks this cycle. It can only answer what&#8217;s documented. It doesn&#8217;t know what support told a user last week, and it doesn&#8217;t have access to Slack threads or old tickets. In our case, that&#8217;s intentional. We only train it on curated, reviewed documentation.</p><p>So when a user asks &#8220;How do I export my data?&#8221; and the assistant says &#8220;I couldn&#8217;t find information about this,&#8221; that gap is no longer invisible. It shows up in the logs, every day. You can&#8217;t ignore it.</p><h2><strong>Use the gaps</strong></h2><p>Once we documented the missing flows, tickets dropped. The assistant started answering questions it couldn&#8217;t before.</p><p>But here&#8217;s the part we didn&#8217;t expect: the &#8220;I don&#8217;t know&#8221; responses told us exactly what to write next. We just looked at what users asked most and started there.</p><p>AI assistants don&#8217;t fix documentation problems. They make them visible.</p>]]></content:encoded></item><item><title><![CDATA[Slow builds were killing our docs]]></title><description><![CDATA[How we cut a Sphinx build from 30 minutes to under 3 by splitting PDFs into chapters and parallelizing outputs.]]></description><link>https://blog.techdocs.studio/p/slow-builds-were-killing-our-docs</link><guid isPermaLink="false">https://blog.techdocs.studio/p/slow-builds-were-killing-our-docs</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Thu, 26 Feb 2026 08:31:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a714444a-305c-4f09-8d8f-114ef0b08f0d_6048x4024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;Our docs build takes 30 minutes.&#8221;</p><p>The client said it casually, like it was just how things worked. The system rebuilt the entire site every time. Even for a one-word fix.</p><p>This is more common than you&#8217;d think. And it kills documentation quality in ways that aren&#8217;t obvious.</p><h2>Slow builds make docs worse</h2><p>When a build takes 30+ minutes, nobody verifies small changes. You fix a typo, push it, and hope for the best. You don&#8217;t wait half an hour to check if the formatting looks right.</p><p>Writers stop iterating. They batch changes into big updates instead of making frequent small improvements. Reviews slow down because nobody wants to trigger another long cycle just to see a preview.</p><p>The result: fewer updates, more errors that slip through, and a team that treats docs as something to avoid touching.</p><h2>Why this build was slow</h2><p>The project used Sphinx. The build produced both HTML and PDF outputs. Every build generated everything from scratch: the full HTML site and the complete PDF manual.</p><p>In this case, the PDF was the bottleneck. Sphinx uses LaTeX to produce PDFs, and LaTeX is slow. One monolithic PDF meant one monolithic build. Change a paragraph in the authentication guide and the system rebuilds a 1400-page PDF from scratch.</p><p>On top of that, the HTML and PDF builds ran sequentially. One waited for the other. So even if the HTML build was fast, the PDF blocked the whole pipeline.</p><h2>What we changed</h2><p>Two things:</p><p><strong>We split the PDF into chapters: </strong>Instead of generating one massive PDF, we configured Sphinx to produce separate PDFs per section. Authentication docs, API reference, deployment guide, each their own PDF.</p><p>Change the auth docs? Rebuild only that PDF. The rest stay untouched.</p><p><strong>We separated the HTML and PDF builds:</strong> They now run in parallel instead of sequentially. Writers can preview their HTML changes immediately while the PDFs generate in the background.</p><h2>The result</h2><p>Build time dropped from 30 minutes to under 5 for most changes.</p><p>But the real impact isn&#8217;t the number. It&#8217;s what changed in the team&#8217;s behavior. Writers started verifying their changes again. Small fixes got pushed the same day instead of being batched for &#8220;next sprint.&#8221; Reviews got faster because previews were available in minutes.</p><p>The docs got better because the build time got out of the way.</p><p>Slow builds are a silent documentation killer. Nobody complains about them in sprint retros. But they quietly push teams away from touching the docs.</p><p>If your build takes more than 10 minutes, it&#8217;s worth investigating why.</p>]]></content:encoded></item><item><title><![CDATA[Developers aren't reading your docs]]></title><description><![CDATA[At least, not in the way they used to. They're asking AI from their IDE instead. Here's how to make that work for you.]]></description><link>https://blog.techdocs.studio/p/developers-arent-reading-your-docs</link><guid isPermaLink="false">https://blog.techdocs.studio/p/developers-arent-reading-your-docs</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Sun, 22 Feb 2026 19:01:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/939010dd-6278-47d1-af12-1dfb22ec0e1f_4800x2700.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A developer needs to set up authentication using your SDK.</p><p>Two years ago, they&#8217;d open your docs site and read the guide. Today, they type &#8220;How do I authenticate with this API?&#8221; in Claude Code. The AI answers, writes the code, and moves on. Your docs site never sees a pageview.<br><br>Top engineers at Anthropic and OpenAI report that <a href="https://fortune.com/2026/01/29/100-percent-of-code-at-anthropic-and-openai-is-now-ai-written-boris-cherny-roon/">AI now writes 100% of their code</a>. If developers aren&#8217;t even writing code themselves, they&#8217;re definitely not browsing your docs to figure out how to write it.</p><p>We're seeing this in the documentation projects we work on. AI-driven traffic to docs sites is growing while human visits drop. Mintlify reports that <a href="https://mintlify.com/blog/almost-half-your-docs-traffic-is-ai">almost half of documentation site traffic now comes from AI agents</a>, not humans. Your docs have a new primary reader. It doesn&#8217;t browse. It queries.</p><h2>From reading to asking</h2><p>Documentation always competed with Stack Overflow, GitHub issues, and asking a coworker on Slack. AI coding assistants just won that competition.</p><p>When you can describe your problem in natural language and get working code back, in context, inside your editor, there's no reason to open a docs site.</p><p>But that doesn&#8217;t mean docs matter less. If anything, accuracy matters more now. A human reading a confusing paragraph will slow down, re-read, maybe search for other sources. An AI will just pick an interpretation and ship it.</p><h2>The problem with public AI models</h2><p>When a developer asks an AI about your product, the model either relies on training data or searches the web. Both are broken.</p><p>Training data is stale. If you shipped a new SDK version last month, the model doesn&#8217;t know. It&#8217;ll suggest deprecated methods with full confidence. Web search relies on SEO. The model might find a three-year-old Medium article instead of your current API reference. Your content&#8217;s discoverability depends on how well you rank, not on how good your docs are.</p><p>Neither approach has a special relationship with your documentation. It doesn&#8217;t know your custom error codes or the migration guide you published last Tuesday.</p><p>The result: AI generates code based on outdated examples and wrong parameter names. The developer doesn&#8217;t even know the answer was wrong until something breaks.</p><h2>It gets worse for internal docs</h2><p>If public docs have a discoverability problem, internal docs are completely invisible.</p><p>Your internal wiki, your Confluence spaces, your private Notion pages. AI models can&#8217;t see any of it. A new engineer joins your team, asks their AI assistant &#8220;How do I deploy to staging?&#8221;, and gets nothing useful. The model wasn&#8217;t trained on your deployment runbook. It can&#8217;t search your internal network.</p><p>Your internal documentation is invisible to every AI tool your developers use daily. That&#8217;s a real problem.</p><h2>Connect your docs to the tools developers actually use</h2><p>There&#8217;s a fix for this. Instead of hoping AI models happen to find your docs, you can connect your documentation directly to the AI tools developers are already using.</p><p>This is what the <strong><a href="https://www.anthropic.com/news/model-context-protocol">Model Context Protocol (MCP)</a></strong> enables. It&#8217;s an open standard that lets AI assistants connect to external data sources. Think of it as a bridge between an AI coding assistant and your documentation.</p><p>With an MCP server pointing at your docs, the assistant fetches answers directly from your content. Not from training data. Not from Google. From your docs, in real time.</p><p>And here&#8217;s the part most people miss: you register a description of what your docs contain. The AI uses that description to decide when to query your docs. If a developer is working with your SDK and hits an authentication problem, the assistant knows your docs are the right place to look. It&#8217;s not a keyword search. The AI decides based on context.</p><h2>What this means for documentation teams</h2><p>Your docs go from a website people browse to a data source AI tools query. That changes things.</p><p>Content quality matters more, not less. Every ambiguity, every outdated example, every missing step gets amplified. Bad docs produce bad AI answers at scale. Good docs produce answers that make developers trust your product.</p><p>Internal docs become reachable. That deployment runbook, your team&#8217;s coding standards, your architecture decision records. MCP can expose them to AI assistants inside your organization.</p><p>You also get better feedback. When AI assistants query your docs, you can see what questions are being asked. That&#8217;s direct signal about what developers are trying to do. Better than pageview analytics ever was.</p><h2>What this doesn&#8217;t fix</h2><p>MCP doesn&#8217;t fix bad docs. If your content is incomplete or outdated, AI will serve incomplete, outdated answers. Just faster.</p><p>And it doesn&#8217;t eliminate hallucinations. But it gets things wrong less when it has access to the right content. Your docs site is still the canonical source of truth. When AI gives a wrong answer, that&#8217;s where developers go to verify. MCP just makes your content reachable from more places.</p><h2>Where to start</h2><p>Start thinking about how AI assistants consume your content. Not how humans read it. How machines query it.</p><p>Structured content, clear headings, explicit examples. These matter even more now. Your new reader doesn&#8217;t browse pages. It parses them.</p><p>Look into how MCP can work for your docs. Connect it to the tools your team already uses. See what questions come in.</p><p>Your docs are already being consumed by AI. The question is whether you&#8217;re serving the right answers or letting the model guess.</p>]]></content:encoded></item><item><title><![CDATA["But it was working fine!"]]></title><description><![CDATA[Why your docs site breaks after four years of 'working fine]]></description><link>https://blog.techdocs.studio/p/but-it-was-working-fine</link><guid isPermaLink="false">https://blog.techdocs.studio/p/but-it-was-working-fine</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 10 Feb 2026 14:30:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/efefd5b9-758e-4d72-9eda-55d495f53054_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>&#8220;But it was working fine!&#8221;</em></p><p>It was. Four years ago.</p><p>Recently a client called about their docs site. Sphinx 4 versions behind, dependencies with security vulnerabilities, relying on deprecated extensions, theme broken on new browsers, search noticeably slower.</p><p>The launch got budget. Content creation got budget. Someone even set up CI to build and deploy automatically. The team celebrated. Then moved on.</p><p>Framework upgrades, dependency updates, security patches? Nobody even brought them up. There was no line item for &#8220;keep the docs site alive.&#8221; Because it was alive. It was working fine.</p><h2>Your docs site didn&#8217;t break</h2><p>You just stopped keeping up with everything around it.</p><p>Every dependency you don&#8217;t update becomes a risk. Every framework version you skip makes the next upgrade harder. None of it is urgent on any given day. All of it is urgent four years later.</p><p>The decay is invisible. The site loads. The search works. The pages render. Until one day they don&#8217;t. Or they do, just slower, just slightly broken, just enough for users to notice before you do.</p><h2>The cost equation</h2><p>Keeping a docs site maintained is routine work. Not always simple, but manageable if you stay current. It just never wins against everything else on your roadmap. A few hours a quarter to update dependencies. A CI check for broken links. An annual framework upgrade before you fall too far behind. Call it 20 to 30 hours a year. Maybe $3 to 5K if you&#8217;re paying someone.<br><br>That client's docs were broken for at least three months before anyone flagged it. The fix took another six weeks. Four and a half months of slow search and a theme that looked off on half the browsers visiting it. All that time, the docs were quietly telling users you don't maintain your tools.</p><h2>Your docs site is a production system</h2><p>We all understand this for apps. Nobody ships a production app and walks away for four years. There are monitoring tools, dependency bots, upgrade cycles.</p><p>Docs sites get none of that. They get launched and forgotten. Then someone calls you four years later wondering why everything is broken.</p><p>It has users, dependencies, and security surface area. It deserves the same care.</p><p>That client&#8217;s site is fixed now. They&#8217;re on a maintenance plan. The kind of work that never makes headlines but means nobody has to make that call again.</p>]]></content:encoded></item><item><title><![CDATA[The friction problem: Why we skip steps (even important ones)]]></title><description><![CDATA[How a simple link fixed our broken docs review process.]]></description><link>https://blog.techdocs.studio/p/the-friction-problem-why-we-skip</link><guid isPermaLink="false">https://blog.techdocs.studio/p/the-friction-problem-why-we-skip</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Mon, 02 Feb 2026 13:24:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b694fa48-c034-4d11-879a-b7dbd1f16fb9_5616x3716.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The docs went live with errors. Users reported them within hours.</p><p>The review process was simple: build the docs locally, check for broken links, formatting issues, rendering problems. Then approve.</p><p>Except reviewers weren&#8217;t building the docs locally. They were skimming the markdown in the PR and hitting approve. &#8220;LGTM!&#8221; Without ever seeing the actual rendered output.</p><p>Can&#8217;t blame them. Building docs locally means cloning the repo, installing dependencies, running a build command, waiting, then navigating to localhost. That&#8217;s five minutes of friction for a review that &#8220;should&#8221; take two. So they skip it and pray it&#8217;ll render well. </p><h2>This isn&#8217;t a discipline problem</h2><p>It&#8217;s a friction problem.</p><p>We don&#8217;t skip important steps because we&#8217;re lazy. We skip them because the effort feels disproportionate to the task. A quick review shouldn&#8217;t require a local dev environment. But it did. So the &#8220;quick review&#8221; became &#8220;skim the markdown and approve.&#8221;</p><h2>The fix was simple</h2><p>We added automated PR previews. Every pull request now generates a deployed preview and drops the link in the PR comments.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pa3d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pa3d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 424w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 848w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 1272w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pa3d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png" width="1236" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:1236,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74911,&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;:&quot;https://blog.techdocs.studio/i/186590483?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pa3d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 424w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 848w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.png 1272w, https://substackcdn.com/image/fetch/$s_!pa3d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a41b8a3-3149-4f5d-9b16-7f5272452ba7_1236x464.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>&#8220;Click this link&#8221; replaced &#8220;build it locally.&#8221; One click versus five minutes of setup. Guess which one people actually do.</p><p>Review quality went up immediately. Not because we trained anyone, not because we wrote stricter guidelines, not because we added more process. We just removed the friction.</p><h2>The pattern</h2><p>This isn&#8217;t unique to doc reviews. </p><p>Style guides nobody follows because checking them is a chore &#8594; put linting in CI and suddenly everyone complies.</p><p>Broken link checks that never happen because clicking every link is tedious &#8594; automate it and they get caught before merge.</p><p>The step is important. We all agree it's important. We still skip it. Every time, the reason is the same: too much friction for the value it delivers in the moment.</p><p>Instead of asking &#8220;why aren&#8217;t people following the process?&#8221;, ask &#8220;what&#8217;s making this process hard to follow?&#8221;</p><div><hr></div><p>If you've run into something similar (a process that kept getting skipped until you found a way to reduce the friction) I'd love to hear about it in the comments.</p>]]></content:encoded></item><item><title><![CDATA[Your docs are talking. Are you listening?]]></title><description><![CDATA[How AI assistants turn user questions into product insights]]></description><link>https://blog.techdocs.studio/p/ai-documentation-assistants-content-gaps</link><guid isPermaLink="false">https://blog.techdocs.studio/p/ai-documentation-assistants-content-gaps</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Wed, 21 Jan 2026 15:14:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6e0d97e5-1698-450f-b9ef-20cc8172c5bc_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most teams add an <strong>AI assistant</strong> to their docs for one reason: answer user questions faster.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OqIT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OqIT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 424w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 848w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OqIT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png" width="1456" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:624677,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.techdocs.studio/i/185216606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OqIT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 424w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 848w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!OqIT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee786f41-92b4-44c1-8508-e0ccc4697402_3024x1714.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI chatbot embedded in a documentation site</figcaption></figure></div><p>That&#8217;s a fine goal. But it misses the bigger opportunity.</p><h2>The real value isn&#8217;t answers. It&#8217;s visibility.</h2><p>Every question a user asks reveals something:</p><ul><li><p>A confusing explanation</p></li><li><p>A missing example</p></li><li><p>A gap in the product itself</p></li></ul><p>When teams add an AI assistant to their docs, they don&#8217;t just get faster support. They get a window into exactly where users are struggling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gj-g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gj-g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 424w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 848w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 1272w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gj-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png" width="1456" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33f12312-715c-465d-af72-f50bebd403e8_1526x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152897,&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;:false,&quot;internalRedirect&quot;:&quot;https://blog.techdocs.studio/i/185216606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gj-g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 424w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 848w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 1272w, https://substackcdn.com/image/fetch/$s_!gj-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33f12312-715c-465d-af72-f50bebd403e8_1526x736.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI chatbot responding "I don't have enough information to answer this question"</figcaption></figure></div><p>When your AI can&#8217;t answer, that&#8217;s not a failure. It&#8217;s a signal.</p><p>That shift changes everything.</p><h2>From static reference to feedback loop</h2><p>Traditional documentation is a one-way broadcast. You write it, publish it, and hope it helps.</p><p>But when you track what users actually ask, documentation becomes a conversation. You see patterns. You spot the same confusion appearing again and again. You find the blind spots your team never noticed because you&#8217;re too close to the product.</p><p>Suddenly, your docs aren&#8217;t just supporting users. They&#8217;re teaching you what to fix.</p><h2>The insight you&#8217;re leaving on the table</h2><p>If your documentation only answers questions, you&#8217;re capturing maybe 10% of its potential value.</p><p>The other 90%? It&#8217;s in the questions themselves.</p><ul><li><p>Which features confuse people most?</p></li><li><p>Where do users get stuck in onboarding?</p></li><li><p>What terminology doesn&#8217;t land?</p></li></ul><p>With an AI assistant, that data exists. Most teams just aren&#8217;t collecting it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vjzc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vjzc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vjzc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57945,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.techdocs.studio/i/185216606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vjzc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vjzc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4fae36-6605-413c-b665-23528292b1a3_1588x818.jpeg 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><figcaption class="image-caption">Analytics dashboard displaying unanswered questions grouped by topic and frequency.</figcaption></figure></div><p>A good AI assistant surfaces which questions your docs can&#8217;t answer, ranked by frequency.</p><h2>From insight to action</h2><p>Knowing where the gaps are is only half the problem. Fixing them is where most teams stall.</p><p>The best tools help you close those gaps with clear guidance on where to start.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VPZo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VPZo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 424w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 848w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VPZo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png" width="1456" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:501293,&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;:&quot;https://blog.techdocs.studio/i/185216606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VPZo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 424w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 848w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!VPZo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f9ccbf-988c-4eab-9df6-2ee56ff5c5b9_3022x1354.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><figcaption class="image-caption">Recommendations on how to fix each content gap, with guidance on what to document and why.</figcaption></figure></div><h2>Start here</h2><p>Next time you look at your docs, don&#8217;t ask &#8220;did we cover everything?&#8221;</p><p>Ask &#8220;what are users still asking, and why?&#8221;</p><p>The answer will show you exactly what needs to change.</p>]]></content:encoded></item><item><title><![CDATA[How to get useful documentation feedback (not comma debates)]]></title><description><![CDATA[Vague requests get surface feedback. Here's how to ask questions that actually help.]]></description><link>https://blog.techdocs.studio/p/how-to-get-useful-documentation-feedback</link><guid isPermaLink="false">https://blog.techdocs.studio/p/how-to-get-useful-documentation-feedback</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Wed, 14 Jan 2026 20:20:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/19c4eeea-c2aa-43b1-aeca-27087bcaaada_5568x3712.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, I sent a tutorial draft to two teammates.</p><p><em>&#8220;Hey, can you review this?&#8221;</em></p><p>Two days later, I had 10 comments. Four of them were about commas. Two more about whether colons introducing lists should be bold or not. Another spent three paragraphs debating whether &#8220;setup&#8221; should be one word or two.</p><p>Not a single comment mentioned that step 4 was completely broken. The command I told users to run didn&#8217;t actually work.</p><h2><strong>Why vague requests produce surface feedback</strong></h2><p>When you ask &#8220;can you review this?&#8221; without direction, people default to whatever stands out first.</p><p>Typos. Formatting. Word choice. Easy to spot, easy to comment on.</p><p>&#8220;Review this&#8221; could mean:</p><ul><li><p>Check if the logic makes sense</p></li><li><p>Verify the code runs</p></li><li><p>Look for security issues</p></li><li><p>Test the user flow</p></li><li><p>Proofread for typos</p></li><li><p>Check if the tone is right</p></li></ul><p>Without knowing what you need, people pick the easiest path.</p><h2><strong>The cost of unfocused reviews</strong></h2><p>You spend hours sorting through comments that don&#8217;t help. Reviewers spend energy on things you&#8217;re going to ignore or fix a later phase. The real issues never get caught.</p><p>I&#8217;ve seen teams spend three review cycles debating admonition colors while nobody notices the registration flow is broken. Product and docs ships. Users can&#8217;t sign up. &#8220;But we had five people review it.&#8221;</p><p>Yeah, they reviewed the wrong things.</p><h2><strong>How to ask for useful feedback</strong></h2><p>Tell exactly what to look at:</p><ul><li><p><em>&#8220;Does the getting started flow make sense?&#8221;</em></p></li><li><p><em>&#8220;Are the code examples working on your end?&#8221;</em></p></li><li><p><em>&#8220;Is the reference documentation for this function complete?&#8221;</em></p></li></ul><p>And tell them what to ignore:</p><ul><li><p><em>&#8220;Don&#8217;t test authentication, QA is handling that&#8221;</em></p></li><li><p><em>&#8220;Ignore formatting, I&#8217;ll run the linter&#8221;</em></p></li><li><p><em>&#8220;Skip the intro section, it&#8217;s placeholder text&#8221;</em></p></li><li><p><em>&#8220;Don&#8217;t worry about performance yet, that&#8217;s next sprint&#8221;</em></p></li></ul><h2><strong>If you&#8217;re the one being asked to review</strong></h2><p>This works the other way too. Someone sends you &#8220;can you review this?&#8221; with no context.</p><p>Ask <em>&#8220;What kind of feedback are you looking for?&#8221;</em></p><p>Takes 30 seconds. Saves both of you from a useless review cycle.</p><h2><strong>See something else? Mention it. But stay focused.</strong></h2><p>If you spot a bug or broken link while reviewing, point it out. If something&#8217;s unclear, say so. Of course, leave things better than you found them. This isn&#8217;t about ignoring obvious problems.</p><p>But keep the ultimate goal in mind. If someone asked you to review the tutorial flow and you spend 15 minutes looking for oxford commas, you&#8217;ve lost the plot. Don&#8217;t forget what they actually needed.</p><p> Just don&#8217;t forget what they actually needed.</p><h2><strong>How to make this normal</strong></h2><p>Next time you ask for a review, add one specific question. When someone asks you to review something, ask what they&#8217;re looking for.</p><p>You can create simple templates:</p><p><strong>Review Request:</strong></p><ul><li><p><strong>What changed:</strong> brief summary</p></li><li><p><strong>What to focus on:</strong> specific concerns</p></li><li><p><strong>What to skip:</strong> things handled elsewhere</p></li><li><p><strong>Questions:</strong> what you&#8217;re unsure about</p></li></ul><h2><strong>What this comes down to</strong></h2><p>Everybody wants to help. But without direction, it&#8217;s easy to loose focus on whatever jumps out first. And that&#8217;s almost never what you need.</p><p>If you want useful feedback, ask useful questions.</p><p>Be specific. Point toward what matters. Call out what to ignore.</p><p>You&#8217;ll get faster reviews, better feedback, and fewer arguments about commas.</p>]]></content:encoded></item><item><title><![CDATA[New product, no docs yet? Start with documentation strategy]]></title><description><![CDATA[Why writing first creates chaos and how to plan your docs for success]]></description><link>https://blog.techdocs.studio/p/how-to-plan-documentation-strategy</link><guid isPermaLink="false">https://blog.techdocs.studio/p/how-to-plan-documentation-strategy</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 06 Jan 2026 18:47:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d10e1205-32b2-498e-9d15-e26b51d2c916_4761x3174.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>New product. No documentation. Zero.<br><br>The instinct is to start writing immediately. Get something out there. Build momentum. Show progress.<br><br>A smarter approach is spending a few weeks on strategy first: Who is your audience? What do they need? Which content types matter? What&#8217;s truly a priority versus nice-to-have?<br><br>It feels slow, but once you have that clarity, writing moves fast.</p><p>Most documentation disasters come from organic growth. One team adds a page here, another over there. Nobody&#8217;s thinking about the whole. Structure only becomes a concern after hundreds of pages exist, when nothing is easy to find or truly useful.</p><p>The pattern is always the same: content first, then more content, then nobody can find anything. Then someone finally asks &#8220;should we reorganize this?&#8221; when reorganization means touching 300 pages and breaking every bookmark and search result.</p><p><strong>Strategy &#8594; Structure &#8594; Content.</strong></p><p><strong>Not Content &#8594; More Content &#8594; Chaos.</strong></p><h2><strong>What documentation strategy actually means</strong></h2><p>Strategy doesn&#8217;t mean a 40-page plan. It means answering a few critical questions before anyone writes a word:</p><p><strong>Who are you writing for?</strong> </p><p>Not &#8220;developers.&#8221; That&#8217;s too vague. Define specific personas in specific situations. A developer integrating your API under deadline pressure needs different content than an enterprise architect evaluating your security model. Pick a primary audience. Acknowledge the others exist, but know who you&#8217;re optimizing for.<br><br><strong>What job is each piece of documentation doing?</strong></p><p>Documentation serves different purposes:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-8Kx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-8Kx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-8Kx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Di&#225;taxis&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="Di&#225;taxis" title="Di&#225;taxis" srcset="https://substackcdn.com/image/fetch/$s_!-8Kx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-8Kx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a53ec6-4689-4bb2-bea4-f65a6da5b116_1920x1080.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><figcaption class="image-caption"><em>Documentation types based on the <a href="https://diataxis.fr/">Di&#225;taxis framework</a> by Daniele Procida.</em></figcaption></figure></div><ul><li><p>Teaching a concept through example (tutorial)</p></li><li><p>Solving a specific problem (how-to guide)</p></li><li><p>Looking up syntax (reference)</p></li><li><p>Understanding why something works this way (explanation)</p></li></ul><p>These aren&#8217;t interchangeable. A reference doc won&#8217;t teach a beginner. A tutorial won&#8217;t help someone troubleshooting at 2am. Your strategy needs to decide which jobs matter most for your product and your users, then commit to doing those jobs well.</p><p><strong>What&#8217;s the minimum content that unlocks the product?</strong></p><p>You don&#8217;t need comprehensive API docs on day one. You don&#8217;t need advanced guides for features nobody&#8217;s using yet. You need whatever removes the biggest obstacle between a new user and their first success.</p><p>Everything else can wait. The question isn&#8217;t &#8220;what should we document eventually?&#8221; It&#8217;s &#8220;what&#8217;s blocking someone right now?&#8221;</p><p><strong>What should each page cover?</strong></p><p>Once you know which content types you need, define what makes each one complete. Tutorials should list prerequisites up front and guide users to a working example. API references need request examples, response formats, and error codes. How-to guides should state the outcome at the start and show the steps clearly. Explanations need context on why things work the way they do.</p><p>This is where templates help. They ensure consistency and completeness across your documentation. But templates only work after you&#8217;ve defined your strategy. Without clarity on what each page type requires, templates just give you consistently incomplete content that raises more questions than it answers.</p><h2><strong>The early content trap</strong></h2><p>In practice, you can ship some early content while doing this thinking. In fact, you should. But those quick wins should not define the strategy.</p><p>You've seen this before: you ship a tutorial because five users asked for it. Then a troubleshooting doc because support is overwhelmed. Then someone adds an FAQ. Then best practices. Each one makes sense in isolation. None of them were planned together. Six months later, you have 50 pages organized by the order they were written, not the order anyone needs them.</p><p>A strategic early win looks different. You know it&#8217;s one piece of a larger system. You know where it lives. You know what comes before and after it. Even if you haven&#8217;t written those other pieces yet, you&#8217;ve left room for them.</p><p>This is the difference between &#8220;we need a tutorial, someone write it&#8221; and &#8220;we need a tutorial that assumes zero prior knowledge, gets someone to a working integration in under 10 minutes, and hands them off to either the API reference or advanced tutorials depending on what they want to do next.&#8221;</p><p>Same deliverable. Completely different foundation.</p><h2><strong>What changes when you do this right</strong></h2><p><strong>Writing gets faster.</strong> You&#8217;re not reinventing structure with every new page or second-guessing where something belongs.</p><p><strong>Maintenance gets easier</strong>. When something changes in your product, you know exactly which docs need updates because you understand how the pieces relate.</p><p><strong>Users find what they need.</strong> Not because your search is amazing, but because the structure matches how they think about problems.</p><p><strong>Teams can contribute confidently.</strong> A new PM can add content because the system makes it obvious where things go.</p><p>None of this happens if you start with content and hope structure emerges. Structure rarely emerges on its own. Chaos does.</p><h2><strong>How to start</strong></h2><p>You don&#8217;t need perfect answers to those strategy questions. You need good enough answers and permission to revisit them.</p><p>Spend a week, maybe two. Talk to five users about what they&#8217;re trying to do. Look at your support tickets and see what&#8217;s actually confusing people. Sketch out the 10-15 core topics your documentation needs to cover and how they connect.</p><p><strong>What works for me: start by mapping navigation flows for each persona.</strong> Where does a junior developer enter your documentation? What&#8217;s their path to first success? What do they need next? Where does a senior architect start, and what questions do they need answered to evaluate your product? Sketch these journeys. Where each audience type enters, what they read, where they go when they&#8217;re stuck.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x2FO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x2FO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 424w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 848w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 1272w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x2FO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png" width="1456" height="553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:553,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114617,&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;:&quot;https://blog.techdocs.studio/i/183669072?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x2FO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 424w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 848w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.png 1272w, https://substackcdn.com/image/fetch/$s_!x2FO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F416f5aac-a1e1-4537-a589-308b2c145d7d_1848x702.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><blockquote><p>Example navigation flows for two different personas. Use it to identify key content and paths.</p></blockquote><p>These flows reveal what content you actually need, not just what seems logical to document. Also, they will help you define your structure. </p><p>Structure isn&#8217;t about folders. It&#8217;s about reflecting how users think about your product. If your users think in terms of workflows, organize by workflow. If they think in terms of features, organize by feature. Don&#8217;t organize by how your engineering team structured the codebase. Nobody outside your company thinks that way.</p><p><strong>Then create a grid in a spreadsheet.</strong> One row per page or section you think you&#8217;ll need based on the previous exercise.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oABr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oABr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 424w, https://substackcdn.com/image/fetch/$s_!oABr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 848w, https://substackcdn.com/image/fetch/$s_!oABr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 1272w, https://substackcdn.com/image/fetch/$s_!oABr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oABr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png" width="1456" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136987,&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;:&quot;https://blog.techdocs.studio/i/183669072?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oABr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 424w, https://substackcdn.com/image/fetch/$s_!oABr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 848w, https://substackcdn.com/image/fetch/$s_!oABr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.png 1272w, https://substackcdn.com/image/fetch/$s_!oABr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7da4b05-4a37-40d8-82d8-34c1d0035b61_1632x516.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><figcaption class="image-caption">Example content planning grid showing modules, personas, content types, priorities, and descriptions. </figcaption></figure></div><p>Columns for:</p><ul><li><p><strong>Module / page title</strong></p></li><li><p><strong>Persona:</strong> who is this for?</p></li><li><p><strong>Content type:</strong> tutorial, reference, how-to, explanation</p></li><li><p><strong>Priority:</strong> must-have for launch, nice-to-have, future</p></li><li><p><strong>Description:</strong> Brief description of what the page covers, required subheadings.</p></li></ul><p>The grid forces you to think about the whole system at once instead of page by page. You&#8217;ll see gaps (&#8221;wait, we have five reference docs but no how-tos?&#8221;) and redundancies (&#8221;these three pages are basically the same thing&#8221;).</p><p><strong>What I&#8217;ve found useful: identify your action-oriented content first (tutorials and how-to guides), then build supporting reference and explanation docs around them.</strong> These supporting docs can be referenced from multiple guides, so you&#8217;re not repeating the same API details or concepts in every tutorial. This keeps guides focused on the task while providing depth for users who need it.</p><p><strong>Together, the flows and the grid become your roadmap.</strong> When someone asks &#8220;should we document X?&#8221; you can see where it fits, or doesn&#8217;t. When priorities shift, you adjust the plan, not 47 individual pages.</p><p>Then start writing. But you&#8217;re writing into a framework now, not into a void.</p><p>Strategy doesn&#8217;t slow you down. It&#8217;s what makes fast sustainable.</p><h2><strong>Planning your documentation strategy?</strong></h2><p>If you&#8217;re staring at documentation chaos or launching something new and want to avoid building problems into your foundation, <a href="https://techdocs.studio/services/content-architecture-planning">we can help</a>. </p><p>We work with teams to design content architecture that scales: mapping personas, defining structure, and creating the roadmap before anyone writes a word.</p>]]></content:encoded></item><item><title><![CDATA[Reflecting on 2025: Growth and learning]]></title><description><![CDATA[A look back at a year of progress, collaboration, and results at TechDocs Studio]]></description><link>https://blog.techdocs.studio/p/reflecting-on-2025-growth-learning</link><guid isPermaLink="false">https://blog.techdocs.studio/p/reflecting-on-2025-growth-learning</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Wed, 31 Dec 2025 09:16:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3198aed7-6eda-4409-a5b9-a0888438f6f5_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>From solo freelance work to a formal company. What a year! </p><p>2025 was full of growth and learning. <br><br>At <strong><a href="https://techdocs.studio">TechDocs Studio</a></strong>, we helped clients build scalable documentation infrastructure, automate workflows, and improve their docs, seeing firsthand how targeted improvements transform daily work for teams. <br><br>We also reinvested in our own products, including <strong><a href="https://biel.ai">Biel.ai</a></strong> and <strong><a href="https://pushfeedback.com">PushFeedback</a></strong>, tackling common documentation challenges our customers face. Watching these tools start to make a real difference has been incredibly rewarding.<br><br>This year reinforced that growth is not just about new contracts, but about trust, collaboration, and celebrating small wins together.<br><br>I&#8217;m grateful to everyone who made this year possible:</p><ul><li><p>&#120278;&#120316;&#120319;&#120306; &#120321;&#120306;&#120302;&#120314;: <strong>&#192;lex</strong>, <strong>Ra&#250;l</strong>. Thank you for bringing skill, dedication, joy to every project.</p></li><li><p>&#120289;&#120306;&#120324; &#120304;&#120313;&#120310;&#120306;&#120315;&#120321;&#120320;: <strong>Kristy-Leigh</strong>, <strong>Matthew</strong>, <strong>Rustom</strong>, <strong>Alex</strong>, <strong>Jimmy</strong>. Thank you for trusting us.</p></li><li><p>&#120287;&#120316;&#120315;&#120308;-&#120321;&#120306;&#120319;&#120314; &#120320;&#120322;&#120317;&#120317;&#120316;&#120319;&#120321;&#120306;&#120319;&#120320;: Anna, <strong>Tzach</strong>, <strong>Elena</strong>, Jorge, Alberto, Rich, Nate. Thank you for your continued trust and support over the years.</p></li><li><p>&#120280;&#120315;&#120302;&#120303;&#120313;&#120306;&#120319;&#120320;: <strong>Pablo</strong>, <strong>Juan Luis</strong>. Thank you for connecting us with exceptional people.</p></li><li><p>&#120281;&#120306;&#120306;&#120305;&#120303;&#120302;&#120304;&#120312; &#120304;&#120309;&#120302;&#120314;&#120317;&#120310;&#120316;&#120315;&#120320;: <strong>Lars</strong>, <strong>Tim</strong>, <strong>Harshil</strong>, <strong>Seonaid</strong>, Elena K. Your feedback improved our tools for everyone.</p></li><li><p>&#120284;&#120315;&#120320;&#120317;&#120310;&#120319;&#120302;&#120321;&#120310;&#120316;&#120315;: <strong>Ivan</strong>, <strong>Sabela</strong>, <strong>Cristina</strong>, <strong>Aleix</strong>, <strong>Xavi</strong>. I&#8217;ve learned a ton from all of you.</p></li><li><p>&#120290;&#120317;&#120306;&#120319;&#120302;&#120321;&#120310;&#120316;&#120315;&#120302;&#120313; &#120320;&#120322;&#120317;&#120317;&#120316;&#120319;&#120321;: <strong>Davinia</strong> for keeping our finances in order, <strong>Gonzalo</strong> for managing customer relations.</p></li></ul><p>...and to everyone we worked with behind the scenes, thank you for your support.</p><p>If you&#8217;re curious about what we built in 2025, you can explore our projects at <a href="http://techdocs.studio/work">techdocs.studio/work</a>:</p><h4><strong>Aligning Coiled&#8217;s documentation theme with their brand identity</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nG_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nG_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 424w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 848w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 1272w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nG_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png" width="1210" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de056b0c-8540-4827-98e7-06be526015c8_1210x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Coiled project screenshot&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Coiled project screenshot" title="Coiled project screenshot" srcset="https://substackcdn.com/image/fetch/$s_!nG_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 424w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 848w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 1272w, https://substackcdn.com/image/fetch/$s_!nG_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde056b0c-8540-4827-98e7-06be526015c8_1210x727.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Following the successful launch of Coiled&#8217;s new website, we developed a custom Sphinx documentation theme that aligned with their updated brand identity, ensuring a cohesive user experience across docs.coiled.io and the main marketing site.</p><p><strong><a href="https://techdocs.studio/work/coiled-docs">Read case study</a></strong></p><div><hr></div><h4><strong>Custom Sphinx theme development for FiftyOne documentation</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rYck!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rYck!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 424w, https://substackcdn.com/image/fetch/$s_!rYck!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 848w, https://substackcdn.com/image/fetch/$s_!rYck!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 1272w, https://substackcdn.com/image/fetch/$s_!rYck!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rYck!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png" width="1210" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Voxel51 project screenshot&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="Voxel51 project screenshot" title="Voxel51 project screenshot" srcset="https://substackcdn.com/image/fetch/$s_!rYck!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 424w, https://substackcdn.com/image/fetch/$s_!rYck!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 848w, https://substackcdn.com/image/fetch/$s_!rYck!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.png 1272w, https://substackcdn.com/image/fetch/$s_!rYck!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39cc68-447f-459a-9ff9-43c92eacf925_1210x727.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>We upgraded FiftyOne&#8217;s documentation from Sphinx 3 to the latest version, created a custom theme aligned with the new Voxel51 brand guidelines, and implemented advanced search capabilities with PushFeedback integration for continuous improvement.</p><p><strong><a href="https://techdocs.studio/work/voxel51">Read case study</a></strong></p><div><hr></div><h4><strong>From Webflow to Next.js: Creating a developer-first website for Coiled</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gom0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gom0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 424w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 848w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 1272w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gom0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png" width="1210" height="711" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:711,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Coiled project screenshot&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="Coiled project screenshot" title="Coiled project screenshot" srcset="https://substackcdn.com/image/fetch/$s_!Gom0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 424w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 848w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.png 1272w, https://substackcdn.com/image/fetch/$s_!Gom0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4cbc302-1552-4e33-866b-22b131efe5e2_1210x711.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>Migrated Coiled&#8217;s website from Webflow to a modern, component-based static site generator, empowering their team to manage content like they manage code.</p><p><strong><a href="https://techdocs.studio/work/coiled">Read case study</a></strong></p><div><hr></div><h4><strong>Automating API reference generation from OpenAPI and GraphQL schemas</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P2kG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P2kG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 424w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 848w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 1272w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P2kG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png" width="1210" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3941050d-468e-425d-96c1-b38698ada110_1210x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MONEI project screenshot&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="MONEI project screenshot" title="MONEI project screenshot" srcset="https://substackcdn.com/image/fetch/$s_!P2kG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 424w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 848w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.png 1272w, https://substackcdn.com/image/fetch/$s_!P2kG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3941050d-468e-425d-96c1-b38698ada110_1210x702.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>Migrated MONEI&#8217;s docs to Docusaurus v3, implemented cross-site search, and autogenerated consistent API documentation from OpenAPI and GraphQL contracts.</p><p><strong><a href="https://techdocs.studio/work/monei">Read case study</a></strong></p><div><hr></div><h4><strong>Unifying Blue Robotics&#8217; documentation with a custom Sphinx theme</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WpaP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WpaP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 424w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 848w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 1272w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WpaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png" width="1210" height="729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:729,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Blue Robotics project screenshot&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="Blue Robotics project screenshot" title="Blue Robotics project screenshot" srcset="https://substackcdn.com/image/fetch/$s_!WpaP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 424w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 848w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.png 1272w, https://substackcdn.com/image/fetch/$s_!WpaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7ab38d-cd80-4933-9d03-fb0b98ae1ca9_1210x729.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>Developed a custom Sphinx theme with Material design aesthetics, implemented multi-language support, and set up a custom CI/CD pipeline for version management across their documentation ecosystem.</p><p><strong><a href="https://techdocs.studio/work/bluerobotics">Read case study</a></strong><br><br>Here&#8217;s to 2026: more learning, more impact, and helping teams build documentation that scales!</p><p>&#8212; David</p>]]></content:encoded></item><item><title><![CDATA[Our best tutorial was actually broken (we just couldn't see it)]]></title><description><![CDATA[12 user complaints revealed what our analytics couldn't]]></description><link>https://blog.techdocs.studio/p/our-best-tutorial-was-actually-broken</link><guid isPermaLink="false">https://blog.techdocs.studio/p/our-best-tutorial-was-actually-broken</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 23 Dec 2025 14:47:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/26218e86-5bf4-4c0e-97b0-4d928f05b31f_3553x2572.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A tutorial had a 5-minute average session time. Analytics looked great. Best retention of any page. During a review call, the product lead pulled up the dashboard: &#8220;See? Users love this one.&#8221;</p><p>We suggested adding a feedback widget. A small button: &#8220;Was this helpful?&#8221;</p><p>One week later, 12 users had left feedback. Not one was positive.</p><p>&#8220;Step 3 is missing.&#8221; &#8220;This example doesn&#8217;t work.&#8221; &#8220;I&#8217;ve read this four times and I&#8217;m still confused.&#8221; &#8220;Where&#8217;s the actual code?&#8221;</p><p>Those 5 minutes weren&#8217;t engagement. They were users scrolling up and down, re-reading, trying to figure out what was missing.</p><h2>Good metrics, bad experience</h2><p>The analytics showed what users did. The feedback showed why.</p><p>The team fixed everything in 48 hours. Added the missing step. Replaced the broken example. Clarified the confusing parts. Added code snippets where users expected them.</p><p>Session time dropped to 3 minutes. But now users were finishing successfully instead of giving up confused.</p><h2>You need both</h2><p>Quantitative data shows behavior. Qualitative data explains it.</p><p>Your analytics will tell you users spent 5 minutes on a page. Your users will tell you they spent 5 minutes confused.</p><p>One number can mean two completely different things.</p>]]></content:encoded></item><item><title><![CDATA[A tagging system for documentation review comments]]></title><description><![CDATA[Use a tagging system to stop debating what blocks merge.]]></description><link>https://blog.techdocs.studio/p/a-tagging-system-for-documentation-review-comments</link><guid isPermaLink="false">https://blog.techdocs.studio/p/a-tagging-system-for-documentation-review-comments</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 16 Dec 2025 14:03:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/828d34d6-fb7e-48f1-aed1-6fec03b5d0ad_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every comment in the review looks equally urgent.</p><p>Formatting notes sit beside broken code examples. The team spends 30 minutes debating comma placement while critical bugs slip through.</p><p>To fix this, I introduced a tagging system for review comments.</p><h2>The problem: No shared language for priority</h2><p>Reviewers leave comments without indicating priority. Contributors treat every comment as blocking.</p><p>The breakdown happens in three ways:</p><ul><li><p><strong>Contributors waste time on non-issues:</strong> Someone suggests &#8220;maybe use a bullet list here instead of numbered?&#8221; The contributor spends an hour reformatting. Turns out it was just a passing thought.</p></li><li><p><strong>Critical issues get missed:</strong> Seventeen comments deep, one mentions the API endpoint is wrong. The PR merges. Users hit a broken example. Support tickets pile up.</p></li><li><p><strong>Review cycles multiply:</strong> Contributor fixes what they think matters. Reviewer expected different fixes. Another round. The two-day PR becomes a two-week ordeal.</p></li></ul><p>The root cause: no shared language for priority. And even when something clearly needs fixing, the comment doesn&#8217;t say what kind of fix. Is it a code bug? A clarity problem? A style preference? Contributors guess, guess wrong, and the cycle repeats.</p><h2>The fix: severity + category</h2><p>A two-part tag for every review comment.</p><p><strong>Severity</strong> tells contributors the importance of the fix:</p><ul><li><p><strong>blocker:</strong> Must fix before merge. Breaks functionality or blocks critical understanding.</p></li><li><p><strong>improvement</strong>: Should fix before publication. Improves clarity, structure, or usability.</p></li><li><p><strong>optional</strong>: Personal preferences, stylistic suggestions, future ideas.</p></li></ul><p><strong>Category</strong></p><p><strong>Category</strong> tells contributors what kind of fix at first glance:</p><ul><li><p><strong>clarity</strong>: Confusing or incomplete explanations.</p></li><li><p><strong>bug</strong> Incorrect code, wrong output, factual errors.</p></li><li><p><strong>organization</strong>: Issues with flow, structure, content order.</p></li><li><p><strong>style</strong>: Wording, formatting, tone.</p></li><li><p><strong>consistency</strong>: Conflicts with other sections, terminology, or examples.</p></li></ul><p>Add others if your team needs them. Keep the list short.</p><h2>Some examples</h2><blockquote><p><em>(improvement, clarity)</em>: Step 3 assumes readers know what environment variables are. Add a one-line explanation or link to prerequisites.</p></blockquote><blockquote><p><em>(blocker, bug)</em>: This code example throws an error. Missing import statement at the top.</p></blockquote><blockquote><p><em>(improvement, organization)</em>: Move the troubleshooting section before advanced configuration. Users hit errors at the basic level first.</p></blockquote><blockquote><p><em>(optional, clarity)</em>: This explanation works, but the second paragraph repeats the first. Consider cutting it.</p></blockquote><h2>What changes after tagging</h2><ul><li><p><strong>Contributors know what to fix immediately</strong>. Scan for <em>blocker</em> tags. Fix those first. Everything else waits.</p></li><li><p><strong>Contributors feel less overwhelmed: </strong>Seventeen comments looks terrifying. Two blockers, eight improvements, seven optional? Manageable.</p></li><li><p><strong>Debates end faster: </strong>No more &#8220;should we merge this or wait?&#8221; If there are no blockers, merge. Track improvements for follow-up.</p></li><li><p><strong>Review culture improves:</strong> New reviewers see the pattern. They start tagging their comments. The team develops shared expectations.</p></li></ul><h2>What this doesn&#8217;t fix</h2><ul><li><p><strong>Tagging doesn&#8217;t fix slow reviewers.</strong> If your team takes three days to look at PRs, tags won&#8217;t help. That&#8217;s a process problem.</p></li><li><p><strong>Tagging doesn&#8217;t fix bad feedback.</strong> <em>&#8220;(blocker, style): I don&#8217;t like this wording&#8221;</em> is still bad feedback. Add context. Explain why.</p></li><li><p><strong>Tagging doesn&#8217;t replace good judgment</strong>. A reviewer still needs to know what&#8217;s actually a blocker vs. a preference.</p></li></ul><h2>How to start</h2><p>Don&#8217;t overthink it. Start tagging your review comments this week.</p><p>Put the tag at the start of each comment. Make it visible.</p><p>Within two weeks, you&#8217;ll see fewer debates about what blocks merge. Contributors will know what to fix first. Reviews will move faster. Others will copy you.</p><p>The system works because it forces one decision upfront: is this blocking or not?</p><p>Make that decision explicit. Stop wasting time guessing.</p>]]></content:encoded></item><item><title><![CDATA[Three tools, five steps, no consistency ]]></title><description><![CDATA[Why screenshot workflows break (and what I'm building to fix it)]]></description><link>https://blog.techdocs.studio/p/three-tools-five-steps-no-consistency</link><guid isPermaLink="false">https://blog.techdocs.studio/p/three-tools-five-steps-no-consistency</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 09 Dec 2025 14:49:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a1b1e3c6-c303-443b-841a-156c67c1ca43_5000x3333.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve created hundreds of screenshots for technical docs.<br><br>One tool to capture, add arrows, and blur things. Another one to add steps. Then making sure it&#8217;s the right size. And somehow, every team member exports theirs at completely different dimensions.<br><br>So I&#8217;m building <strong>Screenshot Studio</strong> to fix this. A professional tool that handles everything from capture to export, with presets so the whole team stays consistent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y3wC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y3wC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y3wC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg" width="1456" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117112,&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;:&quot;https://techdocs.substack.com/i/181032781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y3wC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y3wC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6321ddac-4828-488a-8897-46f749087894_2048x1114.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The waitlist just opened: <strong><a href="https://tally.so/r/RGxzzJ">https://tally.so/r/RGxzzJ</a></strong><br><br>Join for early access and help decide what features to build first.<br><br>What&#8217;s the most annoying part of your screenshot workflow? &#128071;</p>]]></content:encoded></item><item><title><![CDATA[Reference documentation that never gets outdated]]></title><description><![CDATA[Define once. Generate everything else.]]></description><link>https://blog.techdocs.studio/p/reference-documentation-that-never</link><guid isPermaLink="false">https://blog.techdocs.studio/p/reference-documentation-that-never</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 02 Dec 2025 15:04:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/761812b0-f2a1-4788-8b40-0e9757367830_3840x2560.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most teams maintain configuration properties twice. Code defines them. Docs describe them.</p><p>Then things drift apart.</p><h2>The problem</h2><p>Engineer adds a new configuration property:</p><pre><code>export interface DatabaseConfig {
  isolationLevel?: IsolationLevel;
  enableSsl?: boolean; 
  <strong>retryAttempts?: number; // New property</strong>
}</code></pre><p>Deploys it. Forgets to update the docs.<br></p><p>Three weeks later, a user reads the documentation. No mention of <code>retry_attempts</code>. They assume the feature doesn&#8217;t exist. Or worse, they assume the default behavior and it breaks their setup.</p><p>Support ticket arrives.</p><p>This pattern repeats with every config change. Properties added, docs lag behind. Properties deprecated, docs still show them. Default values change, docs show old defaults. The same thing happens with API parameters, CLI flags, environment variables, error codes. Anywhere docs describe what exists in code.</p><p>The root cause is simple: code and docs live in two places with different owners. Code changes frequently, gets reviewed and tested, and is always correct. Docs update manually, have no automated checks, and drift out of sync. Two systems that don&#8217;t talk to each other.</p><h2>The solution: define once, generate the rest</h2><p>There are two approaches.</p><h3>Approach 1: Define a schema</h3><p>Write a machine-readable schema as your source of truth. From it, generate code, docs, and everything else.</p><pre><code>properties:

  - name: isolation_level
    required: true
    type: string
    enum: [READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE]
    example: READ_UNCOMMITTED
    description: Transaction isolation level

  - name: enable_ssl
    required: false
    type: boolean
    default: true
    description: Enable SSL encryption for database connections

  - name: retry_attempts
    required: false
    type: integer
    default: 3
    description: Number of times to retry failed connections</code></pre><p>From this schema, generate server code, client SDKs, API documentation, examples, interactive API explorers. The schema is your contract. Everything else derives from it.</p><p>An additional benefit: by decoupling the schema from actual code, you facilitate conversations about the contract. Teams can review and agree on the API structure before implementation.</p><p>This approach works best when open standards exist for your technology: <a href="https://www.openapis.org/">OpenAPI</a> for REST APIs, <a href="https://graphql.org/">GraphQL</a> schemas, <a href="https://protobuf.dev/">Protocol Buffers </a>for gRPC, <a href="https://json-schema.org/">JSON Schema</a>, <a href="https://www.asyncapi.com/en">AsyncAPI</a> for event-driven architectures.</p><p>If no standard exists, you need to build the generators yourself, which could be a stopper if resources are limited.</p><h3>Approach 2: Annotate your code</h3><p>Add documentation as annotations directly in your code. Generate docs from it.</p><p><strong>Example:</strong> TypeScript with JSDoc</p><pre><code>export interface DatabaseConfig {

  <strong>/** Transaction isolation level
   * @required
   * @example &#8216;READ_COMMITTED&#8217;
   */</strong>
  isolationLevel?: IsolationLevel;

  <strong>/** Enable SSL encryption for database connections
   * @default true
   */</strong>
  enableSsl?: boolean;

  <strong>/** Number of times to retry failed connections
   * @default 3
   */</strong>
  retryAttempts: number;
}
</code></pre><p>From annotated code, generate the intermediate schema and the reference documentation.</p><p>Check if your programming language already has a standard: <a href="https://www.baeldung.com/javadoc">JavaDoc</a> for Java, <a href="https://realpython.com/how-to-write-docstrings-in-python/#exploring-docstring-formats-in-python">Google-style docstrings</a> for Python, <a href="https://jsdoc.app/">JSDoc</a> for TypeScript/JavaScript. If no convention exists, define one. Document it. Stay consistent.</p><p>This approach is simpler than defining schemas, especially when you don&#8217;t have code generators available.</p><h2>How to implement it</h2><p><strong>Document your source of truth. </strong>Write your schema file or add annotations to your code. Include descriptions, types, defaults, constraints.</p><p>Be thorough. This is the single source. Everything generates from it.</p><p><strong>Choose your generator. </strong>Check if existing plugins work for your docs platform. Rendering OpenAPI in Docusaurus? There&#8217;s a <a href="https://github.com/PaloAltoNetworks/docusaurus-openapi-docs">plugin</a>. Sphinx? <a href="https://sphinxcontrib-openapi.readthedocs.io/">Extension available</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hRnt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hRnt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 424w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 848w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hRnt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png" width="1456" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:487079,&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;:&quot;https://techdocs.substack.com/i/179833255?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hRnt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 424w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 848w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!hRnt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55bcbf8b-bdab-425a-aaa4-d3205cca2efd_3024x1714.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><figcaption class="image-caption">Schema page generated with Docusaurus</figcaption></figure></div><p><br>But if you need something specific (TypeScript docs in Antora, for example), you&#8217;ll need a custom solution.</p><blockquote><p><strong>Key tip for annotations:</strong> Always generate an intermediate schema file (JSON or YAML) first. Don&#8217;t try parse code annotations directly in your docs build. </p></blockquote><p>If you need a custom extension, that requires dev work. <a href="https://techdocs.studio/services/documentation-automation">We can help with that</a>.</p><p><strong>Add to CI. </strong>On every commit: validate the source, regenerate documentation, fail the build if validation fails. On merge: deploy updated documentation automatically.</p><h2>Start small</h2><p>You don&#8217;t need to generate everything on day one.</p><p>Start with one configuration file. Generate just the reference table. Keep the rest manual. You can still have custom, hand-written guides alongside generated reference sections. Prove it works. Then expand.</p><h2>A common objection</h2><blockquote><p><em>&#8220;But our configuration is complex. We need custom documentation.&#8221;</em></p></blockquote><p>You can still have it. Generate the reference section (the part that can be autogenerated and reused in guides). Keep step-by-step guides manual.</p><h2>The result</h2><p>Engineer adds a new parameter. Commits the code. The docs update automatically.</p><p>Three weeks later, a user reads the documentation. The parameter is there.</p><p>No support ticket this time.</p>]]></content:encoded></item><item><title><![CDATA[AI writes generic docs without this]]></title><description><![CDATA[Keep a context file next to your codebase. Feed it to AI every time.]]></description><link>https://blog.techdocs.studio/p/ai-writes-generic-docs-without-this</link><guid isPermaLink="false">https://blog.techdocs.studio/p/ai-writes-generic-docs-without-this</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Tue, 25 Nov 2025 08:24:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5fa2b4f2-5308-4b3e-bb1d-84676ddd30ff_3725x2508.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I kept rewriting everything the AI wrote.</p><p>The content was technically correct but generic. Corporate tone that didn&#8217;t match our style. Examples that could have been for any product. Missing the context that makes ours different.</p><p>The AI wasn&#8217;t the problem. I was asking it to write documentation without giving it the information it needed.</p><h2>What changed</h2><p>We now keep a <strong>context file</strong> next to the codebase. Every time I prompt an AI agent, I feed this file in first.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FX_0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FX_0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 424w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 848w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 1272w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FX_0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png" width="3024" height="1806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1806,&quot;width&quot;:3024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:499240,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://techdocs.substack.com/i/179824568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b42bc54-ed7d-4158-a955-0b3d492cb541_3024x1806.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FX_0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 424w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 848w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 1272w, https://substackcdn.com/image/fetch/$s_!FX_0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1c0ff4-b7fd-428d-b68e-b6620e5ed6bd_3024x1806.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Preview of my context file</figcaption></figure></div><p><strong>Without context file:</strong></p><blockquote><p>&#8220;Welcome to Biel.ai! We&#8217;re excited to help you get started with our amazing AI chatbot platform.&#8221;</p></blockquote><p><strong>With context file:</strong></p><blockquote><p>&#8220;Biel.ai trains on your documentation to answer technical questions. This guide gets you from zero to a working chatbot in 10 minutes.&#8221;</p></blockquote><p>The second version matches our voice. Uses our positioning. Focuses on the user.</p><p>Think of it like onboarding a new team member. You don&#8217;t say &#8220;go write docs&#8221; and expect great results. You explain the product, the users, the style, the constraints. Same with AI.</p><h2>How to build one</h2><p>Create a markdown file next to your codebase. Include:</p><p>1. Three sentences about your product</p><p>2. Who uses it and why (specific personas, not &#8220;developers&#8221;)</p><p>3. How you write, what to avoid, examples of good vs. bad. Paste 3-5 examples from your best docs (this is your voice)</p><p>4. Common use cases (actual workflows)</p><p>5. Technical details (stack, repo structure, naming conventions)</p><p>Commit it so it versions with your code. Update it as you find the AI producing results that miss the mark.</p><p>Use it for docs, marketing copy, support responses, tutorial content, release notes. Anywhere AI writes for your product.</p><p><strong>More advanced:</strong> If your IDE supports rules (like Cursor&#8217;s <code>.cursor/rules</code>), add the context file there. It&#8217;ll feed into every prompt automatically.</p><h2>An unexpected benefit</h2><p>The context file started aligning the whole team. New engineers read it to understand positioning. Writers use it for consistency. Product managers reference it when describing features.</p><p>It became our single source of truth for &#8220;how we talk about this product.&#8221;</p><p>Worth the 30 minutes to set up.</p>]]></content:encoded></item><item><title><![CDATA[Take back control of your documentation]]></title><description><![CDATA[Docs-as-code gives you control of your content.]]></description><link>https://blog.techdocs.studio/p/take-back-control-of-your-documentation</link><guid isPermaLink="false">https://blog.techdocs.studio/p/take-back-control-of-your-documentation</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Fri, 21 Nov 2025 13:45:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/519d1b11-213a-472b-8329-c7a49f02cff6_7360x4912.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve seen teams trapped by their documentation platform. Five years of content locked in a proprietary CMS. Export breaks formatting. No clean way out. Then the vendor changes pricing and there&#8217;s nothing you can do.</p><p>Your content stays in their system. Your build process depends on their infrastructure. Your ability to move depends on their export tool, which barely works.</p><p><strong>Docs-as-code</strong> flips this. Content is markdown in Git. You own the build process. You can host anywhere. Switch tools without losing content.</p><p>This isn&#8217;t anti-SaaS (there are docs-as-code friendly platforms out there). It&#8217;s about keeping ownership of your content so it doesn&#8217;t become leverage for someone else.</p><p>Your docs are a business asset. Treat them like one.<br><br>P.S. I&#8217;m back on Substack with a weekly note on technical writing, docs-as-code, and automation. If you&#8217;re not interested, you can <a href="https://substack.com/@techdocs">unsubscribe</a> anytime.</p>]]></content:encoded></item><item><title><![CDATA[Add an AI Chatbot to your documentation with Biel.ai]]></title><description><![CDATA[Set up Biel.ai on Docusaurus to let users ask questions in natural language.]]></description><link>https://blog.techdocs.studio/p/add-an-ai-chatbot-to-your-documentation</link><guid isPermaLink="false">https://blog.techdocs.studio/p/add-an-ai-chatbot-to-your-documentation</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Mon, 06 Jan 2025 16:23:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/be8ca192-61a5-47b7-a529-b707c20da215_4608x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Users ask &#8220;Where are the docs for XYZ?&#8221; when the answer is right there on page 12. They just can&#8217;t find it.</p><p>An AI chatbot lets them ask in plain language and get instant answers from your existing documentation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FBxQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FBxQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FBxQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Biel.ai Dashboard&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Biel.ai Dashboard" title="Biel.ai Dashboard" srcset="https://substackcdn.com/image/fetch/$s_!FBxQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!FBxQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b3812a-3f5c-4cd2-8791-6833786ca3c8_2880x1576.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s how to add <a href="https://biel.ai">Biel.ai</a>  to your documentation. This guide uses Docusaurus, but Biel.ai works with <a href="https://docs.biel.ai/installation/cdn">any static site generator</a>.</p><p><strong>Disclaimer:</strong> I built Biel.ai. It&#8217;s a paid service with a free trial.</p><h2>Prerequisites</h2><ul><li><p>Docusaurus site (existing or new)</p></li></ul><ul><li><p>Node.js v18 or higher</p></li><li><p>A sitemap for your docs site</p></li></ul><h2>Step 1:  Create a Biel.ai account</h2><p>Go to <strong><a href="https://app.biel.ai/">app.biel.ai</a> </strong>and sign up. Follow the on-screen instructions to create your account.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tepu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tepu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tepu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Create account&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="Create account" title="Create account" srcset="https://substackcdn.com/image/fetch/$s_!Tepu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!Tepu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ff4291-9c33-41f4-a613-14d2c1a6d4ac_2880x1576.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><h2>Step 2: Create your first chatbot project</h2><ol><li><p>In your Biel.ai dashboard, click on the <strong>Projects</strong> tab at the top.</p></li><li><p>Click <strong>Create project</strong>.</p></li><li><p>Enter your project details: </p><ul><li><p><strong>Project name:</strong> Choose a unique name.</p></li><li><p><strong>Sources:</strong> Select <strong>Sitemap</strong> and enter the sitemap URL of your Docusaurus site (e.g., <code>docs.domain.com/sitemap.xml</code>).</p></li></ul></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Erg3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Erg3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Erg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Create project&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="Create project" title="Create project" srcset="https://substackcdn.com/image/fetch/$s_!Erg3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!Erg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0405685a-ac65-4f2c-a0ce-7e0ec6e0636a_2880x1576.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><ol start="4"><li><p>Click <strong>Save</strong>.</p></li></ol><p>You&#8217;ll receive a unique Project ID. Keep this handy, as you&#8217;ll need it later.</p><h2>Step 3: Install the chatbot</h2><ol><li><p>Install the Docusaurus package:</p></li></ol><pre><code><code>npm install docusaurus-biel</code></code></pre><ol start="2"><li><p>Add Biel.ai to your <code>docusaurus.config.js</code> file:</p></li></ol><pre><code><code>plugins: [
    [
        &#8216;docusaurus-biel&#8217;,{
            project: &#8216;&lt;PROJECT_ID&gt;&#8217;,
            version: &#8216;latest&#8217;
        }
    ]
],</code></code></pre><blockquote><p>Replace <code>&lt;PROJECT_ID&gt;</code> with the Project ID you received earlier.</p></blockquote><ol start="3"><li><p>Run your site locally to ensure everything is working properly:</p></li></ol><pre><code><code>npm start</code></code></pre><p>The chatbot appears as a floating widget. Users can ask questions and get answers from your docs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nIXM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nIXM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nIXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI chatbot&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="AI chatbot" title="AI chatbot" srcset="https://substackcdn.com/image/fetch/$s_!nIXM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 424w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 848w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!nIXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcdbd52d-d51c-4e6d-a4d3-29625300c557_2880x1576.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><h2>Step 4 - Customize your chatbot (optional)</h2><p>You can tweak the chatbot&#8217;s appearance and behavior in the <code>docusaurus.config.js</code> file. For example, you can change the button text or adjust the chatbot&#8217;s position:</p><pre><code><code>plugins: [
    [
        &#8216;docusaurus-biel&#8217;,{
            enable: true,
            project: &#8216;&lt;PROJECT_ID&gt;&#8217;,
            bielButtonText: &#8216;ASK AI&#8217;,
            buttonPosition: &#8216;center-right&#8217;,
            modalPosition: &#8216;sidebar-right&#8217;,
            headerTitle: &#8216;Biel.ai chatbot&#8217;
            buttonStyle: &#8216;dark&#8217;,
        }
    ]
],</code></code></pre><p>For advanced customization options, such as adding an initial message, suggested questions, or further editing the style, refer to <strong><a href="https://docs.biel.ai/category/customization">Customization</a></strong>.</p><h2>What the chatbot conversations tell you</h2><p>The chatbot tracks what users ask. This reveals gaps in your documentation.</p><p>If 50 people ask about webhook authentication but you don&#8217;t have a guide, that&#8217;s a signal to write one. The questions show what&#8217;s missing or unclear.</p><p>The AI only works as well as your documentation. Well-structured, comprehensive docs lead to better answers. Gaps lead to poor responses.</p>]]></content:encoded></item><item><title><![CDATA[Your docs aren't broken. They're just hard to find.]]></title><description><![CDATA[Spent hours creating your docs, but users still can&#8217;t find what they need?]]></description><link>https://blog.techdocs.studio/p/your-docs-arent-brokentheyre-just</link><guid isPermaLink="false">https://blog.techdocs.studio/p/your-docs-arent-brokentheyre-just</guid><dc:creator><![CDATA[David Garcia]]></dc:creator><pubDate>Thu, 12 Dec 2024 08:31:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9e70ac67-e93e-4970-8990-c307ff6bc170_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;Where are the docs for webhooks?&#8221;</p><p>It&#8217;s right there in the docs. But the user searched &#8220;automatic notifications&#8221; and got nothing. The docs call it webhooks. The user doesn&#8217;t.</p><p>Traditional search works when users know the right terms. They usually don&#8217;t. They describe what they&#8217;re trying to do, not what the feature is called. Your docs could be perfect and users would still miss them because they searched the wrong word.</p><h2>What we built</h2><p>Over the past year, we&#8217;ve been building <a href="https://biel.ai">Biel.ai</a> to solve this. It&#8217;s an AI chatbot that sits on your docs site and answers questions from your existing content. Think of it as ChatGPT, but trained on your product documentation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fzy-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fzy-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 424w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 848w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 1272w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fzy-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hero" title="Hero" srcset="https://substackcdn.com/image/fetch/$s_!fzy-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 424w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 848w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 1272w, https://substackcdn.com/image/fetch/$s_!fzy-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e1b6d4-c07b-43b3-8cfe-8a47885a0282_3840x2101.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>Users ask a question in plain language. Biel finds the answer in your docs and responds. No keyword matching. No browsing through a sidebar hoping to find the right page.</p><h2>What surprised us</h2><p>Biel didn&#8217;t just help users find answers. It showed us what was missing.</p><p>The conversation logs revealed gaps we didn&#8217;t know about. Topics we assumed were covered but weren&#8217;t. Workflows that lived in Slack but not in the docs. Basic things nobody had written down.</p><p>We went from guessing what users needed to seeing it in the data. The chatbot became a feedback tool as much as a support tool.</p><h2>Who this is for</h2><p>If you maintain documentation for a technical product and your users keep asking questions the docs already answer, Biel can help.</p><p>It works with any static site generator. Setup takes about 10 minutes.</p><p>Want to see it on your docs? Send me a message at <a href="mailto:david@techdocs.studio">david@techdocs.studio</a> with your docs URL and I&#8217;ll set up a demo.</p>]]></content:encoded></item></channel></rss>