Spaces:
Sleeping
Sleeping
File size: 15,157 Bytes
a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec dadbbff a2da3ec | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | import Link from "next/link";
import {
ShieldCheck, ShieldAlert, Scale, Gavel, ScanText, FileCheck,
TriangleAlert, ArrowRight, Zap, Eye, Download, ChevronRight,
Sparkles, Lock, Globe, Ban, FileX, Stamp, Layers, Tag, AlertTriangle,
ClipboardList, Landmark, Building, BookOpen, CheckCircle, Cpu,
MessageSquare, PenTool, ScanLine
} from "lucide-react";
const CLAUSES = [
{ icon: Scale, name: "Arbitration", desc: "Waives your right to sue in court", severity: "critical" },
{ icon: ShieldAlert, name: "Liability limits", desc: "Company avoids responsibility for damages", severity: "critical" },
{ icon: Ban, name: "Unilateral termination", desc: "They can close your account without reason", severity: "critical" },
{ icon: FileX, name: "Unilateral change", desc: "Terms can change without your consent", severity: "high" },
{ icon: Eye, name: "Content removal", desc: "Your content deleted without notice", severity: "high" },
{ icon: Globe, name: "Jurisdiction", desc: "Disputes handled in their preferred court", severity: "medium" },
{ icon: Gavel, name: "Choice of law", desc: "Foreign law overrides your local protections", severity: "medium" },
{ icon: Lock, name: "IP Ownership", desc: "Intellectual property transferred entirely", severity: "critical" },
{ icon: Layers, name: "41 CUAD Categories", desc: "Full taxonomy: NDA, MSA, SLA, and more", severity: "low" },
{ icon: Tag, name: "ML Legal NER", desc: "Extract parties, dates, money, jurisdictions via Legal-BERT", severity: "low" },
{ icon: AlertTriangle, name: "NLI Contradictions", desc: "Detect conflicting clauses with DeBERTa-v3 NLI model", severity: "high" },
{ icon: ClipboardList, name: "Obligations", desc: "Track monetary, compliance, reporting tasks with priority", severity: "medium" },
{ icon: Landmark, name: "Compliance", desc: "GDPR, CCPA, SOX, HIPAA, FINRA with negation detection", severity: "high" },
{ icon: BookOpen, name: "Compare Contracts", desc: "Semantic similarity with sentence embeddings", severity: "low" },
{ icon: PenTool, name: "Clause Redlining", desc: "AI suggests safer alternatives with legal citations", severity: "critical" },
{ icon: MessageSquare, name: "Q&A Chatbot", desc: "Ask questions about your contract — RAG-powered answers", severity: "medium" },
{ icon: ScanLine, name: "OCR for Scanned PDFs", desc: "docTR engine auto-detects and OCRs scanned contracts", severity: "low" },
{ icon: Cpu, name: "6 AI Models", desc: "Legal-BERT, NER, NLI, Embeddings, OCR, Qwen2.5-7B LLM", severity: "low" },
];
const STEPS = [
{ icon: Download, title: "Upload or paste", desc: "Drop a PDF (even scanned!), DOCX, or paste contract text directly." },
{ icon: ScanText, title: "6 AI models analyze", desc: "Legal-BERT + NER + NLI + OCR + Embeddings + LLM scan your contract." },
{ icon: TriangleAlert, title: "Get precise insights", desc: "Risk score, redlining, Q&A chatbot, contradictions, obligations, and compliance." },
];
const PRICING = [
{
name: "Free", price: "0", period: "", highlight: false, cta: "Get started",
features: ["10 scans per month", "41 clause categories", "Risk scoring", "ML Legal NER", "NLI contradiction detection", "Compliance with negation detection", "Clause redlining suggestions", "OCR for scanned PDFs"],
},
{
name: "Pro", price: "999", period: "/mo", highlight: true, cta: "Start free trial",
features: ["Unlimited scans", "Upload PDF/DOCX files", "Contract comparison", "Q&A Chatbot (RAG)", "AI clause explanations", "LLM-refined redlining", "Scan history", "PDF report export", "Obligation tracker with priority", "Priority support"],
},
{
name: "Team", price: "3,999", period: "/mo", highlight: false, cta: "Talk to us",
features: ["Everything in Pro", "5 team seats", "10,000 API calls", "Shared dashboard", "Slack support", "Custom clause rules", "Enterprise compliance"],
},
];
const sevColor: Record<string, string> = {
critical: "text-red-500 bg-red-50 border-red-200",
high: "text-amber-500 bg-amber-50 border-amber-200",
medium: "text-blue-500 bg-blue-50 border-blue-200",
low: "text-emerald-500 bg-emerald-50 border-emerald-200",
};
export default function Home() {
return (
<main className="min-h-screen bg-white text-zinc-900">
{/* Hero */}
<section className="max-w-6xl mx-auto px-4 sm:px-6 pt-16 sm:pt-24 pb-16 sm:pb-20">
<div className="max-w-2xl">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-zinc-200 text-[13px] text-zinc-500 mb-6">
<Sparkles className="w-3.5 h-3.5 text-zinc-400" />
6 AI models · 41 clause categories · RAG chatbot · clause redlining · OCR
</div>
<h1 className="text-3xl sm:text-[42px] lg:text-5xl font-semibold tracking-tight leading-[1.1]">
Know what you are<br className="hidden sm:block" /> agreeing to
</h1>
<p className="mt-5 text-base sm:text-[17px] text-zinc-500 leading-relaxed max-w-lg">
ClauseGuard scans contracts using 6 AI models. Get clause detection, risk scoring,
safer alternatives, Q&A chatbot, OCR for scanned PDFs, and compliance checks.
</p>
<div className="mt-8 flex flex-col sm:flex-row gap-3">
<Link href="/dashboard-pages/analyze" className="inline-flex items-center justify-center gap-2 bg-zinc-900 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:bg-zinc-800 transition-colors">
<ScanText className="w-4 h-4" />Try the scanner
</Link>
<Link href="/dashboard-pages/compare" className="inline-flex items-center justify-center gap-2 border border-zinc-200 px-5 py-2.5 rounded-lg text-sm font-medium hover:bg-zinc-50 transition-colors">
Compare contracts<ArrowRight className="w-4 h-4" />
</Link>
</div>
<p className="mt-4 text-xs text-zinc-400">No account needed for free tier. 10 scans/month.</p>
</div>
</section>
{/* Features */}
<section id="features" className="border-t border-zinc-100">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-20">
<div className="flex items-center gap-2 mb-2">
<ShieldCheck className="w-4 h-4 text-zinc-400" />
<p className="text-[13px] font-medium text-zinc-400 uppercase tracking-wider">Detection</p>
</div>
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight">18 powerful analysis features</h2>
<p className="mt-2 text-zinc-500 text-sm sm:text-[15px] max-w-lg">
Based on the CUAD taxonomy + CLAUDETTE framework. Now with RAG chatbot, clause redlining, and OCR.
</p>
<div className="mt-8 sm:mt-10 grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-2 sm:gap-3">
{CLAUSES.map((c) => (
<div key={c.name} className="group border border-zinc-100 rounded-xl p-3 sm:p-4 hover:border-zinc-200 hover:shadow-sm transition-all cursor-default">
<div className={`w-7 h-7 sm:w-8 sm:h-8 rounded-lg flex items-center justify-center border ${sevColor[c.severity]}`}>
<c.icon className="w-3.5 h-3.5 sm:w-4 sm:h-4" />
</div>
<p className="mt-2.5 sm:mt-3 text-xs sm:text-sm font-medium">{c.name}</p>
<p className="mt-0.5 sm:mt-1 text-[11px] sm:text-[13px] text-zinc-500 leading-relaxed">{c.desc}</p>
</div>
))}
</div>
</div>
</section>
{/* How it works */}
<section className="border-t border-zinc-100 bg-zinc-50/50">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-20">
<div className="flex items-center gap-2 mb-2">
<Zap className="w-4 h-4 text-zinc-400" />
<p className="text-[13px] font-medium text-zinc-400 uppercase tracking-wider">How it works</p>
</div>
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight">Three steps, under 30 seconds</h2>
<div className="mt-8 sm:mt-10 grid sm:grid-cols-3 gap-6 sm:gap-8">
{STEPS.map((s, i) => (
<div key={s.title} className="relative">
<div className="w-10 h-10 rounded-xl bg-white border border-zinc-200 flex items-center justify-center shadow-sm">
<s.icon className="w-5 h-5 text-zinc-600" />
</div>
<h3 className="mt-4 text-[15px] font-medium">{s.title}</h3>
<p className="mt-1.5 text-[13px] text-zinc-500 leading-relaxed">{s.desc}</p>
{i < 2 && <ChevronRight className="hidden sm:block absolute top-4 -right-5 w-4 h-4 text-zinc-300" />}
</div>
))}
</div>
</div>
</section>
{/* Technology */}
<section className="border-t border-zinc-100">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-20">
<div className="flex items-center gap-2 mb-2">
<Cpu className="w-4 h-4 text-zinc-400" />
<p className="text-[13px] font-medium text-zinc-400 uppercase tracking-wider">Technology</p>
</div>
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight">Built on 6 production AI models</h2>
<div className="mt-8 grid sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4">
{[
{ name: "Legal-BERT Classifier", icon: Cpu, desc: "LoRA fine-tuned on 41 CUAD categories with sigmoid multi-label classification", source: "Mokshith31/legalbert-contract-clause-classification" },
{ name: "Legal-BERT NER", icon: Tag, desc: "Named entity recognition for parties, dates, money, jurisdictions", source: "matterstack/legal-bert-ner" },
{ name: "DeBERTa-v3 NLI", icon: AlertTriangle, desc: "Semantic contradiction detection between clause pairs", source: "cross-encoder/nli-deberta-v3-base" },
{ name: "RAG Chatbot", icon: MessageSquare, desc: "Embedding retrieval + Qwen2.5-7B LLM for contract Q&A", source: "all-MiniLM-L6-v2 + Qwen/Qwen2.5-7B-Instruct" },
{ name: "Clause Redlining", icon: PenTool, desc: "18+ legal templates + LLM refinement for safer clause alternatives", source: "FTC/EU/CFPB standards + Qwen2.5-7B" },
{ name: "docTR OCR", icon: ScanLine, desc: "Smart PDF router: auto-detects scanned PDFs and extracts text", source: "docTR fast_base + crnn_vgg16_bn" },
].map((m) => (
<div key={m.name} className="border border-zinc-100 rounded-xl p-4 hover:border-zinc-200 hover:shadow-sm transition-all">
<div className="flex items-center gap-2 mb-2">
<m.icon className="w-4 h-4 text-zinc-400" />
<p className="text-sm font-medium text-zinc-900">{m.name}</p>
</div>
<p className="text-[13px] text-zinc-500 leading-relaxed">{m.desc}</p>
<p className="text-[11px] text-zinc-400 mt-2 font-mono">{m.source}</p>
</div>
))}
</div>
</div>
</section>
{/* Pricing */}
<section id="pricing" className="border-t border-zinc-100">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-20">
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight">Pricing</h2>
<p className="mt-2 text-zinc-500 text-sm sm:text-[15px]">Free forever. Upgrade when you need more.</p>
<div className="mt-8 sm:mt-10 grid sm:grid-cols-3 gap-4 sm:gap-5 max-w-4xl">
{PRICING.map((plan) => (
<div key={plan.name} className={`rounded-xl p-5 sm:p-6 transition-shadow ${plan.highlight ? "border-2 border-zinc-900 shadow-sm" : "border border-zinc-200"}`}>
<p className="text-[13px] font-medium text-zinc-400">{plan.name}</p>
<p className="mt-2 flex items-baseline gap-1">
<span className="text-[11px] text-zinc-400">INR</span>
<span className="text-2xl sm:text-3xl font-semibold tracking-tight">{plan.price}</span>
<span className="text-sm text-zinc-400">{plan.period}</span>
</p>
<ul className="mt-5 space-y-2.5">
{plan.features.map((f) => (
<li key={f} className="flex items-start gap-2.5 text-[13px] text-zinc-600">
<FileCheck className="w-3.5 h-3.5 text-zinc-300 mt-0.5 shrink-0" />{f}
</li>
))}
</ul>
<Link href={plan.name === "Free" ? "/auth/signup" : plan.name === "Team" ? "mailto:hello@clauseguardweb.netlify.app" : "/auth/signup"}
className={`mt-6 block w-full py-2.5 rounded-lg text-[13px] font-medium text-center transition-colors ${plan.highlight ? "bg-zinc-900 text-white hover:bg-zinc-800" : "border border-zinc-200 text-zinc-700 hover:bg-zinc-50"}`}>
{plan.cta}
</Link>
</div>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="border-t border-zinc-100 bg-zinc-50/50">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-12 sm:py-16 text-center">
<Lock className="w-6 h-6 text-zinc-300 mx-auto mb-4" />
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight">Read the fine print without reading it</h2>
<p className="mt-2 text-sm sm:text-[15px] text-zinc-500 max-w-md mx-auto">Join thousands protecting themselves before clicking accept.</p>
<div className="mt-6 flex flex-col sm:flex-row gap-3 justify-center">
<Link href="/auth/signup" className="inline-flex items-center justify-center gap-2 bg-zinc-900 text-white px-6 py-3 rounded-lg text-sm font-medium hover:bg-zinc-800 transition-colors">
<ScanText className="w-4 h-4" />Get started free
</Link>
<Link href="/dashboard-pages/compare" className="inline-flex items-center justify-center gap-2 border border-zinc-200 px-6 py-3 rounded-lg text-sm font-medium hover:bg-zinc-50 transition-colors">
<ArrowRight className="w-4 h-4" />Compare contracts
</Link>
</div>
</div>
</section>
{/* Footer */}
<footer className="border-t border-zinc-100">
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-8 flex flex-col sm:flex-row justify-between items-center gap-4">
<div className="flex items-center gap-2">
<ShieldCheck className="w-4 h-4 text-zinc-300" />
<span className="text-[13px] text-zinc-400">ClauseGuard v4.0 — not legal advice</span>
</div>
<div className="flex gap-5 text-[13px] text-zinc-400">
<Link href="/privacy" className="hover:text-zinc-600">Privacy</Link>
<Link href="/terms" className="hover:text-zinc-600">Terms</Link>
<a href="mailto:hello@clauseguardweb.netlify.app" className="hover:text-zinc-600">Contact</a>
</div>
</div>
</footer>
</main>
);
}
|