Updated pricing: Free(/usr/bin/bash) Starter(9/20apps) Pro(9) Ultra(49) Unlimited(99)
This commit is contained in:
+4
-3
@@ -20,9 +20,10 @@ router = APIRouter(prefix="/autojobs/api")
|
|||||||
# Private User Plans (job seekers)
|
# Private User Plans (job seekers)
|
||||||
PRIVATE_PLANS = {
|
PRIVATE_PLANS = {
|
||||||
"free": {"name": "Free", "applications": 5, "ai_customize": 5, "cover_letters": 5, "price": 0},
|
"free": {"name": "Free", "applications": 5, "ai_customize": 5, "cover_letters": 5, "price": 0},
|
||||||
"pro": {"name": "Pro", "applications": 100, "ai_customize": 100, "cover_letters": 100, "price": 39},
|
"starter": {"name": "Starter", "applications": 20, "ai_customize": 20, "cover_letters": 20, "price": 29},
|
||||||
"ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "cover_letters": 200, "price": 69},
|
"pro": {"name": "Pro", "applications": 100, "ai_customize": 100, "cover_letters": 100, "price": 69},
|
||||||
"unlimited": {"name": "Unlimited", "applications": 99999, "ai_customize": 99999, "cover_letters": 99999, "price": 99},
|
"ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "cover_letters": 200, "price": 149},
|
||||||
|
"unlimited": {"name": "Unlimited", "applications": 99999, "ai_customize": 99999, "cover_letters": 99999, "price": 199},
|
||||||
}
|
}
|
||||||
|
|
||||||
# Alias for backwards compatibility
|
# Alias for backwards compatibility
|
||||||
|
|||||||
+45
-25
@@ -9,13 +9,27 @@ const privatePlans = [
|
|||||||
period: "forever",
|
period: "forever",
|
||||||
apps: "5",
|
apps: "5",
|
||||||
coverLetters: "5",
|
coverLetters: "5",
|
||||||
|
badge: "",
|
||||||
|
highlight: false,
|
||||||
features: ["5 AI job applications/month", "5 AI resume customizations", "5 AI cover letters/month", "Application tracker"],
|
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: "$29",
|
||||||
|
period: "/mo",
|
||||||
|
apps: "20",
|
||||||
|
coverLetters: "20",
|
||||||
|
badge: "",
|
||||||
|
highlight: false,
|
||||||
|
features: ["20 AI job applications/month", "20 AI resume customizations", "20 AI cover letters/month", "Add your own API keys"],
|
||||||
|
cta: "Start Now",
|
||||||
|
ctaStyle: "bg-blue-500 hover:bg-blue-600"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Pro",
|
name: "Pro",
|
||||||
price: "$39",
|
price: "$69",
|
||||||
period: "/mo",
|
period: "/mo",
|
||||||
apps: "100",
|
apps: "100",
|
||||||
coverLetters: "100",
|
coverLetters: "100",
|
||||||
@@ -27,17 +41,19 @@ const privatePlans = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Ultra",
|
name: "Ultra",
|
||||||
price: "$69",
|
price: "$149",
|
||||||
period: "/mo",
|
period: "/mo",
|
||||||
apps: "200",
|
apps: "200",
|
||||||
coverLetters: "200",
|
coverLetters: "200",
|
||||||
|
badge: "",
|
||||||
|
highlight: false,
|
||||||
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"],
|
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",
|
name: "Unlimited",
|
||||||
price: "$99",
|
price: "$199",
|
||||||
period: "/mo",
|
period: "/mo",
|
||||||
apps: "Unlimited",
|
apps: "Unlimited",
|
||||||
coverLetters: "Unlimited",
|
coverLetters: "Unlimited",
|
||||||
@@ -56,6 +72,7 @@ const agencyPlans = [
|
|||||||
period: "/mo",
|
period: "/mo",
|
||||||
submissions: "1,000",
|
submissions: "1,000",
|
||||||
clients: "10",
|
clients: "10",
|
||||||
|
badge: "",
|
||||||
highlight: false,
|
highlight: false,
|
||||||
features: ["1,000 job submissions/month", "Up to 10 client profiles", "AI resume tailoring", "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",
|
||||||
@@ -79,6 +96,7 @@ const agencyPlans = [
|
|||||||
period: "/mo",
|
period: "/mo",
|
||||||
submissions: "5,000",
|
submissions: "5,000",
|
||||||
clients: "150",
|
clients: "150",
|
||||||
|
badge: "",
|
||||||
highlight: false,
|
highlight: false,
|
||||||
features: ["5,000 job submissions/month", "Up to 150 client profiles", "AI resume tailoring", "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 Up",
|
cta: "Scale Up",
|
||||||
@@ -98,31 +116,33 @@ const agencyPlans = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
function PlanCard({ plan, type, color }: { plan: any, type: string, color: string }) {
|
function PlanCard({ plan, type }: { plan: any, type: string }) {
|
||||||
const highlightBg = type === "private"
|
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-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"
|
: "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 checkColor = type === "private" ? "text-green-400" : "text-purple-400"
|
||||||
const badgeColor = type === "private" ? "bg-blue-500" : "bg-purple-500"
|
const badgeBg = type === "private" ? "bg-blue-500" : "bg-purple-500"
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`rounded-2xl p-5 border flex flex-col h-full ${plan.highlight ? highlightBg : "bg-slate-700/50 border-slate-600"}`}>
|
<div className={`rounded-2xl p-5 border flex flex-col relative ${plan.highlight ? highlightBg : "bg-slate-700/50 border-slate-600"}`}>
|
||||||
{plan.badge && (
|
{plan.badge && (
|
||||||
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
|
<div className={`absolute -top-3 left-1/2 -translate-x-1/2 z-10`}>
|
||||||
<span className={`px-3 py-1 ${badgeColor} text-white text-xs font-bold rounded-full`}>{plan.badge}</span>
|
<span className={`px-3 py-1 ${badgeBg} text-white text-xs font-bold rounded-full whitespace-nowrap`}>{plan.badge}</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="text-sm text-slate-400 font-medium mb-1">{plan.name}</div>
|
<div className="text-center mb-3">
|
||||||
<div className="flex items-baseline gap-1 mb-1">
|
<div className="text-sm text-slate-400 font-medium mb-1">{plan.name}</div>
|
||||||
<span className="text-3xl font-bold text-white">{plan.price}</span>
|
<div className="flex items-baseline justify-center gap-1 mb-1">
|
||||||
<span className="text-slate-400 text-sm">{plan.period}</span>
|
<span className="text-2xl font-bold text-white">{plan.price}</span>
|
||||||
</div>
|
<span className="text-slate-400 text-xs">{plan.period}</span>
|
||||||
<div className="text-xs text-blue-400 mb-3">
|
</div>
|
||||||
{type === "private"
|
<div className="text-xs text-blue-400/80">
|
||||||
? `${plan.apps} apps • ${plan.coverLetters} cover letters`
|
{type === "private"
|
||||||
: `${plan.submissions} submissions • ${plan.clients} clients`
|
? `${plan.apps} apps • ${plan.coverLetters} letters`
|
||||||
}
|
: `${plan.submissions} submissions • ${plan.clients} clients`
|
||||||
|
}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul className="space-y-1.5 mb-4 flex-grow">
|
<ul className="space-y-1.5 mb-4 flex-grow">
|
||||||
{plan.features.map((f: string) => (
|
{plan.features.map((f: string) => (
|
||||||
@@ -246,11 +266,11 @@ export default function LandingPage() {
|
|||||||
|
|
||||||
{/* Private Plans */}
|
{/* Private Plans */}
|
||||||
{activeTab === "private" && (
|
{activeTab === "private" && (
|
||||||
<div className="space-y-6">
|
<div>
|
||||||
<p className="text-slate-400 mb-6">Every plan includes AI resume tailoring + AI cover letter generation</p>
|
<p className="text-slate-400 mb-6 text-sm">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">
|
<div className="grid grid-cols-2 md:grid-cols-5 gap-4 max-w-5xl mx-auto items-stretch">
|
||||||
{privatePlans.map((plan) => (
|
{privatePlans.map((plan) => (
|
||||||
<PlanCard key={plan.name} plan={plan} type="private" color="blue" />
|
<PlanCard key={plan.name} plan={plan} type="private" />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -258,11 +278,11 @@ export default function LandingPage() {
|
|||||||
|
|
||||||
{/* Agency Plans */}
|
{/* Agency Plans */}
|
||||||
{activeTab === "agency" && (
|
{activeTab === "agency" && (
|
||||||
<div className="space-y-6">
|
<div>
|
||||||
<p className="text-slate-400 mb-6">Manage multiple clients. Hard caps — no unlimited.</p>
|
<p className="text-slate-400 mb-6 text-sm">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">
|
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 max-w-5xl mx-auto items-stretch">
|
||||||
{agencyPlans.map((plan) => (
|
{agencyPlans.map((plan) => (
|
||||||
<PlanCard key={plan.name} plan={plan} type="agency" color="purple" />
|
<PlanCard key={plan.name} plan={plan} type="agency" />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<p className="text-slate-500 text-sm mt-4">All plans have hard submission caps. No unlimited access for agencies.</p>
|
<p className="text-slate-500 text-sm mt-4">All plans have hard submission caps. No unlimited access for agencies.</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user