Blog
Notes from the EdsDev workbench.
An AI lead generation agent that books meetings while you sleep
How we build AI lead gen agents that actually book meetings overnight: the workflow, the prompts we use, the guardrails that stop it from embarrassing you.
Building an AI chatbot for small business that actually knows your products
The RAG stack we ship for small businesses that need a chatbot to answer questions about their actual products, not hallucinate a generic FAQ. Real code, real costs.
How to vet MVP development companies without getting burned: 12 questions that filter the field
Twelve questions I ask before I let anyone touch my MVP. Skip these and you'll pay $80k for a demo that dies the week after launch.
AI agent for customer support vs. the chatbot you already tried: what's actually different
You bought a chatbot. It answered FAQs and pissed off your customers. Here's what an actual AI agent does differently, and where it still falls on its face.
MVP software development when the prototype already exists: finishing what Cursor started
A field guide for taking a half-built Cursor or v0 prototype across the line. What to keep, what to rip out, and how to ship without rewriting the whole thing.
What to actually scope in an MVP development service contract: a buyer's checklist
Most MVP contracts are vague where they should be sharp. Here's the checklist I use when reviewing one, with the clauses that decide whether you ship in 8 weeks or sue in 8 months.
AI chatbots for customer service: what actually works after 90 days in production
Ninety days in, the polished demo bot looks nothing like what's running in production. Here's what we kept, what we ripped out, and what nobody warned us about.
Observability for a side project: 80% of the value for $0/month
How I instrument side projects without paying Datadog $70/month. Free tiers, dumb tricks, and the three signals that actually catch fires before users tweet at me.
How we batch-generate 50,000 cover images per month for Interior AI Designs
The actual queue, the actual costs, the actual failure modes behind running 50k FLUX renders a month for Interior AI Designs without lighting our bank account on fire.
Why we still pick Flutter + Firebase + AdMob for new mobile apps in 2026
Everyone keeps asking why we haven't moved to React Native or native SwiftUI. Here's the honest stack math after shipping a dozen apps on Flutter, Firebase, and AdMob.
Shipping an MCP server so agents can email us
We built a tiny MCP server that lets Claude and other agents email the EdsDev team directly. Here is the code, the auth model, and what broke along the way.
Surviving App Store review: the 7 rejection causes we keep seeing
Seven rejection patterns we hit shipping iOS apps in 2024, the exact guideline numbers, and what we actually changed to get approved. Including the one that took five resubmits.
Anatomy of the Claude prompt that writes this blog
A line-by-line look at the system prompt we use to make Claude write posts that don't sound like Claude. What worked, what didn't, and why the banned-word list keeps growing.
Pair-build mode: how we work with vibe coders without taking over
Half-built side projects don't need a rescue team. They need a senior engineer on the other end of a Slack DM. Here's how we actually run pair-build engagements.
Five product decisions that doubled Photo AI Studio retention
What actually moved the needle on Photo AI Studio's D7 retention. Pricing, onboarding, model choice, refund flow, and a push notification we almost shipped wrong.
The vibe coder pre-launch checklist: what actually breaks in production
A field-tested list of the things that quietly torch your launch day, from missing rate limits to leaked API keys to that one Stripe webhook you forgot to verify. Read before you ship.
An AI lead generation agent that books meetings while you sleep
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.
Building an AI chatbot for small business that actually knows your products
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.
How to vet MVP development companies without getting burned: 12 questions
Twelve questions I use to separate real MVP development companies from agencies that will burn six months of runway and ship a demo. Here's what to ask.
AI agent for customer support vs. the chatbot you already tried: what's actually different
Your old support bot routed people in circles. An AI agent reads tickets, calls your APIs, and closes loops. Here's the real gap, with examples.
MVP software development when the prototype already exists
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.
What to actually scope in an MVP development service contract: a buyer's checklist
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.
AI chatbots for customer service: what actually works after 90 days in production
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.
Cloudflare Turnstile vs reCAPTCHA: why we migrated and what it cost us
We pulled reCAPTCHA out of three production apps and replaced it with Cloudflare Turnstile. Here's what broke, what it saved, and where Turnstile still falls short.
Observability for a side project: 80% of the value for $0/month
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.
How we batch-generate 50,000 cover images a month for Interior AI Designs
The actual pipeline behind 50k monthly room renders at Interior AI Designs: queues, FAL, idempotency keys, and the boring failure modes nobody writes about
Why we still pick Flutter + Firebase + AdMob for new mobile apps in 2026
After shipping a pile of apps across iOS and Android, we keep landing on the same boring stack. Here's why Flutter, Firebase and AdMob still win for us in 2026.
Shipping an MCP server so agents can email us
We built a tiny MCP server that lets Claude and Cursor send us email through Resend. Here's the actual code, the auth headaches, and what broke in production.
Surviving App Store review: the 7 rejection causes we keep hitting
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.
Pair-build mode: how we work with vibe coders without taking over their project
Most agencies eat the codebase. We don't. Here's how EdsDev runs pair-build engagements with vibe coders shipping in Cursor and Claude Code — without hijacking the keyboard or the vision.
Five product decisions that doubled Photo AI Studio retention
How we doubled D7 retention on Photo AI Studio by killing the gallery, charging differently, and removing 'AI' from half the UI. Specific changes, real numbers.
Anatomy of the Claude prompt that writes this blog
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't work.
The vibe coder pre-launch checklist: what actually breaks in production
You shipped it in a weekend with Cursor. Now it has users. Here's the unglamorous list of things that break when AI-generated code meets real traffic, real money, and real people.
My tokens at your disposal
Why this blog exists and an honest disclosure: most of these posts are written by Claude with my supervision.