Toggle switch: Job Seeker vs Agency plans, new pricing: Free/Pro/Ultra/Unlimited (/usr/bin/bash/9/9/9), aligned cards, LinkedIn integrated

This commit is contained in:
2026-04-13 20:10:42 +02:00
parent da19bbac4b
commit a83b22fc02
2 changed files with 185 additions and 173 deletions
+4 -4
View File
@@ -19,10 +19,10 @@ router = APIRouter(prefix="/autojobs/api")
# --- Plans & Pricing --- # --- Plans & Pricing ---
# Private User Plans (job seekers) # Private User Plans (job seekers)
PRIVATE_PLANS = { PRIVATE_PLANS = {
"free": {"name": "Free", "applications": 5, "ai_customize": 5, "price": 0}, "free": {"name": "Free", "applications": 5, "ai_customize": 5, "cover_letters": 5, "price": 0},
"starter": {"name": "Starter", "applications": 50, "ai_customize": 50, "price": 9}, "pro": {"name": "Pro", "applications": 100, "ai_customize": 100, "cover_letters": 100, "price": 39},
"pro": {"name": "Pro", "applications": 100, "ai_customize": 100, "price": 39}, "ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "cover_letters": 200, "price": 69},
"ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "price": 69}, "unlimited": {"name": "Unlimited", "applications": 99999, "ai_customize": 99999, "cover_letters": 99999, "price": 99},
} }
# Alias for backwards compatibility # Alias for backwards compatibility
+181 -169
View File
@@ -1,3 +1,5 @@
"use client"
import { useState } from "react"
import Link from "next/link" import Link from "next/link"
const privatePlans = [ const privatePlans = [
@@ -6,27 +8,20 @@ const privatePlans = [
price: "$0", price: "$0",
period: "forever", period: "forever",
apps: "5", apps: "5",
features: ["5 job applications/month", "5 AI resume customizations", "Basic application tracker"], coverLetters: "5",
features: ["5 AI job applications/month", "5 AI resume customizations", "5 AI cover letters/month", "Application tracker"],
cta: "Get Started", cta: "Get Started",
ctaStyle: "bg-white/10 hover:bg-white/20" ctaStyle: "bg-white/10 hover:bg-white/20"
}, },
{
name: "Starter",
price: "$9",
period: "/mo",
apps: "50",
features: ["50 job applications/month", "50 AI resume customizations", "Add your own API keys", "Email support"],
cta: "Start Now",
ctaStyle: "bg-blue-500 hover:bg-blue-600"
},
{ {
name: "Pro", name: "Pro",
price: "$39", price: "$39",
period: "/mo", period: "/mo",
apps: "100", apps: "100",
coverLetters: "100",
badge: "Most Popular", badge: "Most Popular",
highlight: true, highlight: true,
features: ["100 job applications/month", "100 AI resume customizations", "Add your own API keys", "LinkedIn resume import", "Priority support"], features: ["100 AI job applications/month", "100 AI resume customizations", "100 AI cover letters/month", "LinkedIn resume import", "Add your own API keys", "Priority support"],
cta: "Go Pro", cta: "Go Pro",
ctaStyle: "bg-blue-500 hover:bg-blue-600" ctaStyle: "bg-blue-500 hover:bg-blue-600"
}, },
@@ -35,10 +30,23 @@ const privatePlans = [
price: "$69", price: "$69",
period: "/mo", period: "/mo",
apps: "200", apps: "200",
features: ["200 job applications/month", "200 AI resume customizations", "Add your own API keys", "LinkedIn resume import", "SMS notifications"], coverLetters: "200",
features: ["200 AI job applications/month", "200 AI resume customizations", "200 AI cover letters/month", "LinkedIn resume import", "Add your own API keys", "SMS notifications"],
cta: "Go Ultra", cta: "Go Ultra",
ctaStyle: "bg-slate-600 hover:bg-slate-500" ctaStyle: "bg-slate-600 hover:bg-slate-500"
}, },
{
name: "Unlimited",
price: "$99",
period: "/mo",
apps: "Unlimited",
coverLetters: "Unlimited",
badge: "Best Value",
highlight: false,
features: ["Unlimited AI job applications", "Unlimited AI resume customizations", "Unlimited AI cover letters", "LinkedIn resume import", "Add your own API keys", "24/7 priority support"],
cta: "Go Unlimited",
ctaStyle: "bg-green-600 hover:bg-green-500"
},
] ]
const agencyPlans = [ const agencyPlans = [
@@ -48,9 +56,8 @@ const agencyPlans = [
period: "/mo", period: "/mo",
submissions: "1,000", submissions: "1,000",
clients: "10", clients: "10",
badge: "",
highlight: false, highlight: false,
features: ["1,000 submissions/month", "10 client profiles", "White-label dashboard", "API access"], features: ["1,000 job submissions/month", "Up to 10 client profiles", "AI resume tailoring", "White-label dashboard", "API access"],
cta: "Start Agency", cta: "Start Agency",
ctaStyle: "bg-purple-600 hover:bg-purple-500" ctaStyle: "bg-purple-600 hover:bg-purple-500"
}, },
@@ -60,10 +67,10 @@ const agencyPlans = [
period: "/mo", period: "/mo",
submissions: "3,000", submissions: "3,000",
clients: "50", clients: "50",
badge: "", badge: "Most Popular",
highlight: true, highlight: true,
features: ["3,000 submissions/month", "50 client profiles", "White-label dashboard", "Priority support"], features: ["3,000 job submissions/month", "Up to 50 client profiles", "AI resume tailoring", "White-label dashboard", "Priority support"],
cta: "Grow", cta: "Grow Agency",
ctaStyle: "bg-purple-600 hover:bg-purple-500" ctaStyle: "bg-purple-600 hover:bg-purple-500"
}, },
{ {
@@ -72,10 +79,9 @@ const agencyPlans = [
period: "/mo", period: "/mo",
submissions: "5,000", submissions: "5,000",
clients: "150", clients: "150",
badge: "",
highlight: false, highlight: false,
features: ["5,000 submissions/month", "150 client profiles", "White-label dashboard", "Dedicated account manager"], features: ["5,000 job submissions/month", "Up to 150 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager"],
cta: "Scale", cta: "Scale Up",
ctaStyle: "bg-slate-600 hover:bg-slate-500" ctaStyle: "bg-slate-600 hover:bg-slate-500"
}, },
{ {
@@ -84,15 +90,60 @@ const agencyPlans = [
period: "/mo", period: "/mo",
submissions: "10,000", submissions: "10,000",
clients: "500", clients: "500",
badge: "", badge: "Max Cap",
highlight: false, highlight: false,
features: ["10,000 submissions/month", "500 client profiles", "White-label dashboard", "Dedicated account manager", "Custom integrations"], features: ["10,000 job submissions/month", "Up to 500 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager", "Custom integrations"],
cta: "Enterprise", cta: "Get Enterprise",
ctaStyle: "bg-slate-600 hover:bg-slate-500" ctaStyle: "bg-slate-600 hover:bg-slate-500"
}, },
] ]
function PlanCard({ plan, type, color }: { plan: any, type: string, color: string }) {
const highlightBg = type === "private"
? "bg-gradient-to-br from-blue-600/30 to-purple-600/30 border-blue-500/50"
: "bg-gradient-to-br from-purple-600/30 to-pink-600/30 border-purple-500/50"
const checkColor = type === "private" ? "text-green-400" : "text-purple-400"
const badgeColor = type === "private" ? "bg-blue-500" : "bg-purple-500"
return (
<div className={`rounded-2xl p-5 border flex flex-col h-full ${plan.highlight ? highlightBg : "bg-slate-700/50 border-slate-600"}`}>
{plan.badge && (
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
<span className={`px-3 py-1 ${badgeColor} text-white text-xs font-bold rounded-full`}>{plan.badge}</span>
</div>
)}
<div className="text-sm text-slate-400 font-medium mb-1">{plan.name}</div>
<div className="flex items-baseline gap-1 mb-1">
<span className="text-3xl font-bold text-white">{plan.price}</span>
<span className="text-slate-400 text-sm">{plan.period}</span>
</div>
<div className="text-xs text-blue-400 mb-3">
{type === "private"
? `${plan.apps} apps • ${plan.coverLetters} cover letters`
: `${plan.submissions} submissions • ${plan.clients} clients`
}
</div>
<ul className="space-y-1.5 mb-4 flex-grow">
{plan.features.map((f: string) => (
<li key={f} className="text-slate-300 text-xs flex items-start gap-2">
<span className={checkColor}></span> {f}
</li>
))}
</ul>
<Link
href={`/autojobs/signup?type=${type}`}
className={`block text-center px-4 py-2.5 rounded-lg font-medium text-white text-sm transition mt-auto ${plan.ctaStyle}`}
>
{plan.cta}
</Link>
</div>
)
}
export default function LandingPage() { export default function LandingPage() {
const [activeTab, setActiveTab] = useState<"private" | "agency">("private")
return ( return (
<div className="min-h-screen bg-gradient-to-br from-slate-900 via-blue-950 to-slate-900"> <div className="min-h-screen bg-gradient-to-br from-slate-900 via-blue-950 to-slate-900">
{/* Nav */} {/* Nav */}
@@ -100,190 +151,151 @@ export default function LandingPage() {
<div className="text-2xl font-bold text-white"> <div className="text-2xl font-bold text-white">
Auto<span className="text-blue-400">Jobs</span> Auto<span className="text-blue-400">Jobs</span>
</div> </div>
<div className="flex gap-4"> <div className="flex gap-4 items-center">
<Link href="/autojobs/login" className="text-slate-300 hover:text-white transition flex items-center gap-2"> <button className="text-slate-300 hover:text-white transition flex items-center gap-2 text-sm">
Login <svg className="w-4 h-4" fill="currentColor" viewBox="0 0 24 24">
</Link> <path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/>
<Link href="/autojobs/signup" className="px-5 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded-lg font-medium transition"> </svg>
Login with LinkedIn
</button>
<Link href="/autojobs/signup" className="px-5 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded-lg font-medium transition text-sm">
Get Started Get Started
</Link> </Link>
</div> </div>
</nav> </nav>
{/* Hero */} {/* Hero */}
<section className="py-20 px-6 text-center"> <section className="py-16 px-6 text-center">
<div className="max-w-4xl mx-auto"> <div className="max-w-4xl mx-auto">
<div className="inline-block px-4 py-1.5 rounded-full bg-blue-500/20 border border-blue-500/30 text-blue-300 text-sm mb-6"> <div className="inline-block px-4 py-1.5 rounded-full bg-blue-500/20 border border-blue-500/30 text-blue-300 text-sm mb-6">
AI-Powered Job Application Automation AI-Powered Job Application Automation
</div> </div>
<h1 className="text-5xl md:text-6xl font-bold text-white mb-6 leading-tight"> <h1 className="text-4xl md:text-5xl font-bold text-white mb-6 leading-tight">
Stop Manually Applying. Stop Manually Applying.
<br /> <br />
<span className="text-blue-400">Let AI Handle It.</span> <span className="text-blue-400">Let AI Handle It.</span>
</h1> </h1>
<p className="text-xl text-slate-300 mb-10 max-w-2xl mx-auto leading-relaxed"> <p className="text-lg text-slate-300 mb-8 max-w-2xl mx-auto">
Upload your resume once. Set your preferences. AI finds matching jobs, rewrites your resume for each one, and applies while you sleep. Upload your resume. Connect LinkedIn. AI finds matching jobs, rewrites your resume + cover letter for each one, and applies automatically.
</p> </p>
<div className="flex flex-col sm:flex-row gap-4 justify-center"> <div className="flex flex-col sm:flex-row gap-3 justify-center">
<Link <Link
href="/autojobs/signup" href="/autojobs/signup"
className="px-10 py-4 bg-blue-500 hover:bg-blue-600 text-white rounded-xl font-bold text-lg transition shadow-lg shadow-blue-500/25" className="px-8 py-3 bg-blue-500 hover:bg-blue-600 text-white rounded-xl font-semibold transition shadow-lg shadow-blue-500/25"
> >
Start Free 5 Applications Start Free 5 Applications
</Link> </Link>
<Link <button className="px-8 py-3 bg-white/10 hover:bg-white/20 text-white rounded-xl font-semibold border border-white/20 transition flex items-center justify-center gap-2">
href="/autojobs/login"
className="px-10 py-4 bg-white/10 hover:bg-white/20 text-white rounded-xl font-semibold text-lg border border-white/20 transition flex items-center justify-center gap-2"
>
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/> <path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/>
</svg> </svg>
Login with LinkedIn Sign up with LinkedIn
</Link> </button>
</div> </div>
</div> </div>
</section> </section>
{/* How It Works */} {/* How It Works */}
<section className="py-12 px-6 bg-slate-800/40">
<div className="max-w-5xl mx-auto">
<h2 className="text-2xl font-bold text-white text-center mb-8">How It Works</h2>
<div className="grid md:grid-cols-3 gap-6">
{[
{ step: "01", title: "Create Profile", desc: "Upload resume. Connect LinkedIn. Set job preferences." },
{ step: "02", title: "AI Customizes", desc: "AI rewrites your resume + cover letter for each job." },
{ step: "03", title: "Apply & Track", desc: "Apply in one click. Track every application status." }
].map((item) => (
<div key={item.step} className="bg-slate-700/50 rounded-xl p-6 border border-slate-600 text-center">
<div className="text-4xl font-bold text-blue-500/20 mb-3">{item.step}</div>
<h3 className="text-lg font-semibold text-white mb-2">{item.title}</h3>
<p className="text-slate-400 text-sm">{item.desc}</p>
</div>
))}
</div>
</div>
</section>
{/* Pricing Toggle + Plans */}
<section className="py-16 px-6">
<div className="max-w-6xl mx-auto text-center">
<h2 className="text-3xl font-bold text-white mb-6">Choose Your Plan</h2>
{/* Toggle Switch */}
<div className="inline-flex items-center gap-0 bg-slate-800 rounded-full p-1 mb-10 border border-slate-700">
<button
onClick={() => setActiveTab("private")}
className={`px-6 py-2.5 rounded-full font-semibold text-sm transition-all ${
activeTab === "private"
? "bg-blue-500 text-white shadow-lg"
: "text-slate-400 hover:text-white"
}`}
>
👤 Job Seeker
</button>
<button
onClick={() => setActiveTab("agency")}
className={`px-6 py-2.5 rounded-full font-semibold text-sm transition-all ${
activeTab === "agency"
? "bg-purple-500 text-white shadow-lg"
: "text-slate-400 hover:text-white"
}`}
>
🏢 Recruiting Agency
</button>
</div>
{/* Private Plans */}
{activeTab === "private" && (
<div className="space-y-6">
<p className="text-slate-400 mb-6">Every plan includes AI resume tailoring + AI cover letter generation</p>
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 max-w-5xl mx-auto items-stretch">
{privatePlans.map((plan) => (
<PlanCard key={plan.name} plan={plan} type="private" color="blue" />
))}
</div>
</div>
)}
{/* Agency Plans */}
{activeTab === "agency" && (
<div className="space-y-6">
<p className="text-slate-400 mb-6">Manage multiple clients. Hard caps no unlimited.</p>
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 max-w-5xl mx-auto items-stretch">
{agencyPlans.map((plan) => (
<PlanCard key={plan.name} plan={plan} type="agency" color="purple" />
))}
</div>
<p className="text-slate-500 text-sm mt-4">All plans have hard submission caps. No unlimited access for agencies.</p>
</div>
)}
</div>
</section>
{/* Features */}
<section className="py-16 px-6 bg-slate-800/40"> <section className="py-16 px-6 bg-slate-800/40">
<div className="max-w-5xl mx-auto"> <div className="max-w-5xl mx-auto">
<h2 className="text-3xl font-bold text-white text-center mb-12">How It Works</h2> <h2 className="text-2xl font-bold text-white text-center mb-8">Everything You Need</h2>
<div className="grid md:grid-cols-3 gap-8"> <div className="grid md:grid-cols-3 gap-4">
{[ {[
{ { icon: "🎯", title: "AI Resume Tailoring", desc: "Every resume rewritten to match job description keywords" },
step: "01", { icon: "✉️", title: "AI Cover Letters", desc: "Personalized cover letter for each company" },
title: "Create Your Profile", { icon: "🔍", title: "Multi-Source Search", desc: "Jooble, JSearch aggregated and deduplicated" },
desc: "Upload your resume. Connect your LinkedIn. Tell us what jobs you want — keywords, location, salary range." { icon: "📊", title: "Application Tracker", desc: "Dashboard tracks status from applied to offer" },
}, { icon: "🔑", title: "Your Own API Keys", desc: "You control your data and spending" },
{ { icon: "💼", title: "LinkedIn Import", desc: "Import your saved LinkedIn resumes automatically" },
step: "02", ].map((f) => (
title: "AI Finds & Customizes", <div key={f.title} className="bg-slate-700/50 rounded-xl p-4 border border-slate-600">
desc: "We search across multiple job boards. For each match, AI rewrites your resume and writes a personalized cover letter." <div className="text-xl mb-2">{f.icon}</div>
}, <h3 className="font-semibold text-white mb-1">{f.title}</h3>
{ <p className="text-slate-400 text-sm">{f.desc}</p>
step: "03",
title: "Apply & Track",
desc: "Apply with one click or let AI apply automatically. Track every application status in your dashboard."
}
].map((item) => (
<div key={item.step} className="bg-slate-700/50 rounded-2xl p-8 border border-slate-600">
<div className="text-5xl font-bold text-blue-500/20 mb-4">{item.step}</div>
<h3 className="text-xl font-semibold text-white mb-3">{item.title}</h3>
<p className="text-slate-300">{item.desc}</p>
</div> </div>
))} ))}
</div> </div>
</div> </div>
</section> </section>
{/* Private Plans */}
<section className="py-20 px-6">
<div className="max-w-6xl mx-auto text-center">
<h2 className="text-3xl font-bold text-white mb-2">For Job Seekers</h2>
<p className="text-slate-400 mb-12">Choose your monthly application limit</p>
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6 max-w-5xl mx-auto">
{privatePlans.map((plan) => (
<div
key={plan.name}
className={`rounded-2xl p-6 border text-left relative ${
plan.highlight
? 'bg-gradient-to-br from-blue-600/30 to-purple-600/30 border-blue-500/50 shadow-lg shadow-blue-500/10'
: 'bg-slate-700/50 border-slate-600'
}`}
>
{plan.badge && (
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
<span className="px-3 py-1 bg-blue-500 text-white text-xs font-bold rounded-full">{plan.badge}</span>
</div>
)}
<div className="text-sm text-slate-400 font-medium mb-1">{plan.name}</div>
<div className="flex items-baseline gap-1 mb-1">
<span className="text-3xl font-bold text-white">{plan.price}</span>
<span className="text-slate-400 text-sm">{plan.period}</span>
</div>
<div className="text-xs text-blue-400 mb-4">{plan.apps} apps/month</div>
<ul className="space-y-2 mb-6">
{plan.features.map((f) => (
<li key={f} className="text-slate-300 text-sm flex items-start gap-2">
<span className="text-green-400"></span> {f}
</li>
))}
</ul>
<Link
href="/autojobs/signup?type=private"
className={`block text-center px-4 py-2.5 rounded-lg font-medium text-white transition ${plan.ctaStyle}`}
>
{plan.cta}
</Link>
</div>
))}
</div>
<div className="mt-8 text-slate-500 text-sm flex items-center justify-center gap-2">
<svg className="w-4 h-4" fill="currentColor" viewBox="0 0 24 24">
<path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/>
</svg>
Login with LinkedIn import your saved resumes automatically
</div>
</div>
</section>
{/* Agency Plans */}
<section className="py-20 px-6 bg-slate-800/40">
<div className="max-w-6xl mx-auto text-center">
<div className="inline-block px-4 py-1.5 rounded-full bg-purple-500/20 border border-purple-500/30 text-purple-300 text-sm mb-4">
For Recruiting Agencies
</div>
<h2 className="text-3xl font-bold text-white mb-4">Agency Plans</h2>
<p className="text-slate-400 mb-12">Manage multiple clients. Each plan has a hard submission cap no unlimited.</p>
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6 max-w-5xl mx-auto">
{agencyPlans.map((plan) => (
<div
key={plan.name}
className={`rounded-2xl p-6 border text-left relative ${
plan.highlight
? 'bg-gradient-to-br from-purple-600/30 to-pink-600/30 border-purple-500/50'
: 'bg-slate-700/50 border-slate-600'
}`}
>
{plan.badge && (
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
<span className="px-3 py-1 bg-purple-500 text-white text-xs font-bold rounded-full">{plan.badge}</span>
</div>
)}
<div className="text-sm text-purple-400 font-medium mb-1">Agency {plan.name}</div>
<div className="flex items-baseline gap-1 mb-1">
<span className="text-3xl font-bold text-white">{plan.price}</span>
<span className="text-slate-400 text-sm">{plan.period}</span>
</div>
<div className="text-xs text-slate-500 mb-4">{plan.submissions} submissions {plan.clients} clients</div>
<ul className="space-y-2 mb-6">
{plan.features.map((f) => (
<li key={f} className="text-slate-300 text-sm flex items-start gap-2">
<span className="text-purple-400"></span> {f}
</li>
))}
</ul>
<Link
href="/autojobs/signup?type=agency"
className={`block text-center px-4 py-2.5 rounded-lg font-medium text-white transition ${plan.ctaStyle}`}
>
{plan.cta}
</Link>
</div>
))}
</div>
<div className="mt-8 text-slate-500 text-sm">
All plans have hard caps. No unlimited access for agencies.
</div>
</div>
</section>
{/* Footer */} {/* Footer */}
<footer className="py-8 px-6 border-t border-slate-700"> <footer className="py-6 px-6 border-t border-slate-700">
<div className="max-w-5xl mx-auto text-center text-slate-500 text-sm"> <div className="max-w-5xl mx-auto text-center text-slate-500 text-sm">
<p>© 2026 AutoJobs Built on <a href="https://hostpioneers.com" className="text-blue-400 hover:underline">HostPioneers</a> infrastructure</p> <p>© 2026 AutoJobs Built on <a href="https://hostpioneers.com" className="text-blue-400 hover:underline">HostPioneers</a> infrastructure</p>
</div> </div>