<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: duncan muriithi</title>
    <description>The latest articles on DEV Community by duncan muriithi (@duncan_muriithi_ac6ae76f9).</description>
    <link>https://dev.to/duncan_muriithi_ac6ae76f9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4058402%2F650ed4d1-ded1-4e94-90e6-1841435f0127.jpg</url>
      <title>DEV Community: duncan muriithi</title>
      <link>https://dev.to/duncan_muriithi_ac6ae76f9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/duncan_muriithi_ac6ae76f9"/>
    <language>en</language>
    <item>
      <title>Why "here's a list of grants" isn't the product founders actually need</title>
      <dc:creator>duncan muriithi</dc:creator>
      <pubDate>Fri, 28 Aug 2026 18:42:53 +0000</pubDate>
      <link>https://dev.to/duncan_muriithi_ac6ae76f9/why-heres-a-list-of-grants-isnt-the-product-founders-actually-need-2o9</link>
      <guid>https://dev.to/duncan_muriithi_ac6ae76f9/why-heres-a-list-of-grants-isnt-the-product-founders-actually-need-2o9</guid>
      <description>&lt;p&gt;Every funding-discovery tool for startups eventually converges on the same MVP: scrape or manually curate a list of grants/accelerators, put it behind a search bar, ship it. It's the obvious build, and it's also the wrong place to stop, for a specific reason worth unpacking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The list is not the bottleneck. The application is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A founder searching "grants for fintech startups Kenya" doesn't lack information — Google already half-solves that. What they lack is a way to turn "I qualify for this" into "I submitted a strong application for this" without burning a weekend per opportunity writing to a rubric they've never seen.&lt;/p&gt;

&lt;p&gt;That's the design decision behind &lt;a href="https://startupmaphub.com" rel="noopener noreferrer"&gt;Startup Map Hub&lt;/a&gt;, and it's the part worth discussing technically. The &lt;a href="https://startupmaphub.com/funding" rel="noopener noreferrer"&gt;funding directory&lt;/a&gt; (110+ opportunities, 8 countries, refreshed weekly) is genuinely free — no gate, because a catalogue isn't the product. What's paid is the drafting layer: a Gemini-backed service that takes a founder's uploaded pitch deck and financials as context and generates a real first-draft application against a specific opportunity, rather than a generic template filled with placeholder text.&lt;/p&gt;

&lt;p&gt;The interesting engineering constraint here is grounding: a generic LLM call produces generic funding-application prose — the kind that reads as obviously AI-written because it has no specific facts to anchor to. Feeding the founder's actual deck/financials as inline context is what keeps the output specific enough to be useful, versus "we are a passionate team solving a real problem" filler that every reviewer has learned to skim past.&lt;/p&gt;

&lt;p&gt;The broader thesis: in any "discovery + drafting" product, the discovery half is commoditized fast — anyone can scrape a list. The defensible half is whatever makes the drafted output actually specific to the user, and that only works if the product treats grounding as core architecture, not a prompt-engineering afterthought.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I'm affiliated with Startup Map Hub, which I'm using here as the worked example.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>product</category>
      <category>software</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why "AI roofing" estimators stop at the tape measure</title>
      <dc:creator>duncan muriithi</dc:creator>
      <pubDate>Thu, 27 Aug 2026 06:52:29 +0000</pubDate>
      <link>https://dev.to/duncan_muriithi_ac6ae76f9/why-ai-roofing-estimators-stop-at-the-tape-measure-2hn4</link>
      <guid>https://dev.to/duncan_muriithi_ac6ae76f9/why-ai-roofing-estimators-stop-at-the-tape-measure-2hn4</guid>
      <description>&lt;p&gt;Disclosure: I'm affiliated with McQueen Roofing, which I use below as the worked example.&lt;/p&gt;

&lt;p&gt;Point a computer-vision model at satellite or aerial imagery and it will tell you, with decent accuracy, the area of a roof, its pitch, and how many facets it has. That's a solved problem now — half a dozen companies do it well. Type "AI roofing estimate" into a search bar and almost everything you find is some flavor of that: a geometry engine wearing a marketing headline.&lt;/p&gt;

&lt;p&gt;The part nobody productizes well is what happens &lt;em&gt;after&lt;/em&gt; the measurement. A roof area and a pitch angle are not an estimate. An estimate is a priced, itemized list: field shingles, ridge and starter courses, underlayment, ice-and-water shield, drip edge, flashing, ventilation, tear-off, labor — each one costed at current material and labor rates, each one sized off a waste factor that should vary with how complicated the roof actually is (a simple gable wastes a lot less material than a roof with nine facets and short runs everywhere).&lt;/p&gt;

