gaurv007 commited on
Commit
a2da3ec
·
verified ·
1 Parent(s): de12cf0

v3.0: Upload web/app/page.tsx — zero emojis, Lucide icons, responsive

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