From a83b22fc02a3444ea91fbd45be7039e8659b1f7f Mon Sep 17 00:00:00 2001 From: Horus AI Date: Mon, 13 Apr 2026 20:10:42 +0200 Subject: [PATCH] Toggle switch: Job Seeker vs Agency plans, new pricing: Free/Pro/Ultra/Unlimited (/usr/bin/bash/9/9/9), aligned cards, LinkedIn integrated --- backend/main.py | 8 +- frontend/app/page.tsx | 350 ++++++++++++++++++++++-------------------- 2 files changed, 185 insertions(+), 173 deletions(-) diff --git a/backend/main.py b/backend/main.py index b34a7fc..1f1110b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -19,10 +19,10 @@ router = APIRouter(prefix="/autojobs/api") # --- Plans & Pricing --- # Private User Plans (job seekers) PRIVATE_PLANS = { - "free": {"name": "Free", "applications": 5, "ai_customize": 5, "price": 0}, - "starter": {"name": "Starter", "applications": 50, "ai_customize": 50, "price": 9}, - "pro": {"name": "Pro", "applications": 100, "ai_customize": 100, "price": 39}, - "ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "price": 69}, + "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}, + "ultra": {"name": "Ultra", "applications": 200, "ai_customize": 200, "cover_letters": 200, "price": 69}, + "unlimited": {"name": "Unlimited", "applications": 99999, "ai_customize": 99999, "cover_letters": 99999, "price": 99}, } # Alias for backwards compatibility diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index df0d525..47c9252 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -1,3 +1,5 @@ +"use client" +import { useState } from "react" import Link from "next/link" const privatePlans = [ @@ -6,27 +8,20 @@ const privatePlans = [ price: "$0", period: "forever", 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", 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", price: "$39", period: "/mo", apps: "100", + coverLetters: "100", badge: "Most Popular", 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", ctaStyle: "bg-blue-500 hover:bg-blue-600" }, @@ -35,10 +30,23 @@ const privatePlans = [ price: "$69", period: "/mo", 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", 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 = [ @@ -48,9 +56,8 @@ const agencyPlans = [ period: "/mo", submissions: "1,000", clients: "10", - badge: "", 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", ctaStyle: "bg-purple-600 hover:bg-purple-500" }, @@ -60,10 +67,10 @@ const agencyPlans = [ period: "/mo", submissions: "3,000", clients: "50", - badge: "", + badge: "Most Popular", highlight: true, - features: ["3,000 submissions/month", "50 client profiles", "White-label dashboard", "Priority support"], - cta: "Grow", + features: ["3,000 job submissions/month", "Up to 50 client profiles", "AI resume tailoring", "White-label dashboard", "Priority support"], + cta: "Grow Agency", ctaStyle: "bg-purple-600 hover:bg-purple-500" }, { @@ -72,10 +79,9 @@ const agencyPlans = [ period: "/mo", submissions: "5,000", clients: "150", - badge: "", highlight: false, - features: ["5,000 submissions/month", "150 client profiles", "White-label dashboard", "Dedicated account manager"], - cta: "Scale", + features: ["5,000 job submissions/month", "Up to 150 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager"], + cta: "Scale Up", ctaStyle: "bg-slate-600 hover:bg-slate-500" }, { @@ -84,15 +90,60 @@ const agencyPlans = [ period: "/mo", submissions: "10,000", clients: "500", - badge: "", + badge: "Max Cap", highlight: false, - features: ["10,000 submissions/month", "500 client profiles", "White-label dashboard", "Dedicated account manager", "Custom integrations"], - cta: "Enterprise", + features: ["10,000 job submissions/month", "Up to 500 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager", "Custom integrations"], + cta: "Get Enterprise", 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 ( +
+ {plan.badge && ( +
+ {plan.badge} +
+ )} +
{plan.name}
+
+ {plan.price} + {plan.period} +
+
+ {type === "private" + ? `${plan.apps} apps • ${plan.coverLetters} cover letters` + : `${plan.submissions} submissions • ${plan.clients} clients` + } +
+ + + {plan.cta} + +
+ ) +} + export default function LandingPage() { + const [activeTab, setActiveTab] = useState<"private" | "agency">("private") + return (
{/* Nav */} @@ -100,190 +151,151 @@ export default function LandingPage() {
AutoJobs
-
- - Login - - +
+ + Get Started
{/* Hero */} -
+
AI-Powered Job Application Automation
-

+

Stop Manually Applying.
Let AI Handle It.

-

- 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.

-
+
Start Free — 5 Applications - +
{/* How It Works */} +
+
+

How It Works

+
+ {[ + { 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) => ( +
+
{item.step}
+

{item.title}

+

{item.desc}

+
+ ))} +
+
+
+ + {/* Pricing Toggle + Plans */} +
+
+

Choose Your Plan

+ + {/* Toggle Switch */} +
+ + +
+ + {/* Private Plans */} + {activeTab === "private" && ( +
+

Every plan includes AI resume tailoring + AI cover letter generation

+
+ {privatePlans.map((plan) => ( + + ))} +
+
+ )} + + {/* Agency Plans */} + {activeTab === "agency" && ( +
+

Manage multiple clients. Hard caps — no unlimited.

+
+ {agencyPlans.map((plan) => ( + + ))} +
+

All plans have hard submission caps. No unlimited access for agencies.

+
+ )} +
+
+ + {/* Features */}
-

How It Works

-
+

Everything You Need

+
{[ - { - step: "01", - title: "Create Your Profile", - desc: "Upload your resume. Connect your LinkedIn. Tell us what jobs you want — keywords, location, salary range." - }, - { - step: "02", - title: "AI Finds & Customizes", - desc: "We search across multiple job boards. For each match, AI rewrites your resume and writes a personalized cover letter." - }, - { - step: "03", - title: "Apply & Track", - desc: "Apply with one click or let AI apply automatically. Track every application status in your dashboard." - } - ].map((item) => ( -
-
{item.step}
-

{item.title}

-

{item.desc}

+ { icon: "🎯", title: "AI Resume Tailoring", desc: "Every resume rewritten to match job description keywords" }, + { icon: "✉️", title: "AI Cover Letters", desc: "Personalized cover letter for each company" }, + { icon: "🔍", title: "Multi-Source Search", desc: "Jooble, JSearch aggregated and deduplicated" }, + { 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" }, + ].map((f) => ( +
+
{f.icon}
+

{f.title}

+

{f.desc}

))}
- {/* Private Plans */} -
-
-

For Job Seekers

-

Choose your monthly application limit

- -
- {privatePlans.map((plan) => ( -
- {plan.badge && ( -
- {plan.badge} -
- )} -
{plan.name}
-
- {plan.price} - {plan.period} -
-
{plan.apps} apps/month
-
    - {plan.features.map((f) => ( -
  • - {f} -
  • - ))} -
- - {plan.cta} - -
- ))} -
- -
- - - - Login with LinkedIn — import your saved resumes automatically -
-
-
- - {/* Agency Plans */} -
-
-
- For Recruiting Agencies -
-

Agency Plans

-

Manage multiple clients. Each plan has a hard submission cap — no unlimited.

- -
- {agencyPlans.map((plan) => ( -
- {plan.badge && ( -
- {plan.badge} -
- )} -
Agency {plan.name}
-
- {plan.price} - {plan.period} -
-
{plan.submissions} submissions • {plan.clients} clients
-
    - {plan.features.map((f) => ( -
  • - {f} -
  • - ))} -
- - {plan.cta} - -
- ))} -
- -
- All plans have hard caps. No unlimited access for agencies. -
-
-
- {/* Footer */} -