/ Blog
Home Blog Buddy Contact

Building Good Life Insurance Group on Cloudflare With Buddy

77 pages, $0 hosting, a real brand — the full case study of shipping goodlifeinsurancegroup.com end-to-end on Cloudflare with Buddy by ahmeego, in a weekend.

Built with Buddy

The short version

An independent insurance broker in Mesa, Arizona needed a real production website. He had a brand, a pitch, and three audiences he wanted to serve well: veterans, truck drivers, and working families. He also had a unique lead-gen idea — a free Will Kit, mailed in 48 hours, with an optional 15-minute review. What he didn't have was a site that did any of that justice.

Over a weekend, we built and shipped goodlifeinsurancegroup.com end-to-end on Cloudflare with Buddy by ahmeego. Not a Wix template, not a one-page Linktree — a 77-page production brokerage site with a real lead pipeline, real E-E-A-T signals for the Google March 2026 core update era, real schema, real consent management, and real Spanish localization. The whole thing runs on Cloudflare's free tier. Nothing else.

This is the case study: what we built, how it stacks together, and what Buddy unlocked along the way.

Good Life Insurance Group homepage hero with the headline Life Insurance Built Around Your Family, three trust badges, a Free Will Kit form panel, and a warm golden-hour family photograph as the background
Live homepage hero at goodlifeinsurancegroup.com — navy gradient over real photography, side-form Will Kit lead engine, brand-tinted trust badges, and a primary CTA the user can act on without scrolling.

The brief

Dalis Smith is the founder and licensed agent behind Good Life Insurance Group. He's a real broker with active licenses in Arizona plus five additional states, appointed with multiple A.M. Best A-rated carriers, working from Mesa. The pitch had three sharp edges:

The lead engine was the genuinely original part: a free Will Kit. Plain-English living will, healthcare and financial POA, and a one-page family financial roadmap, mailed at no cost in 48 hours, with an optional 15-minute review at the end. No purchase pressure. The kit is the giveaway; insurance is the conversation that might follow.

Why this matters for the build: the Will Kit is the gravitational center of every page. It's the homepage hero CTA, the audience-hub primary action, the thank-you path, the calculator outcome, and the closing block on every learn article. A site like this lives or dies by whether the Will Kit form is the one obvious thing to do on every screen.

Stack decision

Dalis was already on Cloudflare for DNS and wanted everything in one console. That made the stack call easy:

LayerChoiceWhy
Static frameworkAstroShips zero JS by default, MDX for /learn articles, native Cloudflare Pages adapter. Fits the perf budget the spec asked for.
HostingCloudflare PagesFree tier covers the entire site. Two-click custom domain binding once we'd already moved DNS to Cloudflare.
Forms / APIsPages FunctionsWorkers under the hood. Three endpoints — /api/will-kit, /api/quote, /api/contact — each with honeypot, IP rate limiting, and field validation.
Email deliveryMailChannelsFree from Workers, no API key required. Two TXT records for SPF + domain lockdown and lead emails route to Dalis.
Rate limitingCloudflare KV (FORM_RL)One namespace, one binding, IP-keyed counter. Stops form-bot abuse without adding a third-party dependency.
StylingPlain CSS + design tokensStayed under the 50KB CSS budget. No utility-class framework tax.
FontsSelf-hosted Inter via @fontsourceRemoved external Google Fonts request. Better LCP, no third-party DNS round-trip, no font-blocking on slow connections.

Total third-party services: zero. Total monthly hosting cost: zero. Total build dependencies: Astro plus a few @fontsource subresources. The whole stack lives in one git repo and one Cloudflare account.

Migrating the domain

The domain was registered at GoDaddy. The first job was getting it onto Cloudflare nameservers without breaking anything. The dance is well-trodden but high-stakes — one wrong record and email goes dark for days.

  1. Add the zone to Cloudflare. Cloudflare scans GoDaddy's existing DNS and imports what it finds. Two nameservers (something like {name}.ns.cloudflare.com) get assigned.
  2. Review the imported records. Cloudflare missed the MX for email and warned us about it at the top of the page. Pull MX, SPF, DKIM, and any autodiscover records from GoDaddy before flipping nameservers, or email blackholes the moment propagation completes.
  3. Toggle a few records to "DNS only" (grey cloud) — _domainconnect, third-party endpoints like pay → paylinks.commerce.godaddy.com, anything that doesn't survive being proxied. The web records (apex + www) stay orange.
  4. Paste Cloudflare's two nameservers into GoDaddy's "use my own nameservers" field. Save. GoDaddy throws a "this may affect your services" warning — confirm.
  5. Wait. Propagation is usually 5-15 minutes; Cloudflare emails the moment the zone is active.
