Endeavor Digital runs two clean packages — Starter at $1,800/month (web + paid ads) and Growth at $4,500/month (full stack: web + SEO + Google + Meta). Every client gets either SEO or ads — nothing below that. We lead with Growth on every call. A white label handles SEO and ad management; Preston handles web, strategy, client relationships, and account oversight. The goal is 3 Growth clients or 5 Starter clients by September — either path clears $100k.
);
}
function ICPTab() {
const [active, setActive] = useState(0);
const icps = [
{
tag: "Primary", name: "Dental Practices", color: G,
who: "Independent practices, 1–3 locations. Doctor-owner or office manager is the buyer.",
why: "Professional, growth-minded, high lifetime value, underserved by quality marketers. You have a case study launching this week.",
budget: "$1,800 – $4,500/mo", urgency: "Start now",
pains: ["Inconsistent new patient flow", "Outdated website losing patients to competitors", "No system to capture and follow up leads", "Missing or weak online reviews"],
pitch: "We build new patient acquisition systems for dental practices — website, local SEO, and Google Ads working together.",
},
{
tag: "Secondary", name: "Law Firms", color: "#6B9FE4",
who: "Personal injury, family law, criminal defense — small to mid-size. Managing partner is buyer.",
why: "High client lifetime value means they understand ROI. You have background here. Professional conversations, not combative ones.",
budget: "$1,800 – $4,500/mo", urgency: "Parallel track",
pains: ["Over-relying on referrals", "Website doesn't rank locally", "Competitors dominating Google Ads", "No intake automation"],
pitch: "We help law firms generate consistent inbound cases through SEO and paid search — not just referrals.",
},
{
tag: "Tertiary", name: "Med Spas", color: "#C084FC",
who: "Nurse practitioners, aestheticians running their own practice. High budgets, competitive market.",
why: "Exploding industry, high margins, business-savvy owners who invest in marketing heavily and understand ROI.",
budget: "$1,800 – $4,500/mo", urgency: "Once stable",
pains: ["Competing with franchise chains", "Inconsistent booking flow", "Seasonal revenue swings", "Weak social proof online"],
pitch: "We fill your treatment calendar with qualified new clients through targeted local ads and reputation management.",
},
];
const icp = icps[active];
const packages = [
{
name: "Starter", price: "$1,800/mo", tag: "Paid traffic focus", tagColor: "#6B9FE4", featured: false,
includes: [
"Website design & updates",
"Google Ads OR Meta Ads management",
"Client pays ad spend separately",
"Monthly reporting & optimization",
"GBP management",
],
margin: "Your margin: ~$1,450/mo",
wlCost: "WL cost: $350",
note: "Foot-in-the-door for clients who want fast lead generation without a long-term SEO commitment. Natural upsell path to Growth.",
},
{
name: "Growth", price: "$4,500/mo", tag: "Full stack", tagColor: G, featured: true,
includes: [
"Everything in Starter",
"Both Google Ads AND Meta Ads",
"Full SEO campaign (local + on-page)",
"CRM setup & automation (GHL)",
"Bi-weekly strategy calls",
"Weekly reporting dashboard",
],
margin: "Your margin: ~$2,400/mo",
wlCost: "WL cost: $2,100 ($1,500 SEO + $600 ads)",
note: "Your primary offer. Lead with this. Most serious clients — dental, law, med spa — should be here.",
},
];
return (
{icps.map((i, idx) => (
))}
{icp.name}
{icp.why}
WHO YOU'RE TALKING TO
{icp.who}
AVG BUDGET
{icp.budget}
THEIR PAIN POINTS
{icp.pains.map(p => (
→{p}
))}
YOUR PITCH
"{icp.pitch}"
Two packages. Simple to sell, easy to understand. Lead with Growth every time.
);
}
function SprintTab() {
const [checked, setChecked] = useState({});
const toggle = id => setChecked(p => ({ ...p, [id]: !p[id] }));
const week1 = [
{ id: "1a", day: "Today", col: G, task: "Write a list of 50 people you know — friends, family, former colleagues, business owners.", why: "Warm outreach closes 10x faster than cold. This is your fastest path to 2 clients." },
{ id: "1b", day: "Today", col: G, task: "Send 15 personal, individual messages to business owners in your network. Not a mass blast — one by one, personalised.", why: "Template: 'Hey [name], building a new focus at Endeavor. Do you know any dentists or lawyers who need help with marketing or their website?'" },
{ id: "1c", day: "Today", col: G, task: "Call your outbound company. Shift all targeting to independent dental practices and law firms — no large chains or DSOs.", why: "Highest-leverage 10-minute call you can make today. Your current targeting is creating the wrong conversations." },
{ id: "1d", day: "Day 2", col: G, task: "Audit your Calendly. Make sure it's easy to book and doesn't need back-and-forth to confirm.", why: "Every friction point in your booking flow costs you deals." },
{ id: "1e", day: "Day 3", col: G, task: "Finish the dental website. Treat it like your flagship piece, not a favor for a friend.", why: "This is your entry ticket to the dental vertical and the foundation of everything in Phase 1." },
{ id: "1f", day: "Day 3", col: G, task: "Screenshot everything: full scroll, mobile view, contact form, before/after if available.", why: "You need visual proof to attach in outreach the moment it launches." },
{ id: "1g", day: "Day 4", col: G, task: "Ask your dentist friend for a 60-second video testimonial on his phone. No production needed.", why: "A dentist vouching for you to other dentists is worth more than any pitch you can write." },
{ id: "1h", day: "Day 4", col: G, task: "Write a one-page case study: the problem, what you built, the strategy behind it. Results optional — the story is enough.", why: "This becomes your cold outreach hook immediately after the site goes live." },
{ id: "1i", day: "Day 5", col: G, task: "Record a 3-minute Loom walkthrough of the dental site. Talk about the strategy and why you made the decisions you did.", why: "'I recorded a quick look at what we built for a dental practice in [city]' gets 3x the replies of a plain cold email." },
{ id: "1j", day: "Day 5", col: G, task: "Send the Loom + case study to 10 dental offices within driving distance. Personalize each one with their name and one observation about their current site.", why: "Local + personal + video is your highest-converting outreach combo available right now." },
];
const week2 = [
{ id: "2a", day: "Day 8", col: "#6B9FE4", task: "Follow up with every warm contact who hasn't replied. One line: 'Hey [name] — just following up. Worth a quick call this week?'", why: "Most deals come from the follow-up, not the first message. Don't skip this." },
{ id: "2b", day: "Day 8", col: "#6B9FE4", task: "Post on LinkedIn about the dental website launch. 3–4 sentences, one screenshot, what you built and why it matters for the practice.", why: "Your network doesn't know what you're doing. This makes it real and gets word out to the right people." },
{ id: "2c", day: "Days 9–10", col: "#6B9FE4", task: "Get on every call you can. Lead with questions: 'What's the biggest challenge getting new patients right now?' Then listen.", why: "The people who convert are the ones who feel heard, not sold. Questions first, pitch never." },
{ id: "2d", day: "Day 10", col: "#6B9FE4", task: "Send a proposal within 2 hours of every call. Use a simple template. Do not wait until tomorrow.", why: "Proposals sent same-day close at 2–3x the rate of proposals sent 48+ hours later. This is proven." },
{ id: "2e", day: "Day 11", col: "#6B9FE4", task: "Offer a free website/SEO audit to anyone who hasn't responded to your initial outreach.", why: "Zero-risk entry converts fence-sitters. You close them on the follow-up audit call." },
{ id: "2f", day: "Days 12–13", col: "#6B9FE4", task: "Close 2 clients. Signed agreement + deposit received before doing any work.", why: "A verbal yes is not a client. Signed and paid is a client." },
{ id: "2g", day: "Day 14", col: "#6B9FE4", task: "Set up Endeavor Digital's Google Business Profile. Ask 3–5 people you've worked with to leave a Google review.", why: "When prospects Google you after cold outreach, this is what they see. Don't let it be blank." },
];
const all = [...week1, ...week2];
const doneCount = all.filter(t => checked[t.id]).length;
const pct = Math.round((doneCount / all.length) * 100);
const CheckItem = ({ item }) => (
June 16–22 · Finish dental site, redirect outbound, start outreach
{week1.map(item => )}
2
Week 2 — Convert & Close
June 23–30 · Get on calls, send proposals, close 2 clients
{week2.map(item => )}
);
}
function ToolsTab() {
const tools = [
{ name: "GoHighLevel (Agency Plan)", cost: "$297/mo", tier: "Critical", tierColor: G, note: "Your single most important investment. CRM, email/SMS, funnels, reputation management, call tracking — all in one. White-label as 'Endeavor CRM' and charge clients $99–150/month access. Breaks even at 3 clients. At 10 clients: $1,000+/mo in software margin alone." },
{ name: "Google Workspace", cost: "$6/mo", tier: "Essential", tierColor: "#6B9FE4", note: "Professional email at @endeavor-digital.com, Docs for proposals, Drive for client files. Non-negotiable for credibility." },
{ name: "Canva Pro", cost: "$13/mo", tier: "Essential", tierColor: "#6B9FE4", note: "Case study design, social posts, client reports, ad creative. You'll use this every single day." },
{ name: "Loom", cost: "Free", tier: "Essential", tierColor: "#6B9FE4", note: "Record 3-minute personalized website audits and embed in cold outreach. Highest-converting outreach tactic available right now." },
{ name: "Calendly", cost: "Free", tier: "Essential", tierColor: "#6B9FE4", note: "Frictionless booking. Put the link in your email signature, cold outreach, and LinkedIn bio." },
{ name: "PandaDoc (Free tier)", cost: "Free", tier: "Essential", tierColor: "#6B9FE4", note: "Professional proposals with e-signature. Free tier handles everything you need at this stage." },
];
const later = [
{ name: "Ahrefs", cost: "$99/mo", note: "Use Google Search Console + free tools until you have 3+ SEO retainer clients. Then it pays for itself easily." },
{ name: "LinkedIn Sales Navigator", cost: "$79/mo", note: "Add once your LinkedIn content is established and generating inbound conversations." },
];
return (
GoHighLevel's Agency plan lets you white-label the entire platform as "Endeavor CRM" and resell it to clients monthly. This creates recurring revenue completely separate from your service retainers — and it makes clients stickier because they rely on the platform you run.
10 clients on Endeavor CRM = $1,250/mo in software margin = $15,000/year added to revenue without a single additional hour of service work.
{tools.map(t => (
{t.name}
{t.note}
{t.cost}
))}
{later.map(t => (
{t.name}
{t.note}
{t.cost}
))}
);
}
function MarketingTab() {
const channels = [
{ name: "Redirect Outbound to Dental & Law", effort: "Low", impact: "High", when: "Today", color: G, desc: "Your outbound company is already sending 2–3k emails a week. The volume is fine. The targeting is the problem. One phone call today changes the entire direction of your pipeline." },
{ name: "Loom Video Audits in Cold Outreach", effort: "Low", impact: "High", when: "This week", color: G, desc: "Record a 3-minute screen walkthrough of a prospect's website — point out real, specific issues. Attach it to cold email instead of a text pitch. Personal, specific, valuable before they pay you anything. Response rates jump 3x." },
{ name: "LinkedIn Content (3x/week)", effort: "Medium", impact: "High", when: "This week", color: G, desc: "Post about dental marketing wins, local business tips, and what you're building. You don't need a big following — you need the right 50 people to see it. This compounds over 90 days and generates inbound." },
{ name: "Google Business Profile (Endeavor)", effort: "Low", impact: "Medium", when: "This week", color: G, desc: "When a prospect Googles you after your cold outreach, your GBP is what they see. Get it optimized with photos, services, hours, and 5+ reviews. Free and criminally underused by agencies." },
{ name: "Local Networking (BNI, Chamber)", effort: "Medium", impact: "High", when: "Find next event", color: "#6B9FE4", desc: "Johnson City Chamber of Commerce, BNI chapter, local Facebook business groups. You're the local marketing expert. East TN is a relationship market — your home court advantage over remote agencies is real." },
{ name: "Cold Calling Dental Offices", effort: "High", impact: "High", when: "Week 2", color: "#6B9FE4", desc: "Underused because it's uncomfortable. Call dental offices, ask for the doctor or office manager. 10 calls a day builds momentum fast. A 60-second call creates presence that cold email never can." },
{ name: "Referral Partnerships", effort: "Low", impact: "High", when: "Identify 5 this month", color: "#6B9FE4", desc: "Find people who serve your ICP but don't compete — dental practice consultants, supply reps, accountants who work with law firms. One active referral partner can outproduce months of cold outreach." },
{ name: "Google Ads for Endeavor", effort: "Medium", impact: "Medium", when: "Month 2", color: MUTED, desc: "Run a small campaign targeting 'dental marketing Tennessee' or 'marketing agency Johnson City.' $300–400/month. You know how to do this — use your skills on your own business as proof of concept." },
{ name: "Direct Mail to Dental Offices", effort: "Medium", impact: "Medium", when: "Month 2", color: MUTED, desc: "A well-designed physical postcard or letter to 20–30 local dental practices. In a world of digital noise, physical mail actually gets opened and sits on a desk. You'll be the only agency doing it." },
{ name: "Dental Facebook Groups", effort: "Low", impact: "Medium", when: "Month 2", color: MUTED, desc: "Groups for dental office managers and practice owners. Answer questions, share insights, provide genuine value before mentioning your services. Trust builds into inbound leads over time." },
{ name: "YouTube / Short-Form Video", effort: "High", impact: "Very High (long-term)", when: "Month 3–4", color: MUTED, desc: "Tutorial content like 'How dental practices can get more Google reviews' or 'Why your website isn't converting.' Takes 3–6 months to compound but creates durable inbound at zero marginal cost for years." },
];
const impactColor = i => i.startsWith("Very") ? G : i.startsWith("H") ? G : i.startsWith("M") ? "#F59E0B" : MUTED;
const effortColor = e => e === "Low" ? G : e === "Medium" ? "#F59E0B" : "#EF4444";
return (
{channels.map((ch, i) => (
{i + 1}
{ch.name}
{ch.desc}
→ {ch.when}
))}
{/* Google Ads Campaign Structure */}
Full campaign structure ready to launch. $500/month goes further in East TN than most markets.
Campaign 1 — Local Agency
AD GROUP 1: General Agency
{["marketing agency johnson city tn", "digital marketing company johnson city", "marketing agency kingsport", "marketing company tri cities tennessee"].map(k => (
"{k}"
))}
AD GROUP 2: Specific Services
{["google ads management tennessee", "seo company johnson city", "website design johnson city tn"].map(k => (
"{k}"
))}
Campaign 2 — Niche ICP
AD GROUP 1: Dental
{["marketing for dental practices tennessee", "dental marketing company", "google ads for dentists tennessee", "dental seo company"].map(k => (
"{k}"
))}
AD GROUP 2: Law Firms
{["law firm marketing tennessee", "marketing for lawyers johnson city", "legal marketing company tennessee"].map(k => (
"{k}"
))}
AD COPY TEMPLATE
{[
{ l: "Headline 1", v: "Marketing Agency in Johnson City" },
{ l: "Headline 2", v: "Web, SEO & Google Ads That Convert" },
{ l: "Headline 3", v: "Free Audit — Book a Call Today" },
{ l: "Description", v: "We help dental practices and local businesses in East Tennessee get consistent leads. Free 15-min marketing audit. No obligation." },
].map(r => (
{r.l}
{r.v}
))}
CRITICAL SETTINGS
{["Phrase + Exact match only (no broad)", "50-mile radius from Johnson City", "Mon–Fri business hours only", "Max CPC cap: $8–10", "Bidding: Maximize clicks to start"].map(s => (
One Growth client from this campaign = $4,500/month = pays for 9 months of ad spend in a single month. Send clicks to a dedicated landing page with Calendly embedded — not the homepage.
);
}
function TimelineTab() {
const phases = [
{
phase: "Phase 1", period: "June 16–30", title: "The Sprint", color: G,
goal: "2 clients", mrr: "$3,000–4,500",
actions: ["Finish dental site & case study", "Redirect outbound to dental/law", "50-contact warm outreach", "Loom audits to 10 dental offices", "Close 2 clients (any industry)", "Optimize Endeavor GBP"],
milestone: "Replace the $4k you lost. Prove the model works.",
},
{
phase: "Phase 2", period: "July", title: "Build the Pipeline", color: "#6B9FE4",
goal: "4 clients total", mrr: "$6,000–8,000",
actions: ["Close 2 more using dental case study", "GoHighLevel live + clients onboarded", "LinkedIn 3x/week consistently", "Identify 5 referral partners", "Attend 1 local networking event", "First GHL software revenue hits"],
milestone: "Stable income. Real breathing room.",
},
{
phase: "Phase 3", period: "Aug–Sep", title: "Scale & Systematize", color: "#C084FC",
goal: "6–7 clients", mrr: "$9,000–12,000",
actions: ["First referrals starting to come in", "LinkedIn generating 1–2 inbound/month", "GHL adding $600–900/mo passive", "Google Ads for Endeavor running", "Second strong case study complete", "Consider first contractor hire"],
milestone: "$100k annual run rate hit. This is the target.",
},
{
phase: "Phase 4", period: "Oct–Dec", title: "Compound & Hold", color: "#F59E0B",
goal: "8+ clients", mrr: "$12,000–15,000",
actions: ["Inbound supplementing outbound", "GHL subs = $1,000+/mo", "Referral partnerships fully active", "Go deeper on dental or add second vertical", "First hire if delivery load needs it", "Hit $100k total revenue for the year"],
milestone: "Comfortable. Self-sustaining. A real business.",
},
];
const bars = [
{ l: "June", v: 3750, c: G },
{ l: "July", v: 7000, c: "#6B9FE4" },
{ l: "Aug–Sep", v: 10500, c: "#C084FC" },
{ l: "Oct+", v: 13500, c: "#F59E0B" },
];
const max = Math.max(...bars.map(b => b.v));
return (
{bars.map(b => (
${(b.v / 1000).toFixed(1)}k
{b.l}
))}
$100k/year = $8,333/month — achievable by September with 5–6 clients
{phases.map(p => (
{p.period}
{p.title}
Target MRR
{p.mrr}
{p.goal}
{p.actions.map(a => (
→{a}
))}
✓ {p.milestone}
))}
CREATE
{["Dental case study (one-pager + page on website)", "Service packages page with clear pricing", "PandaDoc proposal template", "LinkedIn content calendar (30 days)", "Onboarding doc for new clients"].map(i => (
+{i}
))}
IMPROVE
{["Website messaging to reflect dental/professional ICP", "Social proof section with real client names + results", "Homepage headline — make it ICP-specific", "Mobile experience on Endeavor site", "Email signature with Calendly link"].map(i => (