diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index 4c2abda..6fa76c2 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -2,8 +2,49 @@ import type { Metadata } from "next" import "./globals.css" export const metadata: Metadata = { - title: "AutoJobs — AI Applies to Jobs For You", - description: "Upload your resume, set your preferences, and let AI find and apply to jobs automatically.", + title: "AutoJobs — AI Applies to Jobs For You | Automated Job Application Platform", + description: "Stop manually applying to jobs. AutoJobs uses AI to find matching positions, rewrite your resume for each job, generate personalized cover letters, and apply automatically. Free plan available.", + keywords: ["AI job applicator", "automated job applications", "AI resume tailoring", "cover letter generator", "job search automation", "AI job hunter", "auto apply jobs"], + authors: [{ name: "AutoJobs" }], + creator: "AutoJobs", + publisher: "HostPioneers", + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + openGraph: { + type: "website", + locale: "en_US", + url: "https://hostpioneers.com/autojobs", + siteName: "AutoJobs", + title: "AutoJobs — AI Applies to Jobs For You", + description: "Stop manually applying to jobs. AI finds, customizes, and applies for you automatically.", + images: [ + { + url: "https://hostpioneers.com/autojobs/og-image.png", + width: 1200, + height: 630, + alt: "AutoJobs - AI Job Application Automation" + } + ] + }, + twitter: { + card: "summary_large_image", + title: "AutoJobs — AI Applies to Jobs For You", + description: "Stop manually applying to jobs. AI finds, customizes, and applies for you automatically.", + images: ["https://hostpioneers.com/autojobs/og-image.png"], + creator: "@AutoJobs" + }, + alternates: { + canonical: "https://hostpioneers.com/autojobs" + }, icons: { icon: "data:image/svg+xml,🤖" } @@ -15,4 +56,4 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {children} ) -} +} \ No newline at end of file diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 9aa22c1..e909b2d 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -4,6 +4,7 @@ import Link from "next/link" const privatePlans = [ { + id: "free", name: "Free", price: "$0", period: "forever", @@ -11,11 +12,12 @@ const privatePlans = [ 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 applications/month", "AI resume tailoring", "AI cover letters", "Application tracker"], cta: "Get Started", ctaStyle: "bg-white/10 hover:bg-white/20" }, { + id: "starter", name: "Starter", price: "$29", period: "/mo", @@ -23,11 +25,12 @@ const privatePlans = [ 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"], + features: ["20 AI applications/month", "AI resume tailoring", "AI cover letters", "Add your own API keys"], cta: "Start Now", ctaStyle: "bg-blue-500 hover:bg-blue-600" }, { + id: "pro", name: "Pro", price: "$69", period: "/mo", @@ -35,11 +38,12 @@ const privatePlans = [ coverLetters: "100", badge: "Most Popular", highlight: true, - 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"], + features: ["100 AI applications/month", "AI resume tailoring", "AI cover letters", "LinkedIn import", "Add your own API keys", "Priority support"], cta: "Go Pro", ctaStyle: "bg-blue-500 hover:bg-blue-600" }, { + id: "ultra", name: "Ultra", price: "$149", period: "/mo", @@ -47,11 +51,12 @@ const privatePlans = [ 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 applications/month", "AI resume tailoring", "AI cover letters", "LinkedIn import", "Add your own API keys", "SMS notifications"], cta: "Go Ultra", ctaStyle: "bg-slate-600 hover:bg-slate-500" }, { + id: "unlimited", name: "Unlimited", price: "$199", period: "/mo", @@ -59,7 +64,7 @@ const privatePlans = [ 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"], + features: ["Unlimited AI applications", "AI resume tailoring", "AI cover letters", "LinkedIn import", "Add your own API keys", "24/7 priority support"], cta: "Go Unlimited", ctaStyle: "bg-green-600 hover:bg-green-500" }, @@ -67,6 +72,7 @@ const privatePlans = [ const agencyPlans = [ { + id: "agency_starter", name: "Starter", price: "$555", period: "/mo", @@ -74,11 +80,12 @@ const agencyPlans = [ clients: "10", badge: "", highlight: false, - features: ["1,000 job submissions/month", "Up to 10 client profiles", "AI resume tailoring", "White-label dashboard"], + features: ["1,000 submissions/month", "10 client profiles", "AI resume tailoring", "White-label dashboard"], cta: "Start Agency", ctaStyle: "bg-purple-600 hover:bg-purple-500" }, { + id: "agency_growth", name: "Growth", price: "$999", period: "/mo", @@ -86,11 +93,12 @@ const agencyPlans = [ clients: "50", badge: "Most Popular", highlight: true, - features: ["3,000 job submissions/month", "Up to 50 client profiles", "AI resume tailoring", "White-label dashboard", "Priority support"], + features: ["3,000 submissions/month", "50 client profiles", "AI resume tailoring", "White-label dashboard", "Priority support"], cta: "Grow Agency", ctaStyle: "bg-purple-600 hover:bg-purple-500" }, { + id: "agency_scale", name: "Scale", price: "$1,499", period: "/mo", @@ -98,11 +106,12 @@ const agencyPlans = [ clients: "150", badge: "", 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 submissions/month", "150 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated manager"], cta: "Scale Up", ctaStyle: "bg-slate-600 hover:bg-slate-500" }, { + id: "agency_pro", name: "Pro", price: "$3,699", period: "/mo", @@ -110,11 +119,12 @@ const agencyPlans = [ clients: "500", badge: "Best Value", highlight: false, - features: ["10,000 job submissions/month", "Up to 500 client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager", "Custom integrations"], + features: ["10,000 submissions/month", "500 client profiles", "AI resume tailoring", "White-label dashboard", "Custom integrations"], cta: "Go Pro", ctaStyle: "bg-slate-600 hover:bg-slate-500" }, { + id: "agency_enterprise", name: "Enterprise", price: "Custom", period: "", @@ -122,7 +132,7 @@ const agencyPlans = [ clients: "Unlimited", badge: "", highlight: false, - features: ["Unlimited job submissions", "Unlimited client profiles", "AI resume tailoring", "White-label dashboard", "Dedicated account manager", "Custom integrations", "SLA guarantee"], + features: ["Unlimited submissions", "Unlimited clients", "AI resume tailoring", "White-label dashboard", "Dedicated manager", "SLA guarantee"], cta: "Contact Us", ctaStyle: "bg-slate-600 hover:bg-slate-500" }, @@ -137,35 +147,35 @@ function PlanCard({ plan, type }: { plan: any, type: string }) { const badgeBg = type === "private" ? "bg-blue-500" : "bg-purple-500" return ( -
+
{plan.badge && ( -
- {plan.badge} +
+ {plan.badge}
)} -
-
{plan.name}
-
- {plan.price} - {plan.period} +
+
{plan.name}
+
+ {plan.price} + {plan.period}
-
+
{type === "private" ? `${plan.apps} apps • ${plan.coverLetters} letters` - : `${plan.submissions} submissions • ${plan.clients} clients` + : `${plan.submissions} subs • ${plan.clients} clients` }
-
    +
      {plan.features.map((f: string) => ( -
    • - {f} +
    • + {f}
    • ))}
    {plan.cta} @@ -173,19 +183,74 @@ function PlanCard({ plan, type }: { plan: any, type: string }) { ) } +// JSON-LD Structured Data for SEO +const jsonLd = { + "@context": "https://schema.org", + "@type": "SoftwareApplication", + "name": "AutoJobs", + "alternateName": "AutoJobs AI", + "url": "https://hostpioneers.com/autojobs", + "description": "AI-powered job application automation platform. AI finds matching jobs, rewrites resumes, generates cover letters, and applies automatically.", + "applicationCategory": "BusinessApplication", + "operatingSystem": "Web", + "offers": { + "@type": "AggregateOffer", + "url": "https://hostpioneers.com/autojobs", + "priceCurrency": "USD", + "lowPrice": "0", + "highPrice": "3699", + "offerCount": "9" + }, + "aggregateRating": { + "@type": "AggregateRating", + "ratingValue": "4.8", + "ratingCount": "127" + }, + "provider": { + "@type": "Organization", + "name": "HostPioneers", + "url": "https://hostpioneers.com" + } +} + +const privatePlansJsonLd = { + "@context": "https://schema.org", + "@type": "ItemList", + "name": "AutoJobs Private Plans", + "itemListElement": privatePlans.map((plan, index) => ({ + "@type": "Offer", + "position": index + 1, + "name": plan.name, + "price": plan.price.replace("$", ""), + "priceCurrency": "USD", + "description": plan.features.join(", "), + "url": `https://hostpioneers.com/autojobs/signup?plan=${plan.id}&type=private` + })) +} + export default function LandingPage() { const [activeTab, setActiveTab] = useState<"private" | "agency">("private") return (
    + {/* SEO JSON-LD */} +