<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>EdsDev INC — Blog</title><description>Custom AI agents that run your support and lead-gen 24/7 — built on your business, so they know your field, remember, and learn. We also finish and launch software products. 100+ shipped since 2018.</description><link>https://edsdev.ca/</link><item><title>An AI lead generation agent that books meetings while you sleep</title><link>https://edsdev.ca/blog/2026-06-03-an-ai-lead-generation-agent-that-books-meetings-while-you-sleep/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-06-03-an-ai-lead-generation-agent-that-books-meetings-while-you-sleep/</guid><description>How we build AI lead generation agents that actually book meetings: the workflow, the prompts, the guardrails, and the bits that quietly break at 3am.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Building an AI chatbot for small business that actually knows your products</title><link>https://edsdev.ca/blog/2026-06-02-building-an-ai-chatbot-for-small-business-that-actually-knows-your-pro/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-06-02-building-an-ai-chatbot-for-small-business-that-actually-knows-your-pro/</guid><description>The RAG stack we ship for small business chatbots: ingestion, embeddings, retrieval, guardrails, and the boring parts that decide whether it answers correctly or hallucinates a refund policy.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>How to vet MVP development companies without getting burned: 12 questions</title><link>https://edsdev.ca/blog/2026-06-01-how-to-vet-mvp-development-companies-without-getting-burned-12-questio/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-06-01-how-to-vet-mvp-development-companies-without-getting-burned-12-questio/</guid><description>Twelve questions I use to separate real MVP development companies from agencies that will burn six months of runway and ship a demo. Here&apos;s what to ask.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>AI agent for customer support vs. the chatbot you already tried: what&apos;s actually different</title><link>https://edsdev.ca/blog/2026-05-31-ai-agent-for-customer-support-vs-the-chatbot-you-already-tried-what-s-/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-31-ai-agent-for-customer-support-vs-the-chatbot-you-already-tried-what-s-/</guid><description>Your old support bot routed people in circles. An AI agent reads tickets, calls your APIs, and closes loops. Here&apos;s the real gap, with examples.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate></item><item><title>MVP software development when the prototype already exists</title><link>https://edsdev.ca/blog/2026-05-30-mvp-software-development-when-the-prototype-already-exists/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-30-mvp-software-development-when-the-prototype-already-exists/</guid><description>A field guide to finishing what Cursor, v0, and Claude Code started. How to take a half-working vibe-coded prototype and ship it as a real MVP without rewriting from scratch.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate></item><item><title>What to actually scope in an MVP development service contract: a buyer&apos;s checklist</title><link>https://edsdev.ca/blog/2026-05-29-what-to-actually-scope-in-an-mvp-development-service-contract-a-buyer-/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-29-what-to-actually-scope-in-an-mvp-development-service-contract-a-buyer-/</guid><description>Most MVP contracts hide the parts that matter. Here is what to demand in writing before you sign with any MVP development service, with the line items I have watched startups get burned on.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate></item><item><title>AI chatbots for customer service: what actually works after 90 days in production</title><link>https://edsdev.ca/blog/2026-05-28-ai-chatbots-for-customer-service-what-actually-works-after-90-days-in-/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-28-ai-chatbots-for-customer-service-what-actually-works-after-90-days-in-/</guid><description>Ninety days of running customer service bots in production. What survived, what got ripped out, and the design choices that decide whether your bot helps or annoys.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate></item><item><title>Cloudflare Turnstile vs reCAPTCHA: why we migrated and what it cost us</title><link>https://edsdev.ca/blog/2026-05-26-cloudflare-turnstile-vs-recaptcha-why-we-migrated-and-what-it-cost-us/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-26-cloudflare-turnstile-vs-recaptcha-why-we-migrated-and-what-it-cost-us/</guid><description>We pulled reCAPTCHA out of three production apps and replaced it with Cloudflare Turnstile. Here&apos;s what broke, what it saved, and where Turnstile still falls short.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Observability for a side project: 80% of the value for $0/month</title><link>https://edsdev.ca/blog/2026-05-25-observability-for-a-side-project-80-of-the-value-for-0-month/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-25-observability-for-a-side-project-80-of-the-value-for-0-month/</guid><description>How I wire up logs, errors, uptime and product analytics on side projects without paying a cent. Free tiers, sharp edges, and what I actually skip.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>How we batch-generate 50,000 cover images a month for Interior AI Designs</title><link>https://edsdev.ca/blog/2026-05-24-how-we-batch-generate-50-000-cover-images-a-month-for-interior-ai-desi/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-24-how-we-batch-generate-50-000-cover-images-a-month-for-interior-ai-desi/</guid><description>The actual pipeline behind 50k monthly room renders at Interior AI Designs: queues, FAL, idempotency keys, and the boring failure modes nobody writes about</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate></item><item><title>Why we still pick Flutter + Firebase + AdMob for new mobile apps in 2026</title><link>https://edsdev.ca/blog/2026-05-23-why-we-still-pick-flutter-firebase-admob-for-new-mobile-apps-in-2026/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-23-why-we-still-pick-flutter-firebase-admob-for-new-mobile-apps-in-2026/</guid><description>After shipping a pile of apps across iOS and Android, we keep landing on the same boring stack. Here&apos;s why Flutter, Firebase and AdMob still win for us in 2026.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>Shipping an MCP server so agents can email us</title><link>https://edsdev.ca/blog/2026-05-22-shipping-an-mcp-server-so-agents-can-email-us/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-22-shipping-an-mcp-server-so-agents-can-email-us/</guid><description>We built a tiny MCP server that lets Claude and Cursor send us email through Resend. Here&apos;s the actual code, the auth headaches, and what broke in production.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Surviving App Store review: the 7 rejection causes we keep hitting</title><link>https://edsdev.ca/blog/2026-05-21-surviving-app-store-review-the-7-rejection-causes-we-keep-hitting/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-21-surviving-app-store-review-the-7-rejection-causes-we-keep-hitting/</guid><description>Seven specific reasons Apple keeps rejecting our apps, what each rejection actually looks like in Resolution Center, and what we changed in the build to get through.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item><item><title>Pair-build mode: how we work with vibe coders without taking over their project</title><link>https://edsdev.ca/blog/2026-05-20-pair-build-mode-how-we-work-with-vibe-coders-without-taking-over-their/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-20-pair-build-mode-how-we-work-with-vibe-coders-without-taking-over-their/</guid><description>Most agencies eat the codebase. We don&apos;t. Here&apos;s how EdsDev runs pair-build engagements with vibe coders shipping in Cursor and Claude Code — without hijacking the keyboard or the vision.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Five product decisions that doubled Photo AI Studio retention</title><link>https://edsdev.ca/blog/2026-05-20-five-product-decisions-that-doubled-photo-ai-studio-retention/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-20-five-product-decisions-that-doubled-photo-ai-studio-retention/</guid><description>How we doubled D7 retention on Photo AI Studio by killing the gallery, charging differently, and removing &apos;AI&apos; from half the UI. Specific changes, real numbers.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Anatomy of the Claude prompt that writes this blog</title><link>https://edsdev.ca/blog/2026-05-20-anatomy-of-the-claude-prompt-that-writes-this-blog/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-20-anatomy-of-the-claude-prompt-that-writes-this-blog/</guid><description>The actual system prompt we use to generate EdsDev posts, broken down section by section. Voice rules, forbidden words, JSON shape, and the parts that still don&apos;t work.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>The vibe coder pre-launch checklist: what actually breaks in production</title><link>https://edsdev.ca/blog/2026-05-14-the-vibe-coder-pre-launch-checklist-what-actually-breaks-in-production/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-14-the-vibe-coder-pre-launch-checklist-what-actually-breaks-in-production/</guid><description>You shipped it in a weekend with Cursor. Now it has users. Here&apos;s the unglamorous list of things that break when AI-generated code meets real traffic, real money, and real people.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>My tokens at your disposal</title><link>https://edsdev.ca/blog/2026-05-12-hello-world/</link><guid isPermaLink="true">https://edsdev.ca/blog/2026-05-12-hello-world/</guid><description>Why this blog exists and an honest disclosure: most of these posts are written by Claude with my supervision.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item></channel></rss>