Skip to content

Commit 5e8f981

Browse files
mostlyerrorclaude
andauthored
Add Mayday case study with business-focused content (#13)
Created comprehensive case study showcasing the Mayday lead generation system with emphasis on practical results and engineering decisions. - Add /case-studies landing page listing all case studies - Add /case-studies/mayday detailed case study page - Include dashboard screenshot showing system in action - Add "Case Studies" to main navigation - Update smoke tests to cover new routes - Focus content on business value and design decisions rather than technical implementation details Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 7e57328 commit 5e8f981

5 files changed

Lines changed: 300 additions & 1 deletion

File tree

app/case-studies/mayday/page.tsx

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
import type { Metadata } from "next";
2+
import Image from "next/image";
3+
import HeroSimple from "@/components/HeroSimple";
4+
import CTA from "@/components/CTA";
5+
6+
export const metadata: Metadata = {
7+
title: "Case Study: Mayday | Good Robot Co.",
8+
description: "How we built an intelligent lead generation system that automatically discovers and qualifies web development opportunities.",
9+
};
10+
11+
export default function MaydayCaseStudy() {
12+
return (
13+
<>
14+
<HeroSimple
15+
title="Mayday: Intelligent Lead Generation"
16+
subtitle="Automating the hunt for web development clients—from 15 hours/week of manual work to zero"
17+
/>
18+
19+
<main className="max-w-4xl mx-auto px-6 py-16 space-y-16">
20+
{/* Overview */}
21+
<section>
22+
<h2 className="text-3xl font-bold text-charcoal mb-6">The Challenge</h2>
23+
<p className="text-lg text-charcoal/80 leading-relaxed mb-4">
24+
Finding web development clients the traditional way: spending <strong>10-15 hours per week</strong> manually
25+
scrolling through Google Maps, checking websites one by one, and keeping spreadsheets of
26+
broken sites. Pure grunt work that could be automated.
27+
</p>
28+
<p className="text-lg text-charcoal/80 leading-relaxed">
29+
Worse, the manual process was inconsistent. Good leads were missed, bad ones
30+
were pursued, and there was no way to catch businesses whose websites went from working to
31+
broken overnight.
32+
</p>
33+
</section>
34+
35+
{/* What We Built */}
36+
<section>
37+
<h2 className="text-3xl font-bold text-charcoal mb-6">What We Built</h2>
38+
<p className="text-lg text-charcoal/80 leading-relaxed mb-6">
39+
<strong>Mayday</strong> is an automated lead generation system that runs in the background,
40+
continuously scanning local businesses and flagging opportunities the moment they appear.
41+
Instead of spending hours prospecting, the agency now gets a daily digest of qualified
42+
leads ready for outreach.
43+
</p>
44+
<div className="bg-gradient-to-br from-sage/20 to-sky/15 p-8 rounded-lg">
45+
<h3 className="text-2xl font-bold text-charcoal mb-4">What It Does</h3>
46+
<div className="grid md:grid-cols-2 gap-6 text-charcoal/80">
47+
<div>
48+
<div className="text-3xl font-bold text-coral mb-1">~15 hours</div>
49+
<p>Of manual work eliminated weekly</p>
50+
</div>
51+
<div>
52+
<div className="text-3xl font-bold text-coral mb-1">24/7</div>
53+
<p>Continuous monitoring and lead discovery</p>
54+
</div>
55+
<div>
56+
<div className="text-3xl font-bold text-coral mb-1">10-15k</div>
57+
<p>Businesses scanned monthly within budget</p>
58+
</div>
59+
<div>
60+
<div className="text-3xl font-bold text-coral mb-1">3 types</div>
61+
<p>Intelligent lead classification and prioritization</p>
62+
</div>
63+
</div>
64+
</div>
65+
</section>
66+
67+
{/* Dashboard Preview */}
68+
<section>
69+
<div className="relative rounded-lg overflow-hidden border border-charcoal/10 shadow-xl">
70+
<Image
71+
src="/case-studies/mayday/dashboard.png"
72+
alt="Mayday dashboard showing qualified leads organized by type"
73+
width={2910}
74+
height={3148}
75+
className="w-full h-auto"
76+
priority
77+
/>
78+
</div>
79+
<p className="text-sm text-charcoal/60 text-center mt-3">
80+
The Mayday dashboard showing real-time lead discovery and classification
81+
</p>
82+
</section>
83+
84+
{/* How It Works */}
85+
<section>
86+
<h2 className="text-3xl font-bold text-charcoal mb-6">How It Works</h2>
87+
<p className="text-lg text-charcoal/80 leading-relaxed mb-6">
88+
The system automatically categorizes opportunities into three high-value lead types:
89+
</p>
90+
91+
<div className="grid md:grid-cols-3 gap-6 mb-8">
92+
<div className="bg-white p-6 rounded-lg border border-charcoal/10 hover:border-coral/30 transition-colors">
93+
<h3 className="text-xl font-bold text-coral mb-2">Fix Leads</h3>
94+
<p className="text-charcoal/70 mb-3">
95+
Businesses with broken websites—SSL errors, expired hosting, parked domains.
96+
<strong className="block mt-2 text-charcoal">The pitch: &quot;Your site is down. I can fix it today.&quot;</strong>
97+
</p>
98+
<p className="text-sm text-charcoal/60 mt-3">
99+
High urgency = high close rate. These businesses are losing revenue every hour their site is broken.
100+
</p>
101+
</div>
102+
103+
<div className="bg-white p-6 rounded-lg border border-charcoal/10 hover:border-sage/30 transition-colors">
104+
<h3 className="text-xl font-bold text-sage mb-2">Build Leads</h3>
105+
<p className="text-charcoal/70 mb-3">
106+
Established businesses with no website at all.
107+
<strong className="block mt-2 text-charcoal">The pitch: &quot;Your competitors are online. You should be too.&quot;</strong>
108+
</p>
109+
<p className="text-sm text-charcoal/60 mt-3">
110+
Clear value proposition. These are leaving money on the table every day without a web presence.
111+
</p>
112+
</div>
113+
114+
<div className="bg-white p-6 rounded-lg border border-charcoal/10 hover:border-sky/30 transition-colors">
115+
<h3 className="text-xl font-bold text-sky mb-2">Social Only</h3>
116+
<p className="text-charcoal/70 mb-3">
117+
Businesses using only Facebook/Instagram as their website.
118+
<strong className="block mt-2 text-charcoal">The pitch: &quot;A real site builds trust and drives more business.&quot;</strong>
119+
</p>
120+
<p className="text-sm text-charcoal/60 mt-3">
121+
Easier sell than cold outreach. They already understand digital presence matters.
122+
</p>
123+
</div>
124+
</div>
125+
126+
<p className="text-lg text-charcoal/80 leading-relaxed">
127+
Every morning, the system delivers a CSV export with business details, contact info, and
128+
exactly what&apos;s wrong with their current setup. No guesswork, just actionable leads.
129+
</p>
130+
</section>
131+
132+
{/* The Engineering */}
133+
<section>
134+
<h2 className="text-3xl font-bold text-charcoal mb-6">The Engineering</h2>
135+
<p className="text-lg text-charcoal/80 leading-relaxed mb-6">
136+
Three key design decisions make this system <strong>accurate, scalable, and cost-effective</strong>:
137+
</p>
138+
139+
<div className="bg-cream/50 border-l-4 border-coral p-6 rounded-r-lg space-y-4">
140+
<div>
141+
<h3 className="font-bold text-charcoal mb-2">Smart Retry Logic</h3>
142+
<p className="text-charcoal/80">
143+
Progressive timeout strategy distinguishes between slow sites and broken sites. The system
144+
retries with increasing timeouts before marking anything as down—eliminates false positives
145+
without missing genuinely broken sites.
146+
</p>
147+
</div>
148+
<div>
149+
<h3 className="font-bold text-charcoal mb-2">Adaptive Scheduling</h3>
150+
<p className="text-charcoal/80">
151+
Intelligent scan frequency based on site status. Working sites get checked weekly, broken sites
152+
get adaptive monitoring, and static situations get monthly scans. Scans 10-15k businesses monthly
153+
within the $200 API free tier.
154+
</p>
155+
</div>
156+
<div>
157+
<h3 className="font-bold text-charcoal mb-2">Platform-Specific Detection</h3>
158+
<p className="text-charcoal/80">
159+
Pattern recognition for 15+ error types across Squarespace, GoDaddy, Wix, and other platforms.
160+
The system knows exactly what&apos;s broken and provides the specific context needed for outreach.
161+
</p>
162+
</div>
163+
</div>
164+
</section>
165+
166+
{/* The Bottom Line */}
167+
<section>
168+
<h2 className="text-3xl font-bold text-charcoal mb-6">The Result</h2>
169+
<p className="text-lg text-charcoal/80 leading-relaxed mb-6">
170+
Mayday eliminates <strong>10-15 hours per week</strong> of manual prospecting work. The system
171+
runs continuously in the background, scanning businesses and flagging opportunities the moment
172+
they appear.
173+
</p>
174+
<p className="text-lg text-charcoal/80 leading-relaxed mb-6">
175+
Daily digest of pre-qualified leads with business details, contact info, and the exact issue
176+
to reference in your outreach. Broken sites, missing websites, businesses relying only on
177+
social media—all categorized and ready for immediate follow-up.
178+
</p>
179+
<div className="bg-gradient-to-br from-sage/20 to-sky/15 p-6 rounded-lg">
180+
<p className="text-lg text-charcoal/90 font-semibold mb-2">
181+
What This Demonstrates
182+
</p>
183+
<p className="text-charcoal/80">
184+
Building production automation requires solving real problems: false positive prevention,
185+
cost-effective scaling, and accurate detection across multiple platforms. This project shows
186+
our capability to design systems that work reliably in the wild, not just in demos.
187+
</p>
188+
</div>
189+
</section>
190+
</main>
191+
192+
{/* CTA - Full width section outside constrained container */}
193+
<CTA
194+
headline="Need a custom solution like this?"
195+
subheadline="We build intelligent automation systems that solve real business problems. Let's talk about your project."
196+
/>
197+
</>
198+
);
199+
}

app/case-studies/page.tsx

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import type { Metadata } from "next";
2+
import Link from "next/link";
3+
import HeroSimple from "@/components/HeroSimple";
4+
import CTA from "@/components/CTA";
5+
6+
export const metadata: Metadata = {
7+
title: "Case Studies | Good Robot Co.",
8+
description: "Real projects, real results. See how we solve complex technical challenges and deliver business value.",
9+
};
10+
11+
const caseStudies = [
12+
{
13+
slug: "mayday",
14+
title: "Mayday: Intelligent Lead Generation",
15+
tagline: "From 15 hours/week of manual work to zero",
16+
description:
17+
"Built an automated system that runs 24/7, scanning local businesses and delivering daily digests of pre-qualified opportunities—broken sites, missing sites, and businesses ready for an upgrade. Eliminates the grunt work of lead generation entirely.",
18+
highlights: [
19+
"~15 hours of manual work eliminated weekly",
20+
"10-15k businesses scanned monthly within budget",
21+
"Intelligent classification into 3 high-value lead types",
22+
"24/7 continuous monitoring and discovery",
23+
],
24+
tech: ["Next.js 14", "PostgreSQL", "Google Places API", "TypeScript"],
25+
},
26+
];
27+
28+
export default function CaseStudiesPage() {
29+
return (
30+
<>
31+
<HeroSimple
32+
title="Case Studies"
33+
subtitle="Real projects, real results. Technical problem-solving in action."
34+
/>
35+
36+
<main className="max-w-6xl mx-auto px-6 py-16">
37+
<div className="space-y-12">
38+
{caseStudies.map((study) => (
39+
<article
40+
key={study.slug}
41+
className="bg-white border border-charcoal/10 rounded-lg p-8 hover:border-coral/30 transition-colors"
42+
>
43+
<Link href={`/case-studies/${study.slug}`} className="group">
44+
<h2 className="text-3xl font-bold text-charcoal mb-2 group-hover:text-coral transition-colors">
45+
{study.title}
46+
</h2>
47+
<p className="text-lg text-charcoal/70 mb-4">{study.tagline}</p>
48+
<p className="text-charcoal/80 leading-relaxed mb-6">
49+
{study.description}
50+
</p>
51+
52+
<div className="mb-6">
53+
<h3 className="font-bold text-charcoal mb-2">Key Results:</h3>
54+
<ul className="grid md:grid-cols-2 gap-2">
55+
{study.highlights.map((highlight, idx) => (
56+
<li key={idx} className="flex items-start text-charcoal/80">
57+
<span className="text-sage mr-2"></span>
58+
<span>{highlight}</span>
59+
</li>
60+
))}
61+
</ul>
62+
</div>
63+
64+
<div className="mb-6">
65+
<h3 className="font-bold text-charcoal mb-2">Technologies:</h3>
66+
<div className="flex flex-wrap gap-2">
67+
{study.tech.map((tech, idx) => (
68+
<span
69+
key={idx}
70+
className="px-3 py-1 bg-cream text-charcoal text-sm rounded-full"
71+
>
72+
{tech}
73+
</span>
74+
))}
75+
</div>
76+
</div>
77+
78+
<span className="inline-flex items-center text-coral font-semibold group-hover:gap-2 transition-all">
79+
Read full case study
80+
<span className="ml-1 group-hover:translate-x-1 transition-transform">
81+
82+
</span>
83+
</span>
84+
</Link>
85+
</article>
86+
))}
87+
</div>
88+
</main>
89+
90+
{/* CTA - Full width section outside constrained container */}
91+
<CTA
92+
headline="Ready to build something remarkable?"
93+
subheadline="Let's discuss how we can solve your technical challenges."
94+
/>
95+
</>
96+
);
97+
}

components/Nav.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default function Nav() {
2828
const navLinks = [
2929
{ href: '/#how-it-works', label: 'How It Works' },
3030
{ href: '/#services', label: 'Services' },
31+
{ href: '/case-studies', label: 'Case Studies' },
3132
{ href: '/pricing', label: 'Pricing' },
3233
{ href: '/ai-for-business', label: 'AI for Your Business' },
3334
{ href: '/blog', label: 'Blog' },
1.77 MB
Loading

tests/config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ module.exports = {
55
'/',
66
'/ai-for-business',
77
'/blog',
8-
'/pricing'
8+
'/pricing',
9+
'/case-studies',
10+
'/case-studies/mayday'
911
]
1012
}

0 commit comments

Comments
 (0)