&lt;p&gt;That's the part I think is the real moat, and it's a reasoning problem, not a vision problem. You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A waste-factor model that responds to measured complexity (facet count, cut density) instead of applying a flat 10% to every job.&lt;/li&gt;
&lt;li&gt;Current line-item pricing that doesn't go stale, because a re-roof has a dozen-plus line items and any one of them being wrong or missing changes the bottom line.&lt;/li&gt;
&lt;li&gt;A way to flag when a quote — yours or a contractor's — is missing a line item entirely. This turns out to be one of the more useful things you can do with the output: most quote disagreements aren't actually about the roof, they're about undisclosed differences in scope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One implementation detail I'd argue matters more than it gets credit for: tagging every number in the output with how it was produced — measured, derived, assumed, user-provided, or allowance. It's a small thing, but it's the difference between an estimate you can audit and one you have to trust blindly. &lt;a href="https://mcqueenroofing.com/" rel="noopener noreferrer"&gt;McQueen Roofing&lt;/a&gt; does this — a report where every line says whether it came from the imagery, from a calculation, from a stated assumption, or from a flat allowance, rather than presenting everything with the same false precision.&lt;/p&gt;

&lt;p&gt;Pricing-wise it's structured as a free browser estimate (footprint-based, no measurement) and an $18 one-off charge for a measured roof — no subscription. The gate sits at the same line as the actual cost: nothing is charged until the measurement call happens, and a failed measurement refunds itself as credit rather than eating your money on a roof it couldn't read.&lt;/p&gt;

&lt;p&gt;None of this is a knock on the pure-measurement tools — accurate geometry is a real, hard problem and it's necessary input. It's just not sufficient. The estimate is the part that turns a rooftop scan into a number someone can actually act on, and that's where I think most of the "AI roofing" category is currently underbuilt.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Stop taking screenshots for your demo videos. Paste your GitHub repo instead. 🤯🚀</title>
      <dc:creator>duncan muriithi</dc:creator>
      <pubDate>Sat, 01 Aug 2026 19:58:07 +0000</pubDate>
      <link>https://dev.to/duncan_muriithi_ac6ae76f9/stop-taking-screenshots-for-your-demo-videos-paste-your-github-repo-instead-5ib</link>
      <guid>https://dev.to/duncan_muriithi_ac6ae76f9/stop-taking-screenshots-for-your-demo-videos-paste-your-github-repo-instead-5ib</guid>
      <description>&lt;p&gt;Hey DEV community! 👋 I'm Duncan.&lt;/p&gt;

&lt;p&gt;If you are anything like me, you love building apps but absolutely dread making the demo videos for them. The endless cycle of screen recording, taking static screenshots, importing them into a heavy video editor, and fighting with keyframes is exhausting.&lt;/p&gt;

&lt;p&gt;I wanted to see if we could automate the absolute worst parts of this workflow for developers. I think we finally did it.&lt;/p&gt;

&lt;p&gt;Today, I'm super excited to share the first phase of Brand Narratives AI.&lt;/p&gt;

&lt;p&gt;🛠️ How it works: No screenshots required&lt;br&gt;
Instead of relying on clunky screen captures, we built an engine that reads your code directly.&lt;/p&gt;

&lt;p&gt;You just paste your GitHub link, and our engine parses it to automatically rebuild your app's exact design natively inside our video editor. Because we are reconstructing the actual UI elements rather than just snapping a flat PNG, every piece of your interface remains fully editable in the canvas.&lt;/p&gt;

&lt;p&gt;🔮 What’s Next: Auto-Animation&lt;br&gt;
This is where it gets really fun. Because our engine is actually parsing your code rather than just looking at pixels, it understands your app's semantic structure.&lt;/p&gt;

&lt;p&gt;In our next update, it will use that context to act as your personal automated motion designer. Since it knows exactly what it's looking at, it will know that a list element should automatically slide in item-by-item, or that a popup modal should bounce into view. It will animate your app based purely on how you built it.&lt;/p&gt;

&lt;p&gt;🧪 Try it out!&lt;br&gt;
I would love for you to try out the first phase today. Drop a GitHub link into the engine and see how it handles your UI.&lt;/p&gt;

&lt;p&gt;Link: [&lt;a href="http://brandnarrativesai.com" rel="noopener noreferrer"&gt;http://brandnarrativesai.com&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Let me know what you think in the comments, and definitely let me know if you run into any weird edge cases. Happy to answer any questions about how the engine works under the hood!&lt;/p&gt;

&lt;p&gt;Happy building! 💻✨&lt;/p&gt;

</description>
      <category>ai</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