Don't transfer the registration. All we're doing is changing nameservers. The domain stays registered at GoDaddy. We can move registration to Cloudflare Registrar later for cheaper renewal, but that's a separate decision and not blocking anything.

Building 35 pages, then 77

The first deploy went out at 35 pages: homepage, Will Kit, three audience hubs (veterans/truckers/families), three product pages, an Arizona local SEO page, About, Reviews, Licenses, FAQ, Calculator, Quote, Contact, /learn hub with two seed articles, three legal pages, eleven audience sub-pages. Astro builds it in under a second, and the dev server fires up in ~700ms.

The second wave brought us to 77 pages and pushed the site past the threshold where it can hold its own against Navy Mutual / Ethos / Ladder for E-E-A-T — without the venture-funded headcount.

Good Life Insurance Group About page hero with the headline Independent. Local. Built around the people often underserved, a workspace photograph showing three people collaborating on laptops, and breadcrumb navigation
The About page is the load-bearing E-E-A-T page: founder photo, multi-paragraph bio, four explicit credentials (license, A-rated carriers only, NAIC-registered, independent brokerage), Person + Organization + AboutPage + BreadcrumbList schema.

The expansion looked like this:

Good Life Insurance Group Veterans hub page with the headline Life Insurance for Veterans Who've Already Given Enough, breadcrumb navigation, two CTAs (Get Your Free Will Kit and Talk to an Agent), and a horizontal trust strip showing Licensed in 6+ states, A.M. Best A+ rated carriers, Independent broker, and 100% free
The Veterans hub. Each audience hub follows the same pattern — PageHero with breadcrumb, three audience-specific principles, a comparison table (VGLI vs private term, sourced from the public VA rate tables), audience-deep-dive cards, testimonials, FAQ, and the Will Kit form as the closing CTA.

The lead pipeline

Three forms feed the entire business: Will Kit, Quote, Contact. They share the same Pages Function shape, just with different validation rules and email routing.

// /functions/api/will-kit.js (simplified) export async function onRequestPost({ request, env }) { const body = await request.json(); if (body.honeypot) return new Response('OK', { status: 200 }); // bot const ip = request.headers.get('cf-connecting-ip') ?? 'unknown'; const recent = await env.FORM_RL.get(\`will-kit:\${ip}\`); if (recent && Number(recent) >= 3) { return Response.json({ error: 'Too many submissions' }, { status: 429 }); } await env.FORM_RL.put(\`will-kit:\${ip}\`, String((Number(recent)||0)+1), { expirationTtl: 3600 }); await fetch('https://api.mailchannels.net/tx/v1/send', { ... }); return Response.json({ success: true }); }

That's the whole lead pipeline. No SaaS form vendor. No third-party email service. KV does the rate limiting (3/hour per IP). MailChannels handles delivery, and the two TXT records on the zone (v=spf1 include:relay.mailchannels.net ~all at apex, and v=mc1 cfid=goodlifeinsurancegroup.pages.dev at _mailchannels) authorize MailChannels to send from the domain. Total cost: $0/month.

Good Life Insurance Group Will Kit page with a navy hero, headline Your Free Will Kit. No Cost, No Catch, four bullet points listing what's inside, and a white form panel on the right with First name, Last name, Email, Phone, State (Arizona selected), TCPA consent checkbox, and a Get My Free Will Kit submit button
The dedicated Will Kit page. Same form lives on the homepage, the calculator output, and the closing CTA on every audience hub. The form is the load-bearing element of the entire site.

The calculator

One page that always punches above its weight on insurance sites is a coverage calculator. We built one using the DIME method (Debt + Income + Mortgage + Education) — the framework underwriters and financial planners actually use, not the "10x your income" rule of thumb.

Good Life Insurance Group Coverage Calculator page with the headline How much life insurance does your family actually need, three trust pills (No email required, Industry-standard method, Honest, no upsell), a Step 1 input panel for annual income, mortgage, debts, dependents, and a Step 2 output showing recommended coverage of $1,900,000 with a range of $1.6M to $2.175M and a debt/income/mortgage breakdown
The calculator runs entirely client-side — no email gate to see the number. Inputs default to a believable household, and the output panel shows the four DIME inputs broken out so the math is legible. There's a 'No email required' pill in the hero specifically so visitors trust the tool before they trust the form.

