"use client"; import Link from "next/link"; import { Button } from "@/components/ui/button"; import { ArrowRight, Zap, Bot, Mail, BarChart3, CheckCircle2, Users, Layers, } from "lucide-react"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; export default function Home() { const { data: session } = useSession(); const router = useRouter(); const [offset, setOffset] = useState(0); // Redirect to dashboard if logged in useEffect(() => { if (session?.user) router.push("/dashboard"); }, [session, router]); // Lightweight parallax scroll handler useEffect(() => { const onScroll = () => setOffset(window.scrollY || 0); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); // IntersectionObserver to trigger entrance animations for elements with .animate-on-scroll useEffect(() => { if (typeof window === "undefined") return; const els = Array.from(document.querySelectorAll(".animate-on-scroll")); if (!els.length) return; const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const el = entry.target as HTMLElement; el.classList.add("animate-slide-in-up"); el.classList.remove("opacity-0"); observer.unobserve(el); } }); }, { threshold: 0.12 } ); els.forEach((el) => { el.classList.add("opacity-0"); observer.observe(el); }); return () => observer.disconnect(); }, []); return (
{/* Top nav */} {/* Hero with modern gradients */}
{/* Modern gradient blobs */}
Trusted by 1,200+ sales teams

Automate outreach.
Personalize at scale.

AutoLoop finds leads, enriches profiles, and sends AI-personalized cold emails — all while you focus on closing deals. Powerful integrations, visual workflows, and enterprise-grade reliability.

{/* Features overview */}

Complete outreach stack

Everything you need to source prospects, personalize at scale, and measure impact — built for SDRs and growth teams.

} title="Auto Scraping & Enrichment" description="Continuously discover leads from Google Maps, websites, and social profiles, then enrich records with firmographics and contact data." /> } title="AI Personalization" description="Generate personalized, context-aware email copy for each lead using AI tuned for cold outreach. A/B test variations automatically." /> } title="Gmail & SMTP Integration" description="Send from your Gmail or SMTP provider, track opens/clicks, and record replies in one place. Automatic send throttling and warm-up support." /> } title="Analytics & Insights" description="Campaign-level analytics, funnel metrics, and recipient-level signals to help you optimize subject lines and sequences." /> } title="Visual Workflows" description="Build multi-step automations with a drag-and-drop node editor (scrape → enrich → sequence → notify)." /> } title="Deliverability & Safety" description="Built-in rate limiting, spam-safety checks, unsubscribe handling, and per-account quotas to protect sender reputation." />
{/* How it works */}

How AutoLoop works

  1. Find: Define search criteria and AutoLoop continuously finds new prospects.
  2. Enrich: We append contact details, role, and business data for better personalization.
  3. Personalize: AI crafts tailored outreach using the lead context and your templates.
  4. Send & Measure: Deliver through Gmail/SMTP and measure opens, clicks and replies. Iterate automatically.
Customers
1,200+ teams

AutoLoop runs continuously in the background and surfaces only the leads that match your ideal customer profile.

{/* Testimonials + CTA */}

What customers say

Real teams, real results.

“AutoLoop doubled our booked demos in 6 weeks.”

— Head of Sales, SMB

“The AI emails feel human and convert better than our manual outreach.”

— Growth Lead

“Workflows let us automate complex sequences without engineering.”

— Ops Manager
{/* Footer */}
© {new Date().getFullYear()} AutoLoop — Privacy · Terms
); } function FeatureCard({ icon, title, description, delay = 0, }: { icon: React.ReactNode; title: string; description: string; delay?: number; }) { return (
{icon}

{title}

{description}

); }