HuggingFatties commited on
Commit
52b2c59
·
verified ·
1 Parent(s): ed48ee4

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +713 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Donotpay
3
- emoji: 🐢
4
- colorFrom: gray
5
- colorTo: gray
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: donotpay
3
+ emoji: 🐳
4
+ colorFrom: purple
5
+ colorTo: green
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,713 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>DoNotPay - The World's First Robot Lawyer</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #6e8efb 0%, #a777e3 100%);
12
+ }
13
+ .card-hover:hover {
14
+ transform: translateY(-5px);
15
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
16
+ }
17
+ .chat-bubble {
18
+ border-radius: 20px 20px 20px 0;
19
+ }
20
+ .user-bubble {
21
+ border-radius: 20px 20px 0 20px;
22
+ }
23
+ .fade-in {
24
+ animation: fadeIn 0.5s ease-in-out;
25
+ }
26
+ @keyframes fadeIn {
27
+ from { opacity: 0; transform: translateY(10px); }
28
+ to { opacity: 1; transform: translateY(0); }
29
+ }
30
+ .document-preview {
31
+ border: 2px dashed #a777e3;
32
+ background-color: #f9fafb;
33
+ }
34
+ </style>
35
+ </head>
36
+ <body class="font-sans bg-gray-50">
37
+ <!-- Navigation -->
38
+ <nav class="bg-white shadow-sm">
39
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
40
+ <div class="flex justify-between h-16">
41
+ <div class="flex items-center">
42
+ <div class="flex-shrink-0 flex items-center">
43
+ <i class="fas fa-robot text-purple-600 text-2xl mr-2"></i>
44
+ <span class="text-xl font-bold text-gray-900">DoNotPay</span>
45
+ </div>
46
+ <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
47
+ <a href="#" class="border-purple-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
48
+ <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Services</a>
49
+ <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Success Stories</a>
50
+ <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">About</a>
51
+ </div>
52
+ </div>
53
+ <div class="hidden sm:ml-6 sm:flex sm:items-center">
54
+ <button class="bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-md text-sm font-medium transition duration-150 ease-in-out">Sign In</button>
55
+ </div>
56
+ <div class="-mr-2 flex items-center sm:hidden">
57
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-purple-500">
58
+ <span class="sr-only">Open main menu</span>
59
+ <i class="fas fa-bars"></i>
60
+ </button>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </nav>
65
+
66
+ <!-- Hero Section -->
67
+ <div class="gradient-bg text-white">
68
+ <div class="max-w-7xl mx-auto py-16 px-4 sm:py-24 sm:px-6 lg:px-8">
69
+ <div class="text-center">
70
+ <h1 class="text-4xl font-extrabold tracking-tight sm:text-5xl lg:text-6xl">
71
+ Fight Corporations, Beat Bureaucracy
72
+ </h1>
73
+ <p class="mt-6 max-w-3xl mx-auto text-xl">
74
+ The world's first robot lawyer that helps you fight parking tickets, sue robocallers, and more - all for free.
75
+ </p>
76
+ <div class="mt-10 flex justify-center space-x-4">
77
+ <a href="#" class="bg-white text-purple-600 px-6 py-3 rounded-md text-base font-medium hover:bg-gray-100 transition duration-150 ease-in-out">
78
+ Get Started
79
+ </a>
80
+ <a href="#" class="bg-purple-800 text-white px-6 py-3 rounded-md text-base font-medium hover:bg-purple-700 transition duration-150 ease-in-out">
81
+ Watch Demo
82
+ </a>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- Features Section -->
89
+ <div class="py-12 bg-white">
90
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
91
+ <div class="lg:text-center">
92
+ <h2 class="text-base text-purple-600 font-semibold tracking-wide uppercase">Services</h2>
93
+ <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 sm:text-4xl">
94
+ What can DoNotPay help you with?
95
+ </p>
96
+ </div>
97
+
98
+ <div class="mt-10">
99
+ <div class="grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-3">
100
+ <!-- Feature 1 -->
101
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
102
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
103
+ <i class="fas fa-car"></i>
104
+ </div>
105
+ <div class="mt-5">
106
+ <h3 class="text-lg font-medium text-gray-900">Fight Parking Tickets</h3>
107
+ <p class="mt-2 text-base text-gray-500">
108
+ Automatically generate appeal letters to fight unfair parking tickets with a 70% success rate.
109
+ </p>
110
+ </div>
111
+ </div>
112
+
113
+ <!-- Feature 2 -->
114
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
115
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
116
+ <i class="fas fa-phone-slash"></i>
117
+ </div>
118
+ <div class="mt-5">
119
+ <h3 class="text-lg font-medium text-gray-900">Sue Robocallers</h3>
120
+ <p class="mt-2 text-base text-gray-500">
121
+ Get compensation from illegal robocalls by automatically generating small claims court filings.
122
+ </p>
123
+ </div>
124
+ </div>
125
+
126
+ <!-- Feature 3 -->
127
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
128
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
129
+ <i class="fas fa-home"></i>
130
+ </div>
131
+ <div class="mt-5">
132
+ <h3 class="text-lg font-medium text-gray-900">Housing Issues</h3>
133
+ <p class="mt-2 text-base text-gray-500">
134
+ Fight evictions, security deposit disputes, and get repairs done by your landlord.
135
+ </p>
136
+ </div>
137
+ </div>
138
+
139
+ <!-- Feature 4 -->
140
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
141
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
142
+ <i class="fas fa-credit-card"></i>
143
+ </div>
144
+ <div class="mt-5">
145
+ <h3 class="text-lg font-medium text-gray-900">Cancel Subscriptions</h3>
146
+ <p class="mt-2 text-base text-gray-500">
147
+ Automatically generate cancellation letters for gym memberships and other difficult-to-cancel services.
148
+ </p>
149
+ </div>
150
+ </div>
151
+
152
+ <!-- Feature 5 -->
153
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
154
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
155
+ <i class="fas fa-plane"></i>
156
+ </div>
157
+ <div class="mt-5">
158
+ <h3 class="text-lg font-medium text-gray-900">Flight Compensation</h3>
159
+ <p class="mt-2 text-base text-gray-500">
160
+ Get compensation for delayed or canceled flights under EU and US regulations.
161
+ </p>
162
+ </div>
163
+ </div>
164
+
165
+ <!-- Feature 6 -->
166
+ <div class="bg-gray-50 p-6 rounded-lg shadow-sm transition duration-150 ease-in-out card-hover">
167
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-purple-500 text-white">
168
+ <i class="fas fa-university"></i>
169
+ </div>
170
+ <div class="mt-5">
171
+ <h3 class="text-lg font-medium text-gray-900">Small Claims Court</h3>
172
+ <p class="mt-2 text-base text-gray-500">
173
+ Automatically generate court filings to sue companies in small claims court without a lawyer.
174
+ </p>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+ </div>
181
+
182
+ <!-- Demo Chat Section -->
183
+ <div class="bg-gray-100 py-16">
184
+ <div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
185
+ <div class="text-center">
186
+ <h2 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">
187
+ How it works
188
+ </h2>
189
+ <p class="mt-4 text-lg text-gray-600">
190
+ Our AI-powered chatbot guides you through the process step by step.
191
+ </p>
192
+ </div>
193
+
194
+ <div class="mt-10 bg-white rounded-xl shadow-md overflow-hidden">
195
+ <div class="p-4 bg-purple-600 text-white">
196
+ <div class="flex items-center">
197
+ <div class="flex-shrink-0 h-8 w-8 rounded-full bg-purple-300 flex items-center justify-center">
198
+ <i class="fas fa-robot text-purple-700"></i>
199
+ </div>
200
+ <div class="ml-3">
201
+ <p class="text-sm font-medium">DoNotPay Bot</p>
202
+ </div>
203
+ </div>
204
+ </div>
205
+
206
+ <div class="p-4 h-96 overflow-y-auto" id="chat-container">
207
+ <!-- Chat messages will be inserted here by JavaScript -->
208
+ </div>
209
+
210
+ <div class="border-t border-gray-200 p-4 bg-gray-50">
211
+ <div class="flex rounded-md shadow-sm">
212
+ <input type="text" id="chat-input" class="flex-1 min-w-0 block w-full px-3 py-2 rounded-none rounded-l-md border-gray-300 focus:ring-purple-500 focus:border-purple-500 sm:text-sm" placeholder="Type your message...">
213
+ <button onclick="sendMessage()" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-r-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500">
214
+ Send
215
+ </button>
216
+ </div>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ </div>
221
+
222
+ <!-- Document Generator (Hidden by default) -->
223
+ <div id="document-generator" class="hidden bg-white py-16">
224
+ <div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
225
+ <div class="text-center">
226
+ <h2 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">
227
+ Your Generated Document
228
+ </h2>
229
+ <p class="mt-4 text-lg text-gray-600">
230
+ Review and download your automatically generated legal document
231
+ </p>
232
+ </div>
233
+
234
+ <div class="mt-10 document-preview p-6 rounded-lg">
235
+ <div class="text-right mb-4">
236
+ <button onclick="downloadDocument()" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700">
237
+ <i class="fas fa-download mr-2"></i> Download
238
+ </button>
239
+ </div>
240
+ <div id="document-content" class="p-4 bg-white">
241
+ <!-- Document content will be inserted here -->
242
+ </div>
243
+ </div>
244
+ </div>
245
+ </div>
246
+
247
+ <!-- Testimonials -->
248
+ <div class="bg-white py-16">
249
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
250
+ <div class="lg:text-center">
251
+ <h2 class="text-base text-purple-600 font-semibold tracking-wide uppercase">Success Stories</h2>
252
+ <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 sm:text-4xl">
253
+ What our users say
254
+ </p>
255
+ </div>
256
+
257
+ <div class="mt-10 grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3">
258
+ <!-- Testimonial 1 -->
259
+ <div class="bg-gray-50 p-6 rounded-lg">
260
+ <div class="flex items-center">
261
+ <div class="flex-shrink-0">
262
+ <img class="h-12 w-12 rounded-full" src="https://randomuser.me/api/portraits/women/32.jpg" alt="">
263
+ </div>
264
+ <div class="ml-4">
265
+ <h4 class="text-sm font-bold text-gray-900">Sarah J.</h4>
266
+ <div class="flex mt-1">
267
+ <i class="fas fa-star text-yellow-400"></i>
268
+ <i class="fas fa-star text-yellow-400"></i>
269
+ <i class="fas fa-star text-yellow-400"></i>
270
+ <i class="fas fa-star text-yellow-400"></i>
271
+ <i class="fas fa-star text-yellow-400"></i>
272
+ </div>
273
+ </div>
274
+ </div>
275
+ <div class="mt-4">
276
+ <p class="text-gray-600 italic">
277
+ "I used DoNotPay to fight an unfair parking ticket. The bot generated a perfect appeal letter and the ticket was dismissed within a week. Saved me $120!"
278
+ </p>
279
+ </div>
280
+ </div>
281
+
282
+ <!-- Testimonial 2 -->
283
+ <div class="bg-gray-50 p-6 rounded-lg">
284
+ <div class="flex items-center">
285
+ <div class="flex-shrink-0">
286
+ <img class="h-12 w-12 rounded-full" src="https://randomuser.me/api/portraits/men/45.jpg" alt="">
287
+ </div>
288
+ <div class="ml-4">
289
+ <h4 class="text-sm font-bold text-gray-900">Michael T.</h4>
290
+ <div class="flex mt-1">
291
+ <i class="fas fa-star text-yellow-400"></i>
292
+ <i class="fas fa-star text-yellow-400"></i>
293
+ <i class="fas fa-star text-yellow-400"></i>
294
+ <i class="fas fa-star text-yellow-400"></i>
295
+ <i class="fas fa-star text-yellow-400"></i>
296
+ </div>
297
+ </div>
298
+ </div>
299
+ <div class="mt-4">
300
+ <p class="text-gray-600 italic">
301
+ "After months of trying to cancel my gym membership, DoNotPay generated a cancellation letter that worked immediately. No more $40/month charges!"
302
+ </p>
303
+ </div>
304
+ </div>
305
+
306
+ <!-- Testimonial 3 -->
307
+ <div class="bg-gray-50 p-6 rounded-lg">
308
+ <div class="flex items-center">
309
+ <div class="flex-shrink-0">
310
+ <img class="h-12 w-12 rounded-full" src="https://randomuser.me/api/portraits/women/68.jpg" alt="">
311
+ </div>
312
+ <div class="ml-4">
313
+ <h4 class="text-sm font-bold text-gray-900">Lisa M.</h4>
314
+ <div class="flex mt-1">
315
+ <i class="fas fa-star text-yellow-400"></i>
316
+ <i class="fas fa-star text-yellow-400"></i>
317
+ <i class="fas fa-star text-yellow-400"></i>
318
+ <i class="fas fa-star text-yellow-400"></i>
319
+ <i class="fas fa-star text-yellow-400"></i>
320
+ </div>
321
+ </div>
322
+ </div>
323
+ <div class="mt-4">
324
+ <p class="text-gray-600 italic">
325
+ "I sued a robocaller using DoNotPay's automated small claims process and won $1,500! The whole process took less than 15 minutes."
326
+ </p>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </div>
332
+
333
+ <!-- CTA Section -->
334
+ <div class="gradient-bg">
335
+ <div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8 lg:flex lg:items-center lg:justify-between">
336
+ <h2 class="text-3xl font-extrabold tracking-tight text-white sm:text-4xl">
337
+ <span class="block">Ready to fight back?</span>
338
+ <span class="block text-purple-200">Join over 1 million users today.</span>
339
+ </h2>
340
+ <div class="mt-8 flex lg:mt-0 lg:flex-shrink-0">
341
+ <div class="inline-flex rounded-md shadow">
342
+ <a href="#" class="inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-purple-600 bg-white hover:bg-gray-50">
343
+ Get Started
344
+ </a>
345
+ </div>
346
+ <div class="ml-3 inline-flex rounded-md shadow">
347
+ <a href="#" class="inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-purple-800 hover:bg-purple-700">
348
+ Learn More
349
+ </a>
350
+ </div>
351
+ </div>
352
+ </div>
353
+ </div>
354
+
355
+ <!-- Footer -->
356
+ <footer class="bg-gray-800">
357
+ <div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8">
358
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-8">
359
+ <div>
360
+ <h3 class="text-sm font-semibold text-gray-300 tracking-wider uppercase">Company</h3>
361
+ <ul class="mt-4 space-y-4">
362
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">About</a></li>
363
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Careers</a></li>
364
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Press</a></li>
365
+ </ul>
366
+ </div>
367
+ <div>
368
+ <h3 class="text-sm font-semibold text-gray-300 tracking-wider uppercase">Legal</h3>
369
+ <ul class="mt-4 space-y-4">
370
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Privacy</a></li>
371
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Terms</a></li>
372
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Disclaimers</a></li>
373
+ </ul>
374
+ </div>
375
+ <div>
376
+ <h3 class="text-sm font-semibold text-gray-300 tracking-wider uppercase">Support</h3>
377
+ <ul class="mt-4 space-y-4">
378
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Help Center</a></li>
379
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Contact Us</a></li>
380
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Status</a></li>
381
+ </ul>
382
+ </div>
383
+ <div>
384
+ <h3 class="text-sm font-semibold text-gray-300 tracking-wider uppercase">Connect</h3>
385
+ <ul class="mt-4 space-y-4">
386
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Twitter</a></li>
387
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Facebook</a></li>
388
+ <li><a href="#" class="text-base text-gray-400 hover:text-white">Instagram</a></li>
389
+ </ul>
390
+ </div>
391
+ </div>
392
+ <div class="mt-8 border-t border-gray-700 pt-8 md:flex md:items-center md:justify-between">
393
+ <div class="flex space-x-6 md:order-2">
394
+ <a href="#" class="text-gray-400 hover:text-white">
395
+ <span class="sr-only">Twitter</span>
396
+ <i class="fab fa-twitter text-xl"></i>
397
+ </a>
398
+ <a href="#" class="text-gray-400 hover:text-white">
399
+ <span class="sr-only">Facebook</span>
400
+ <i class="fab fa-facebook text-xl"></i>
401
+ </a>
402
+ <a href="#" class="text-gray-400 hover:text-white">
403
+ <span class="sr-only">Instagram</span>
404
+ <i class="fab fa-instagram text-xl"></i>
405
+ </a>
406
+ </div>
407
+ <p class="mt-8 text-base text-gray-400 md:mt-0 md:order-1">
408
+ &copy; 2023 DoNotPay, Inc. All rights reserved.
409
+ </p>
410
+ </div>
411
+ </div>
412
+ </footer>
413
+
414
+ <script>
415
+ // Chatbot functionality
416
+ const chatMessages = [
417
+ {sender: 'bot', text: "Hi there! I'm the DoNotPay bot. What legal issue can I help you with today?", delay: 1000},
418
+ {sender: 'bot', text: "I can help with parking tickets, robocallers, housing issues, flight compensation, and more!", delay: 2000},
419
+ {sender: 'bot', text: "Just type what you need help with and I'll guide you through the process.", delay: 3000}
420
+ ];
421
+
422
+ let currentMessage = 0;
423
+ const chatContainer = document.getElementById('chat-container');
424
+ let currentCaseType = '';
425
+ let userDetails = {};
426
+ let documentGenerated = false;
427
+
428
+ function displayMessages() {
429
+ if (currentMessage < chatMessages.length) {
430
+ const message = chatMessages[currentMessage];
431
+ setTimeout(() => {
432
+ addMessage(message.sender, message.text);
433
+ currentMessage++;
434
+ displayMessages();
435
+ }, message.delay);
436
+ }
437
+ }
438
+
439
+ function addMessage(sender, text) {
440
+ const messageDiv = document.createElement('div');
441
+ messageDiv.className = `mb-4 flex ${sender === 'bot' ? 'justify-start' : 'justify-end'} fade-in`;
442
+
443
+ const bubbleDiv = document.createElement('div');
444
+ bubbleDiv.className = sender === 'bot'
445
+ ? 'max-w-xs lg:max-w-md px-4 py-2 rounded-lg bg-gray-200 text-gray-800 chat-bubble'
446
+ : 'max-w-xs lg:max-w-md px-4 py-2 rounded-lg bg-purple-600 text-white user-bubble';
447
+
448
+ bubbleDiv.textContent = text;
449
+ messageDiv.appendChild(bubbleDiv);
450
+ chatContainer.appendChild(messageDiv);
451
+ chatContainer.scrollTop = chatContainer.scrollHeight;
452
+ }
453
+
454
+ function generateDocument() {
455
+ const docContent = document.getElementById('document-content');
456
+ let documentText = '';
457
+
458
+ switch(currentCaseType) {
459
+ case 'parking':
460
+ documentText = `
461
+ <h3 class="text-xl font-bold mb-4">Parking Ticket Appeal Letter</h3>
462
+ <p class="mb-2">${new Date().toLocaleDateString()}</p>
463
+ <p class="mb-2">Parking Violations Bureau</p>
464
+ <p class="mb-2">City of ${userDetails.city || '[Your City]'}</p>
465
+ <p class="mb-4">RE: Parking Ticket #${userDetails.ticketNumber || '[Ticket Number]'}</p>
466
+
467
+ <p class="mb-4">Dear Parking Violations Bureau,</p>
468
+
469
+ <p class="mb-4">I am writing to formally appeal the parking ticket I received on ${userDetails.ticketDate || '[Date]'} at ${userDetails.ticketLocation || '[Location]'}.</p>
470
+
471
+ <p class="mb-4">The ticket was issued in error because:</p>
472
+ <ul class="list-disc pl-5 mb-4">
473
+ <li>The parking signs were unclear or missing</li>
474
+ <li>I had a valid parking permit displayed</li>
475
+ <li>The parking meter was malfunctioning</li>
476
+ </ul>
477
+
478
+ <p class="mb-4">I have attached photographic evidence supporting my claim. Please dismiss this ticket at your earliest convenience.</p>
479
+
480
+ <p class="mb-4">Sincerely,</p>
481
+ <p>${userDetails.name || '[Your Name]'}</p>
482
+ <p>${userDetails.address || '[Your Address]'}</p>
483
+ <p>${userDetails.email || '[Your Email]'}</p>
484
+ `;
485
+ break;
486
+
487
+ case 'robocall':
488
+ documentText = `
489
+ <h3 class="text-xl font-bold mb-4">Small Claims Court Filing Against Robocaller</h3>
490
+ <p class="mb-2">${new Date().toLocaleDateString()}</p>
491
+ <p class="mb-2">Small Claims Court</p>
492
+ <p class="mb-2">${userDetails.courtLocation || '[Your County]'} County</p>
493
+
494
+ <p class="mb-4">Plaintiff: ${userDetails.name || '[Your Name]'}</p>
495
+ <p class="mb-4">vs.</p>
496
+ <p class="mb-4">Defendant: ${userDetails.callerName || '[Robocaller Company]'}</p>
497
+
498
+ <h4 class="font-bold mb-2">Complaint:</h4>
499
+ <p class="mb-4">I received an illegal robocall from ${userDetails.callerName || '[Robocaller Company]'} on ${userDetails.callDate || '[Date]'} at ${userDetails.callTime || '[Time]'}. The call violated the Telephone Consumer Protection Act (TCPA) because:</p>
500
+ <ul class="list-disc pl-5 mb-4">
501
+ <li>I did not provide consent to receive automated calls</li>
502
+ <li>The call was made using an automated dialing system</li>
503
+ <li>The call was a sales call or contained a prerecorded message</li>
504
+ </ul>
505
+
506
+ <p class="mb-4">I am seeking $1,500 in statutory damages for this violation of the TCPA.</p>
507
+
508
+ <h4 class="font-bold mb-2">Evidence:</h4>
509
+ <ul class="list-disc pl-5 mb-4">
510
+ <li>Call log showing the phone number ${userDetails.callerNumber || '[Phone Number]'}</li>
511
+ <li>Screenshot of call details</li>
512
+ <li>Recording of the call (attached)</li>
513
+ </ul>
514
+
515
+ <p class="mb-4">Respectfully submitted,</p>
516
+ <p>${userDetails.name || '[Your Name]'}</p>
517
+ `;
518
+ break;
519
+
520
+ case 'subscription':
521
+ documentText = `
522
+ <h3 class="text-xl font-bold mb-4">Subscription Cancellation Letter</h3>
523
+ <p class="mb-2">${new Date().toLocaleDateString()}</p>
524
+ <p class="mb-2">Customer Service Department</p>
525
+ <p class="mb-2">${userDetails.companyName || '[Company Name]'}</p>
526
+
527
+ <p class="mb-4">RE: Cancellation of ${userDetails.serviceName || '[Service Name]'} (Account #${userDetails.accountNumber || '[Your Account Number]'})</p>
528
+
529
+ <p class="mb-4">Dear Customer Service,</p>
530
+
531
+ <p class="mb-4">I am writing to formally cancel my ${userDetails.serviceName || '[Service Name]'} subscription effective immediately.</p>
532
+
533
+ <p class="mb-4">My account details are:</p>
534
+ <ul class="list-disc pl-5 mb-4">
535
+ <li>Full Name: ${userDetails.name || '[Your Name]'}</li>
536
+ <li>Email: ${userDetails.email || '[Your Email]'}</li>
537
+ <li>Account Number: ${userDetails.accountNumber || '[Your Account Number]'}</li>
538
+ <li>Last 4 digits of payment card: ${userDetails.cardLast4 || '[Last 4]'}</li>
539
+ </ul>
540
+
541
+ <p class="mb-4">Per your cancellation policy, I request that you:</p>
542
+ <ol class="list-decimal pl-5 mb-4">
543
+ <li>Immediately cancel my subscription and stop all future charges</li>
544
+ <li>Provide written confirmation of cancellation</li>
545
+ <li>Refund any unauthorized charges made after this notice</li>
546
+ </ol>
547
+
548
+ <p class="mb-4">Failure to comply with this request may result in legal action. I have retained a copy of this letter for my records.</p>
549
+
550
+ <p class="mb-4">Sincerely,</p>
551
+ <p>${userDetails.name || '[Your Name]'}</p>
552
+ `;
553
+ break;
554
+
555
+ default:
556
+ documentText = `<p>Document generation error. Please try again.</p>`;
557
+ }
558
+
559
+ docContent.innerHTML = documentText;
560
+ document.getElementById('document-generator').classList.remove('hidden');
561
+ documentGenerated = true;
562
+ }
563
+
564
+ function downloadDocument() {
565
+ if (!documentGenerated) return;
566
+
567
+ const element = document.createElement('a');
568
+ const text = document.getElementById('document-content').innerText;
569
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
570
+ element.setAttribute('download', `DoNotPay_${currentCaseType}_${new Date().toISOString().slice(0,10)}.txt`);
571
+
572
+ element.style.display = 'none';
573
+ document.body.appendChild(element);
574
+ element.click();
575
+ document.body.removeChild(element);
576
+ }
577
+
578
+ function processUserInput(message) {
579
+ const lowerMessage = message.toLowerCase();
580
+
581
+ if (!currentCaseType) {
582
+ if (lowerMessage.includes('parking') || lowerMessage.includes('ticket')) {
583
+ currentCaseType = 'parking';
584
+ addMessage('bot', "I can help with parking tickets! First, what city issued the ticket?");
585
+ }
586
+ else if (lowerMessage.includes('robocall') || lowerMessage.includes('spam call')) {
587
+ currentCaseType = 'robocall';
588
+ addMessage('bot', "Let's sue those robocallers! What company or phone number was calling you?");
589
+ }
590
+ else if (lowerMessage.includes('cancel') || lowerMessage.includes('subscription') || lowerMessage.includes('membership')) {
591
+ currentCaseType = 'subscription';
592
+ addMessage('bot', "I'll help you cancel that subscription. What's the name of the company or service?");
593
+ }
594
+ else {
595
+ addMessage('bot', "I can help with several issues. Please specify if you need help with: parking tickets, robocallers, or subscription cancellations.");
596
+ }
597
+ }
598
+ else {
599
+ switch(currentCaseType) {
600
+ case 'parking':
601
+ if (!userDetails.city) {
602
+ userDetails.city = message;
603
+ addMessage('bot', `Got it, ${message}. What's your parking ticket number?`);
604
+ }
605
+ else if (!userDetails.ticketNumber) {
606
+ userDetails.ticketNumber = message;
607
+ addMessage('bot', `Ticket #${message}. When did you receive this ticket? (MM/DD/YYYY)`);
608
+ }
609
+ else if (!userDetails.ticketDate) {
610
+ userDetails.ticketDate = message;
611
+ addMessage('bot', `On ${message}. Where exactly was the ticket issued? (Street address)`);
612
+ }
613
+ else if (!userDetails.ticketLocation) {
614
+ userDetails.ticketLocation = message;
615
+ addMessage('bot', `At ${message}. Finally, what's your full name for the appeal letter?`);
616
+ }
617
+ else if (!userDetails.name) {
618
+ userDetails.name = message;
619
+ addMessage('bot', `Thanks, ${message}. Generating your parking ticket appeal letter now...`);
620
+ setTimeout(() => {
621
+ generateDocument();
622
+ addMessage('bot', "I've generated your appeal letter! You can review and download it above.");
623
+ }, 2000);
624
+ }
625
+ break;
626
+
627
+ case 'robocall':
628
+ if (!userDetails.callerName && !userDetails.callerNumber) {
629
+ if (message.match(/\d{10}/)) {
630
+ userDetails.callerNumber = message;
631
+ addMessage('bot', `Number ${message}. When did you receive this call? (MM/DD/YYYY)`);
632
+ } else {
633
+ userDetails.callerName = message;
634
+ addMessage('bot', `${message}. Do you have their phone number?`);
635
+ }
636
+ }
637
+ else if (!userDetails.callDate) {
638
+ userDetails.callDate = message;
639
+ addMessage('bot', `On ${message}. What time was the call?`);
640
+ }
641
+ else if (!userDetails.callTime) {
642
+ userDetails.callTime = message;
643
+ addMessage('bot', `At ${message}. What county are you in for court filing purposes?`);
644
+ }
645
+ else if (!userDetails.courtLocation) {
646
+ userDetails.courtLocation = message;
647
+ addMessage('bot', `${message} County. What's your full name for the court documents?`);
648
+ }
649
+ else if (!userDetails.name) {
650
+ userDetails.name = message;
651
+ addMessage('bot', `Thanks, ${message}. Generating your small claims court filing now...`);
652
+ setTimeout(() => {
653
+ generateDocument();
654
+ addMessage('bot', "Your court filing is ready! Review and download it above.");
655
+ }, 2000);
656
+ }
657
+ break;
658
+
659
+ case 'subscription':
660
+ if (!userDetails.companyName) {
661
+ userDetails.companyName = message;
662
+ addMessage('bot', `Cancelling with ${message}. What's the name of the specific service?`);
663
+ }
664
+ else if (!userDetails.serviceName) {
665
+ userDetails.serviceName = message;
666
+ addMessage('bot', `${message}. What's your account number or email with them?`);
667
+ }
668
+ else if (!userDetails.accountNumber) {
669
+ userDetails.accountNumber = message;
670
+ addMessage('bot', `Account ${message}. What's your full name on the account?`);
671
+ }
672
+ else if (!userDetails.name) {
673
+ userDetails.name = message;
674
+ addMessage('bot', `Got it, ${message}. Finally, what's your email address for confirmation?`);
675
+ }
676
+ else if (!userDetails.email) {
677
+ userDetails.email = message;
678
+ addMessage('bot', `At ${message}. Generating your cancellation letter now...`);
679
+ setTimeout(() => {
680
+ generateDocument();
681
+ addMessage('bot', "Your cancellation letter is ready! Download and send it to the company.");
682
+ }, 2000);
683
+ }
684
+ break;
685
+ }
686
+ }
687
+ }
688
+
689
+ function sendMessage() {
690
+ const input = document.getElementById('chat-input');
691
+ const message = input.value.trim();
692
+
693
+ if (message) {
694
+ addMessage('user', message);
695
+ input.value = '';
696
+ processUserInput(message);
697
+ }
698
+ }
699
+
700
+ // Initialize chat
701
+ document.addEventListener('DOMContentLoaded', () => {
702
+ displayMessages();
703
+
704
+ // Allow pressing Enter to send message
705
+ document.getElementById('chat-input').addEventListener('keypress', (e) => {
706
+ if (e.key === 'Enter') {
707
+ sendMessage();
708
+ }
709
+ });
710
+ });
711
+ </script>
712
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - <a href="https://enzostvs-deepsite.hf.space?remix=HuggingFatties/donotpay" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body>
713
+ </html>