Real E-E-A-T

The Google March 2026 core update was rough on programmatic content (we covered our own response in article 17). For an insurance brokerage, "Trust" in E-E-A-T is the entire ball game — YMYL content gets the strictest scrutiny. We baked the signals into the structure, not bolted them on after:

SignalWhere it lives
ExperienceFounder bio with multi-paragraph career narrative; founder pull-quote; principle "Comfort first, advice second"; testimonials reference real client scenarios.
ExpertiseLicense credentials block (4 explicit items), /licenses table linked from About + footer, license verification link to Arizona DIFI, NAIC National Producer Number publicly verifiable.
AuthoritativenessCarrier strip ("appointed with..."), founder photo, /reviews with verbatim testimonials, full Person + Organization + InsuranceAgency JSON-LD, real-state license rollup.
TrustHTTPS site-wide, Privacy / Terms / TCPA pages explicitly linked from every footer + form, transparent disclaimers in Layout footer, Google Consent Mode v2 with default-deny analytics + ads.

Polish loop

The first deploy looked fine but not great. Buddy and I went round-by-round with Dalis on the things that felt "off":

That's eight rounds of feedback in roughly four hours. Each one took 5-15 minutes to diagnose and ship via Pages' "git push → CI build → deploy in ~30 seconds" loop. The Cloudflare deploy speed is what made the iteration possible.

Numbers in production

Final state: 77 pages live on the apex domain, all returning 200. Astro builds in under 1 second. Zero JS by default. Inter self-hosted (no Google Fonts CDN request). GTM container with Google Consent Mode v2 default-deny on every page. Rich JSON-LD (ContactPoint, FAQPage, GeoCoordinates, OpeningHoursSpecification, Person, PostalAddress, Question, plus the InsuranceAgency / LocalBusiness graph) parses cleanly. All four API endpoints respond correctly. Hosting cost: $0/month.

What's still pending (intentionally)

A handful of items are deliberately deferred until Dalis brings real-world inputs back. They're flagged in the README, not assumed in:

What Buddy + ahmeego unlocked

Three things would not have been possible at this scope and quality on this timeline without the agent assist:

  1. Architecture decisions made out loud, then executed in minutes. "Astro vs Next on Cloudflare?" gets a real practitioner answer, then the scaffolding actually builds. No paralysis, no half-finished tutorials.
  2. Real schema baked in from page one. Person, Organization, InsuranceAgency, LocalBusiness, FAQPage, BreadcrumbList, Article, AboutPage, Place — not retrofitted at the end of the project, present in the first deploy.
  3. The audit-and-iterate loop ran on its own. Lighthouse scores, link checks, schema validation, the consent banner config — Buddy ran the checks and surfaced the diffs, so the human attention stayed on the things that actually mattered (Dalis's pronouns, the carrier list, mobile alignment, copy tone).

Dalis got a real production site, a real lead pipeline, and a real brand on a $0/month Cloudflare stack — in the time it would have taken him to schedule a discovery call with a traditional agency.

If you want one of these

If you've got a niche brokerage, a local services brand, an agency, a portfolio of one-pagers you keep meaning to consolidate — this is exactly the work Buddy by ahmeego is built for. Bring the pitch, the audiences, the lead engine; we'll handle the stack, the schema, the deploy pipeline, and the polish loop.

Open Buddy → Or reach out if you want me to scope a build like this for your own brand.

Open Buddy →

What's next

Article 20 in this series is the companion piece — a fully-gated insurance CRM mockup deployed on Cloudflare Workers behind a PIN, also built end-to-end in an afternoon. Same playbook, different output shape.

Subscribe if you want each one in your inbox. And if you've got questions about your own version of this, my inbox is open.

— John

Sources & references: Direct observation from building goodlifeinsurancegroup.com with Buddy on May 16-18, 2026. Cloudflare Pages and Pages Functions documentation. MailChannels for transactional email from Workers. The Astro framework and the @fontsource Inter package for self-hosted typography. Schema.org type definitions for InsuranceAgency, LocalBusiness, FAQPage, BreadcrumbList, and Person. All screenshots are live captures of the production site.