designfailure commited on
Commit
05446d3
·
verified ·
1 Parent(s): 8c1a4dd

Add 2 files

Browse files
Files changed (2) hide show
  1. index.html +640 -432
  2. prompts.txt +2 -1
index.html CHANGED
@@ -3,58 +3,110 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Insur.MCP | Agentic AI for Insurance</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
- /* Custom CSS for elements that need more precise control */
11
- .hero-gradient {
12
- background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 50%, #bae6fd 100%);
 
 
 
 
 
13
  }
14
 
15
- .card-hover {
16
- transition: all 0.3s ease;
 
 
17
  }
18
 
19
- .card-hover:hover {
20
- transform: translateY(-5px);
21
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
22
  }
23
 
24
- .swipe-container {
25
- scroll-snap-type: x mandatory;
 
 
 
 
 
26
  }
27
 
28
- .swipe-card {
29
- scroll-snap-align: start;
30
  }
31
 
32
- /* Mobile menu animation */
33
- .mobile-menu {
34
- max-height: 0;
35
- overflow: hidden;
36
- transition: max-height 0.3s ease-out;
 
 
37
  }
38
 
39
- .mobile-menu.open {
40
- max-height: 500px;
41
  }
42
 
43
- /* Canvas area styling */
44
- .canvas-area {
45
- background-color: #f8fafc;
46
- border: 2px dashed #cbd5e1;
47
- border-radius: 0.5rem;
48
- min-height: 400px;
 
49
  }
50
 
51
- .draggable-item {
52
- cursor: grab;
53
- user-select: none;
 
54
  }
55
 
56
- .draggable-item:active {
57
- cursor: grabbing;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  }
59
  </style>
60
  </head>
@@ -65,22 +117,20 @@
65
  <div class="flex justify-between h-16">
66
  <div class="flex items-center">
67
  <div class="flex-shrink-0 flex items-center">
68
- <span class="text-blue-600 font-bold text-xl">Insur.MCP</span>
69
  </div>
70
  </div>
71
 
72
- <!-- Desktop Navigation -->
73
  <div class="hidden md:flex items-center space-x-8">
74
- <a href="#" class="text-blue-600 font-medium border-b-2 border-blue-600 px-1">Home</a>
75
- <a href="#features" class="text-gray-500 hover:text-blue-600 font-medium px-1">Features</a>
76
- <a href="#about" class="text-gray-500 hover:text-blue-600 font-medium px-1">About</a>
77
- <a href="subpage.html" class="text-gray-500 hover:text-blue-600 font-medium px-1">Canvas</a>
78
  <button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-md font-medium transition duration-300">
79
  Contact Us
80
  </button>
81
  </div>
82
 
83
- <!-- Mobile menu button -->
84
  <div class="md:hidden flex items-center">
85
  <button id="mobile-menu-button" class="text-gray-500 hover:text-blue-600 focus:outline-none">
86
  <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
@@ -91,13 +141,12 @@
91
  </div>
92
  </div>
93
 
94
- <!-- Mobile menu -->
95
  <div id="mobile-menu" class="mobile-menu md:hidden bg-white">
96
  <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
97
- <a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-blue-600 bg-blue-50">Home</a>
98
- <a href="#features" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">Features</a>
99
- <a href="#about" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">About</a>
100
- <a href="subpage.html" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">Canvas</a>
101
  <button class="w-full text-left block px-3 py-2 rounded-md text-base font-medium text-white bg-blue-600 hover:bg-blue-700">
102
  Contact Us
103
  </button>
@@ -105,328 +154,141 @@
105
  </div>
106
  </nav>
107
 
108
- <!-- Hero Section -->
109
- <section class="hero-gradient">
110
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 md:py-28">
111
- <div class="flex flex-col md:flex-row items-center">
112
- <div class="md:w-1/2 mb-10 md:mb-0">
113
- <h1 class="text-4xl md:text-5xl font-bold text-gray-900 leading-tight mb-6">
114
- Deploying Synthetic Workers with Strategic Confidence
115
- </h1>
116
- <p class="text-lg text-gray-700 mb-8">
117
- At Insur.MCP, we're not just experimenting with AI — we're deploying synthetic workers through our Strategic and Structured Iterative Model Context Protocol (MSP) approach.
118
- </p>
119
- <div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
120
- <button class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-md font-medium transition duration-300">
121
- Get Started
122
- </button>
123
- <button class="border border-blue-600 text-blue-600 hover:bg-blue-50 px-6 py-3 rounded-md font-medium transition duration-300">
124
- Learn More
125
- </button>
126
- </div>
127
- </div>
128
- <div class="md:w-1/2 flex justify-center">
129
- <div class="relative w-full max-w-md">
130
- <div class="absolute -top-6 -left-6 w-32 h-32 bg-blue-100 rounded-full mix-blend-multiply filter blur-xl opacity-70 animate-blob"></div>
131
- <div class="absolute -bottom-8 -right-8 w-32 h-32 bg-blue-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 animate-blob animation-delay-2000"></div>
132
- <div class="relative bg-white p-8 rounded-2xl shadow-xl">
133
- <h3 class="text-xl font-semibold text-gray-800 mb-4">Agentic Workflow System</h3>
134
- <p class="text-gray-600 mb-6">Helps incumbents escape pilot purgatory and confidently scale real AI outcomes.</p>
135
- <div class="flex items-center">
136
- <div class="flex-shrink-0 bg-blue-100 p-3 rounded-full">
137
- <i class="fas fa-robot text-blue-600 text-xl"></i>
138
- </div>
139
- <div class="ml-4">
140
- <p class="text-sm font-medium text-gray-900">Digital Workforce</p>
141
- <p class="text-sm text-gray-500">Always-on synthetic agents</p>
142
- </div>
143
- </div>
144
- </div>
145
- </div>
146
- </div>
147
- </div>
148
- </div>
149
- </section>
150
-
151
- <!-- Scrollable Content Section -->
152
- <section id="about" class="py-16 bg-white">
153
- <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
154
- <div class="text-center mb-16">
155
- <h2 class="text-3xl font-bold text-gray-900 mb-4">Our Approach</h2>
156
- <div class="w-20 h-1 bg-blue-600 mx-auto"></div>
157
  </div>
158
-
159
- <div class="space-y-12 text-lg text-gray-700 leading-relaxed">
160
- <p>
161
- At Insur.MCP, we help corporates and incubators automate the digitalization of skills by replicating how teams work — their tools, tasks, and workflows — into agentic AI systems.
162
- </p>
163
-
164
- <p>
165
- We bring deep insurance industry knowledge where departments run on repetitive, structured tasks, and we translate that into multi-agent AI environments that perform jobs-to-be-done autonomously.
166
- </p>
167
-
168
- <p>
169
- Our mission is to build secure, sandboxed workspaces with synthetic datasets to validate and train these agents safely, because we believe the future of work is agentic, modular, and truly autonomous.
170
- </p>
171
-
172
- <p>
173
- It's like giving every team a digital twin that thinks and acts, not just reacts.
174
- </p>
175
  </div>
176
  </div>
177
- </section>
178
-
179
- <!-- Feature Cards Section -->
180
- <section id="features" class="py-16 bg-gray-50">
181
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
182
- <div class="text-center mb-16">
183
- <h2 class="text-3xl font-bold text-gray-900 mb-4">Our Capabilities</h2>
184
- <p class="text-lg text-gray-600 max-w-2xl mx-auto">
185
- Strategic deployment of synthetic workers through our MSP approach
186
- </p>
187
- <div class="w-20 h-1 bg-blue-600 mx-auto mt-4"></div>
188
- </div>
189
-
190
- <!-- Desktop Grid Layout -->
191
- <div class="hidden md:grid grid-cols-1 md:grid-cols-3 gap-8">
192
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
193
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
194
- <i class="fas fa-project-diagram text-blue-600 text-2xl"></i>
195
- </div>
196
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Agentic Workflows</h3>
197
- <p class="text-gray-600">
198
- Transform traditional processes into autonomous, self-optimizing workflows powered by AI agents that collaborate like human teams.
199
- </p>
200
- </div>
201
-
202
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
203
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
204
- <i class="fas fa-shield-alt text-blue-600 text-2xl"></i>
205
- </div>
206
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Sandboxed Validation</h3>
207
- <p class="text-gray-600">
208
- Test and refine synthetic workers in secure environments with synthetic data before deployment to production systems.
209
- </p>
210
- </div>
211
-
212
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
213
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
214
- <i class="fas fa-random text-blue-600 text-2xl"></i>
215
- </div>
216
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Modular Architecture</h3>
217
- <p class="text-gray-600">
218
- Compose and reconfigure specialized AI agents to match evolving business needs without costly reimplementation.
219
- </p>
220
  </div>
221
 
222
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
223
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
224
- <i class="fas fa-database text-blue-600 text-2xl"></i>
 
 
 
 
 
 
 
 
 
 
 
 
225
  </div>
226
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Industry Knowledge</h3>
227
- <p class="text-gray-600">
228
- Pre-built insurance domain models that understand underwriting, claims, compliance and other core functions.
229
- </p>
230
  </div>
231
 
232
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
233
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
234
- <i class="fas fa-sync-alt text-blue-600 text-2xl"></i>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  </div>
236
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Continuous Learning</h3>
237
- <p class="text-gray-600">
238
- Agents that improve over time through reinforcement learning and human feedback loops.
239
- </p>
240
  </div>
241
 
242
- <div class="bg-white p-8 rounded-xl shadow-sm card-hover">
243
- <div class="w-14 h-14 bg-blue-50 rounded-full flex items-center justify-center mb-6">
244
- <i class="fas fa-chart-line text-blue-600 text-2xl"></i>
245
- </div>
246
- <h3 class="text-xl font-semibold text-gray-900 mb-3">Performance Analytics</h3>
247
- <p class="text-gray-600">
248
- Comprehensive dashboards tracking synthetic worker efficiency, accuracy and business impact.
249
- </p>
250
- </div>
251
- </div>
252
-
253
- <!-- Mobile Swipe Layout -->
254
- <div class="md:hidden overflow-x-auto pb-6 swipe-container">
255
- <div class="flex space-x-4 w-max px-4">
256
- <div class="w-72 flex-shrink-0 bg-white p-6 rounded-xl shadow-sm swipe-card">
257
- <div class="w-12 h-12 bg-blue-50 rounded-full flex items-center justify-center mb-4">
258
- <i class="fas fa-project-diagram text-blue-600 text-xl"></i>
259
  </div>
260
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Agentic Workflows</h3>
261
- <p class="text-sm text-gray-600">
262
- Transform traditional processes into autonomous workflows powered by AI agents.
263
- </p>
264
- </div>
265
-
266
- <div class="w-72 flex-shrink-0 bg-white p-6 rounded-xl shadow-sm swipe-card">
267
- <div class="w-12 h-12 bg-blue-50 rounded-full flex items-center justify-center mb-4">
268
- <i class="fas fa-shield-alt text-blue-600 text-xl"></i>
269
  </div>
270
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Sandboxed Validation</h3>
271
- <p class="text-sm text-gray-600">
272
- Test synthetic workers in secure environments before deployment.
273
- </p>
274
- </div>
275
-
276
- <div class="w-72 flex-shrink-0 bg-white p-6 rounded-xl shadow-sm swipe-card">
277
- <div class="w-12 h-12 bg-blue-50 rounded-full flex items-center justify-center mb-4">
278
- <i class="fas fa-random text-blue-600 text-xl"></i>
279
  </div>
280
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Modular Architecture</h3>
281
- <p class="text-sm text-gray-600">
282
- Reconfigure specialized AI agents to match business needs.
283
- </p>
284
- </div>
285
-
286
- <div class="w-72 flex-shrink-0 bg-white p-6 rounded-xl shadow-sm swipe-card">
287
- <div class="w-12 h-12 bg-blue-50 rounded-full flex items-center justify-center mb-4">
288
- <i class="fas fa-database text-blue-600 text-xl"></i>
289
  </div>
290
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Industry Knowledge</h3>
291
- <p class="text-sm text-gray-600">
292
- Pre-built insurance domain models for core functions.
293
- </p>
294
  </div>
295
  </div>
296
- </div>
297
- </div>
298
- </section>
299
-
300
- <!-- CTA Section -->
301
- <section class="py-16 bg-blue-600 text-white">
302
- <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
303
- <h2 class="text-3xl font-bold mb-6">Ready to Transform Your Insurance Operations?</h2>
304
- <p class="text-xl mb-8 opacity-90">
305
- Discover how our agentic AI systems can automate your most complex workflows.
306
- </p>
307
- <div class="flex flex-col sm:flex-row justify-center space-y-4 sm:space-y-0 sm:space-x-4">
308
- <button class="bg-white text-blue-600 hover:bg-gray-100 px-8 py-3 rounded-md font-medium transition duration-300">
309
- Schedule a Demo
310
- </button>
311
- <button class="border border-white text-white hover:bg-blue-700 px-8 py-3 rounded-md font-medium transition duration-300">
312
- Contact Our Team
313
- </button>
314
- </div>
315
- </div>
316
- </section>
317
-
318
- <!-- Footer -->
319
- <footer class="bg-gray-900 text-white py-12">
320
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
321
- <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
322
- <div>
323
- <h3 class="text-xl font-bold mb-4">Insur.MCP</h3>
324
- <p class="text-gray-400">
325
- Deploying synthetic workers with strategic confidence through our MSP approach.
326
- </p>
327
- </div>
328
-
329
- <div>
330
- <h4 class="text-lg font-semibold mb-4">Quick Links</h4>
331
- <ul class="space-y-2">
332
- <li><a href="#" class="text-gray-400 hover:text-white transition">Home</a></li>
333
- <li><a href="#features" class="text-gray-400 hover:text-white transition">Features</a></li>
334
- <li><a href="#about" class="text-gray-400 hover:text-white transition">About</a></li>
335
- <li><a href="subpage.html" class="text-gray-400 hover:text-white transition">Canvas</a></li>
336
- </ul>
337
- </div>
338
-
339
- <div>
340
- <h4 class="text-lg font-semibold mb-4">Resources</h4>
341
- <ul class="space-y-2">
342
- <li><a href="#" class="text-gray-400 hover:text-white transition">Documentation</a></li>
343
- <li><a href="#" class="text-gray-400 hover:text-white transition">Case Studies</a></li>
344
- <li><a href="#" class="text-gray-400 hover:text-white transition">Blog</a></li>
345
- <li><a href="#" class="text-gray-400 hover:text-white transition">API</a></li>
346
- </ul>
347
- </div>
348
 
349
- <div>
350
- <h4 class="text-lg font-semibold mb-4">Connect</h4>
351
- <div class="flex space-x-4">
352
- <a href="#" class="text-gray-400 hover:text-white transition">
353
- <i class="fab fa-linkedin text-xl"></i>
354
- </a>
355
- <a href="#" class="text-gray-400 hover:text-white transition">
356
- <i class="fab fa-twitter text-xl"></i>
357
- </a>
358
- <a href="#" class="text-gray-400 hover:text-white transition">
359
- <i class="fab fa-github text-xl"></i>
360
- </a>
361
- <a href="#" class="text-gray-400 hover:text-white transition">
362
- <i class="fab fa-medium text-xl"></i>
363
- </a>
364
- </div>
365
- <p class="text-gray-400 mt-4">
366
- info@insurmcp.com<br>
367
- +1 (555) 123-4567
368
- </p>
369
- </div>
370
- </div>
371
-
372
- <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center">
373
- <p class="text-gray-400 text-sm">
374
- © 2023 Insur.MCP. All rights reserved.
375
- </p>
376
- <div class="flex space-x-6 mt-4 md:mt-0">
377
- <a href="#" class="text-gray-400 hover:text-white text-sm">Privacy Policy</a>
378
- <a href="#" class="text-gray-400 hover:text-white text-sm">Terms of Service</a>
379
- <a href="#" class="text-gray-400 hover:text-white text-sm">Cookies</a>
380
- </div>
381
- </div>
382
- </div>
383
- </footer>
384
-
385
- <!-- Canvas Subpage (hidden by default) -->
386
- <div id="subpage" class="fixed inset-0 bg-white z-50 overflow-auto hidden">
387
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
388
- <div class="flex justify-between items-center mb-8">
389
- <h2 class="text-2xl font-bold text-gray-900">Agent Workflow Canvas</h2>
390
- <button id="close-subpage" class="text-gray-500 hover:text-gray-700">
391
- <i class="fas fa-times text-2xl"></i>
392
- </button>
393
- </div>
394
-
395
- <div class="flex flex-col lg:flex-row gap-6">
396
- <!-- Components Panel -->
397
- <div class="lg:w-1/4 bg-gray-50 p-4 rounded-lg">
398
- <h3 class="font-semibold text-lg mb-4">Components</h3>
399
  <div class="space-y-3">
400
- <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="input">
401
- <i class="fas fa-keyboard text-blue-500 mr-2"></i> Input Node
402
  </div>
403
- <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="process">
404
- <i class="fas fa-cog text-green-500 mr-2"></i> Process Node
405
  </div>
406
- <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="decision">
407
- <i class="fas fa-code-branch text-yellow-500 mr-2"></i> Decision Node
408
  </div>
409
- <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="output">
410
- <i class="fas fa-file-export text-red-500 mr-2"></i> Output Node
411
  </div>
412
- <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="agent">
413
- <i class="fas fa-robot text-purple-500 mr-2"></i> AI Agent
414
  </div>
415
  </div>
416
  </div>
 
 
 
 
 
 
 
 
 
 
 
417
 
418
- <!-- Canvas Area -->
419
- <div class="lg:w-3/4">
420
- <div id="workflow-canvas" class="canvas-area p-6">
421
- <p class="text-gray-500 text-center py-20">Drag and drop components here to build your agent workflow</p>
422
  </div>
423
-
424
- <div class="mt-4 flex justify-end space-x-3">
425
- <button class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50">
426
- Clear Canvas
 
 
427
  </button>
428
- <button class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700">
429
- Save Workflow
430
  </button>
431
  </div>
432
  </div>
@@ -443,31 +305,328 @@
443
  mobileMenu.classList.toggle('open');
444
  });
445
 
446
- // Canvas subpage functionality
447
- const canvasLink = document.querySelector('a[href="subpage.html"]');
448
- const subpage = document.getElementById('subpage');
449
- const closeSubpage = document.getElementById('close-subpage');
450
 
451
- if (canvasLink) {
452
- canvasLink.addEventListener('click', (e) => {
453
- e.preventDefault();
454
- subpage.classList.remove('hidden');
455
- document.body.style.overflow = 'hidden';
 
 
 
 
 
456
  });
457
- }
458
-
459
- closeSubpage.addEventListener('click', () => {
460
- subpage.classList.add('hidden');
461
- document.body.style.overflow = 'auto';
462
  });
463
 
464
- // Drag and drop functionality for canvas
465
- const draggableItems = document.querySelectorAll('.draggable-item');
466
  const canvas = document.getElementById('workflow-canvas');
 
 
 
 
 
 
 
 
 
 
 
 
467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  draggableItems.forEach(item => {
469
  item.addEventListener('dragstart', (e) => {
470
- e.dataTransfer.setData('text/plain', e.target.dataset.type);
 
471
  e.dataTransfer.effectAllowed = 'copy';
472
  });
473
  });
@@ -479,101 +638,150 @@
479
 
480
  canvas.addEventListener('drop', (e) => {
481
  e.preventDefault();
482
- const type = e.dataTransfer.getData('text/plain');
483
 
484
- // Create a new node based on the type
485
- const newNode = document.createElement('div');
486
- newNode.className = 'inline-block bg-white p-3 m-2 rounded-lg shadow-sm border cursor-move';
 
487
 
488
- // Position the new node near the drop location
489
  const rect = canvas.getBoundingClientRect();
490
- const x = e.clientX - rect.left - 50;
491
- const y = e.clientY - rect.top - 20;
492
- newNode.style.position = 'absolute';
493
- newNode.style.left = `${x}px`;
494
- newNode.style.top = `${y}px`;
495
-
496
- // Set content based on type
497
- let icon, color, text;
498
- switch(type) {
499
- case 'input':
500
- icon = 'keyboard';
501
- color = 'blue';
502
- text = 'Input';
503
- break;
504
- case 'process':
505
- icon = 'cog';
506
- color = 'green';
507
- text = 'Process';
508
- break;
509
- case 'decision':
510
- icon = 'code-branch';
511
- color = 'yellow';
512
- text = 'Decision';
513
- break;
514
- case 'output':
515
- icon = 'file-export';
516
- color = 'red';
517
- text = 'Output';
518
- break;
519
- case 'agent':
520
- icon = 'robot';
521
- color = 'purple';
522
- text = 'AI Agent';
523
- break;
524
- }
525
 
526
- newNode.innerHTML = `
527
- <i class="fas fa-${icon} text-${color}-500 mr-2"></i> ${text}
528
- `;
 
 
 
 
 
 
 
529
 
530
- canvas.appendChild(newNode);
 
 
 
 
 
531
 
532
- // Make new nodes draggable
533
- newNode.draggable = true;
534
- newNode.addEventListener('dragstart', (e) => {
535
- e.dataTransfer.setData('text/plain', 'move');
536
- e.dataTransfer.setData('node-id', newNode.id);
537
- e.dataTransfer.effectAllowed = 'move';
538
- });
539
 
540
- // Generate unique ID for the new node
541
- newNode.id = `node-${Date.now()}`;
542
  });
543
 
544
- // Make canvas nodes draggable
545
- canvas.addEventListener('dragover', (e) => {
546
- const node = document.elementFromPoint(e.clientX, e.clientY);
547
- if (node && node !== canvas && node.draggable) {
548
- e.preventDefault();
549
- e.dataTransfer.dropEffect = 'move';
550
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
551
  });
552
 
553
- canvas.addEventListener('drop', (e) => {
554
- const nodeId = e.dataTransfer.getData('node-id');
555
- if (nodeId) {
556
- const node = document.getElementById(nodeId);
557
- if (node) {
558
- const rect = canvas.getBoundingClientRect();
559
- const x = e.clientX - rect.left - node.offsetWidth / 2;
560
- const y = e.clientY - rect.top - node.offsetHeight / 2;
561
- node.style.left = `${x}px`;
562
- node.style.top = `${y}px`;
 
 
 
 
 
 
 
 
 
 
563
  }
564
  }
 
 
 
 
 
 
 
 
 
565
  });
566
 
567
- // Detect mobile device and adjust layout if needed
568
- function detectMobile() {
569
- return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
570
- }
 
 
 
 
 
 
571
 
572
- if (detectMobile()) {
573
- document.body.classList.add('mobile');
574
- } else {
575
- document.body.classList.add('desktop');
576
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
577
  </script>
578
  <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=designfailure/insur-mcp" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
579
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Insur.MCP | Agent Workflow Canvas</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
+ /* Custom styles for canvas elements */
11
+ .canvas-area {
12
+ background-color: #f8fafc;
13
+ border: 2px dashed #cbd5e1;
14
+ border-radius: 0.5rem;
15
+ min-height: 500px;
16
+ position: relative;
17
+ overflow: hidden;
18
  }
19
 
20
+ .draggable-item {
21
+ cursor: grab;
22
+ user-select: none;
23
+ transition: all 0.2s ease;
24
  }
25
 
26
+ .draggable-item:active {
27
+ cursor: grabbing;
 
28
  }
29
 
30
+ .canvas-node {
31
+ position: absolute;
32
+ background: white;
33
+ border-radius: 0.5rem;
34
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
35
+ min-width: 180px;
36
+ z-index: 10;
37
  }
38
 
39
+ .canvas-node:hover {
40
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
41
  }
42
 
43
+ .node-header {
44
+ padding: 0.5rem 1rem;
45
+ border-bottom: 1px solid #e2e8f0;
46
+ font-weight: 600;
47
+ display: flex;
48
+ justify-content: space-between;
49
+ align-items: center;
50
  }
51
 
52
+ .node-content {
53
+ padding: 1rem;
54
  }
55
 
56
+ .node-connector {
57
+ width: 12px;
58
+ height: 12px;
59
+ border-radius: 50%;
60
+ background: #94a3b8;
61
+ position: absolute;
62
+ cursor: pointer;
63
  }
64
 
65
+ .node-connector.input {
66
+ left: -6px;
67
+ top: 50%;
68
+ transform: translateY(-50%);
69
  }
70
 
71
+ .node-connector.output {
72
+ right: -6px;
73
+ top: 50%;
74
+ transform: translateY(-50%);
75
+ }
76
+
77
+ .connection-line {
78
+ position: absolute;
79
+ height: 2px;
80
+ background: #64748b;
81
+ z-index: 5;
82
+ pointer-events: none;
83
+ }
84
+
85
+ .tab-content {
86
+ display: none;
87
+ }
88
+
89
+ .tab-content.active {
90
+ display: block;
91
+ }
92
+
93
+ .tab-button.active {
94
+ background-color: #e2e8f0;
95
+ font-weight: 600;
96
+ }
97
+
98
+ /* Animation for empty canvas */
99
+ @keyframes pulse {
100
+ 0%, 100% {
101
+ opacity: 0.5;
102
+ }
103
+ 50% {
104
+ opacity: 0.2;
105
+ }
106
+ }
107
+
108
+ .empty-canvas {
109
+ animation: pulse 2s infinite;
110
  }
111
  </style>
112
  </head>
 
117
  <div class="flex justify-between h-16">
118
  <div class="flex items-center">
119
  <div class="flex-shrink-0 flex items-center">
120
+ <a href="index.html" class="text-blue-600 font-bold text-xl">Insur.MCP</a>
121
  </div>
122
  </div>
123
 
 
124
  <div class="hidden md:flex items-center space-x-8">
125
+ <a href="index.html" class="text-gray-500 hover:text-blue-600 font-medium px-1">Home</a>
126
+ <a href="index.html#features" class="text-gray-500 hover:text-blue-600 font-medium px-1">Features</a>
127
+ <a href="index.html#about" class="text-gray-500 hover:text-blue-600 font-medium px-1">About</a>
128
+ <a href="#" class="text-blue-600 font-medium border-b-2 border-blue-600 px-1">Canvas</a>
129
  <button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-md font-medium transition duration-300">
130
  Contact Us
131
  </button>
132
  </div>
133
 
 
134
  <div class="md:hidden flex items-center">
135
  <button id="mobile-menu-button" class="text-gray-500 hover:text-blue-600 focus:outline-none">
136
  <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
 
141
  </div>
142
  </div>
143
 
 
144
  <div id="mobile-menu" class="mobile-menu md:hidden bg-white">
145
  <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
146
+ <a href="index.html" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">Home</a>
147
+ <a href="index.html#features" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">Features</a>
148
+ <a href="index.html#about" class="block px-3 py-2 rounded-md text-base font-medium text-gray-500 hover:text-blue-600 hover:bg-blue-50">About</a>
149
+ <a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-blue-600 bg-blue-50">Canvas</a>
150
  <button class="w-full text-left block px-3 py-2 rounded-md text-base font-medium text-white bg-blue-600 hover:bg-blue-700">
151
  Contact Us
152
  </button>
 
154
  </div>
155
  </nav>
156
 
157
+ <!-- Canvas Subpage Content -->
158
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
159
+ <div class="flex justify-between items-center mb-8">
160
+ <div>
161
+ <h1 class="text-3xl font-bold text-gray-900">Agent Workflow Canvas</h1>
162
+ <p class="text-gray-600 mt-2">Drag and drop components to create your AI agent workflow</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  </div>
164
+ <div class="flex space-x-3">
165
+ <button id="clear-canvas" class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50">
166
+ Clear Canvas
167
+ </button>
168
+ <button id="save-workflow" class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700">
169
+ Save Workflow
170
+ </button>
 
 
 
 
 
 
 
 
 
 
171
  </div>
172
  </div>
173
+
174
+ <div class="flex flex-col lg:flex-row gap-6">
175
+ <!-- Components Panel -->
176
+ <div class="lg:w-1/4 bg-gray-50 p-4 rounded-lg">
177
+ <div class="flex border-b border-gray-200 mb-4">
178
+ <button class="tab-button active px-4 py-2 rounded-t-lg" data-tab="agents">Agents</button>
179
+ <button class="tab-button px-4 py-2 rounded-t-lg" data-tab="tasks">Tasks</button>
180
+ <button class="tab-button px-4 py-2 rounded-t-lg" data-tab="tools">Tools</button>
181
+ <button class="tab-button px-4 py-2 rounded-t-lg" data-tab="data">Data</button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  </div>
183
 
184
+ <!-- Agents Tab -->
185
+ <div id="agents" class="tab-content active">
186
+ <div class="space-y-3">
187
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="agent" data-subtype="underwriting_agent">
188
+ <i class="fas fa-user-tie text-purple-500 mr-2"></i> Underwriting Agent
189
+ </div>
190
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="agent" data-subtype="sales_agent">
191
+ <i class="fas fa-handshake text-purple-500 mr-2"></i> Sales Agent
192
+ </div>
193
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="agent" data-subtype="fraud_agent">
194
+ <i class="fas fa-search-dollar text-purple-500 mr-2"></i> Fraud Agent
195
+ </div>
196
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="agent" data-subtype="claims_agent">
197
+ <i class="fas fa-file-invoice-dollar text-purple-500 mr-2"></i> Claims Agent
198
+ </div>
199
  </div>
 
 
 
 
200
  </div>
201
 
202
+ <!-- Tasks Tab -->
203
+ <div id="tasks" class="tab-content">
204
+ <div class="space-y-3">
205
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="task" data-subtype="risk_assessment">
206
+ <i class="fas fa-shield-alt text-blue-500 mr-2"></i> Risk Assessment
207
+ </div>
208
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="task" data-subtype="fraud_detection">
209
+ <i class="fas fa-search-dollar text-blue-500 mr-2"></i> Fraud Detection
210
+ </div>
211
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="task" data-subtype="sales_prospective">
212
+ <i class="fas fa-bullseye text-blue-500 mr-2"></i> Sales Prospective
213
+ </div>
214
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="task" data-subtype="appraisal">
215
+ <i class="fas fa-clipboard-check text-blue-500 mr-2"></i> Appraisal
216
+ </div>
217
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="task" data-subtype="estimation">
218
+ <i class="fas fa-calculator text-blue-500 mr-2"></i> Estimation
219
+ </div>
220
  </div>
 
 
 
 
221
  </div>
222
 
223
+ <!-- Tools Tab -->
224
+ <div id="tools" class="tab-content">
225
+ <div class="space-y-3">
226
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="web_search">
227
+ <i class="fas fa-globe text-green-500 mr-2"></i> Web Search
 
 
 
 
 
 
 
 
 
 
 
 
228
  </div>
229
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="data_set">
230
+ <i class="fas fa-database text-green-500 mr-2"></i> Data Set
 
 
 
 
 
 
 
231
  </div>
232
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="analysis">
233
+ <i class="fas fa-chart-line text-green-500 mr-2"></i> Analysis
 
 
 
 
 
 
 
234
  </div>
235
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="delegation">
236
+ <i class="fas fa-users text-green-500 mr-2"></i> Delegation
237
+ </div>
238
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="think">
239
+ <i class="fas fa-brain text-green-500 mr-2"></i> Think
240
+ </div>
241
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="tool" data-subtype="output_delivery">
242
+ <i class="fas fa-paper-plane text-green-500 mr-2"></i> Output Delivery
 
243
  </div>
 
 
 
 
244
  </div>
245
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
 
247
+ <!-- Data Tab -->
248
+ <div id="data" class="tab-content">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  <div class="space-y-3">
250
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="data" data-subtype="customer_synt">
251
+ <i class="fas fa-users text-orange-500 mr-2"></i> Customer Synthetic
252
  </div>
253
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="data" data-subtype="claim_synt">
254
+ <i class="fas fa-file-invoice text-orange-500 mr-2"></i> Claim Synthetic
255
  </div>
256
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="data" data-subtype="process_synt">
257
+ <i class="fas fa-project-diagram text-orange-500 mr-2"></i> Process Synthetic
258
  </div>
259
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="data" data-subtype="dataset">
260
+ <i class="fas fa-table text-orange-500 mr-2"></i> Dataset
261
  </div>
262
+ <div class="draggable-item bg-white p-3 rounded border border-gray-200 cursor-move" draggable="true" data-type="data" data-subtype="sales">
263
+ <i class="fas fa-chart-bar text-orange-500 mr-2"></i> Sales Data
264
  </div>
265
  </div>
266
  </div>
267
+ </div>
268
+
269
+ <!-- Canvas Area -->
270
+ <div class="lg:w-3/4">
271
+ <div id="workflow-canvas" class="canvas-area p-6">
272
+ <div class="empty-canvas text-center py-20 text-gray-400">
273
+ <i class="fas fa-arrows-alt text-4xl mb-4"></i>
274
+ <p class="text-xl">Drag components here to build your workflow</p>
275
+ <p class="text-sm mt-2">Connect nodes by dragging from output to input connectors</p>
276
+ </div>
277
+ </div>
278
 
279
+ <div class="mt-4 flex justify-between items-center">
280
+ <div class="text-sm text-gray-500">
281
+ <span id="node-count">0</span> nodes on canvas
 
282
  </div>
283
+ <div class="flex space-x-3">
284
+ <button id="zoom-in" class="p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded">
285
+ <i class="fas fa-search-plus"></i>
286
+ </button>
287
+ <button id="zoom-out" class="p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded">
288
+ <i class="fas fa-search-minus"></i>
289
  </button>
290
+ <button id="center-canvas" class="p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded">
291
+ <i class="fas fa-expand"></i>
292
  </button>
293
  </div>
294
  </div>
 
305
  mobileMenu.classList.toggle('open');
306
  });
307
 
308
+ // Tab functionality
309
+ const tabButtons = document.querySelectorAll('.tab-button');
310
+ const tabContents = document.querySelectorAll('.tab-content');
 
311
 
312
+ tabButtons.forEach(button => {
313
+ button.addEventListener('click', () => {
314
+ // Remove active class from all buttons and contents
315
+ tabButtons.forEach(btn => btn.classList.remove('active'));
316
+ tabContents.forEach(content => content.classList.remove('active'));
317
+
318
+ // Add active class to clicked button and corresponding content
319
+ button.classList.add('active');
320
+ const tabId = button.getAttribute('data-tab');
321
+ document.getElementById(tabId).classList.add('active');
322
  });
 
 
 
 
 
323
  });
324
 
325
+ // Canvas functionality
 
326
  const canvas = document.getElementById('workflow-canvas');
327
+ const draggableItems = document.querySelectorAll('.draggable-item');
328
+ const clearCanvasBtn = document.getElementById('clear-canvas');
329
+ const saveWorkflowBtn = document.getElementById('save-workflow');
330
+ const nodeCountElement = document.getElementById('node-count');
331
+ const emptyCanvasElement = document.querySelector('.empty-canvas');
332
+
333
+ let nodes = [];
334
+ let connections = [];
335
+ let isDragging = false;
336
+ let startConnector = null;
337
+ let tempLine = null;
338
+ let canvasScale = 1;
339
 
340
+ // Update node count
341
+ function updateNodeCount() {
342
+ const count = document.querySelectorAll('.canvas-node').length;
343
+ nodeCountElement.textContent = count;
344
+
345
+ if (count > 0) {
346
+ emptyCanvasElement.style.display = 'none';
347
+ } else {
348
+ emptyCanvasElement.style.display = 'block';
349
+ }
350
+ }
351
+
352
+ // Create a new node on canvas
353
+ function createNode(type, subtype, x, y) {
354
+ const nodeId = 'node-' + Date.now();
355
+ const node = document.createElement('div');
356
+ node.className = 'canvas-node';
357
+ node.id = nodeId;
358
+ node.style.left = `${x}px`;
359
+ node.style.top = `${y}px`;
360
+
361
+ // Set node color based on type
362
+ let icon, color, title;
363
+ switch(type) {
364
+ case 'agent':
365
+ icon = 'robot';
366
+ color = 'purple';
367
+ title = 'Agent: ' + subtype.replace('_', ' ');
368
+ break;
369
+ case 'task':
370
+ icon = 'tasks';
371
+ color = 'blue';
372
+ title = 'Task: ' + subtype.replace('_', ' ');
373
+ break;
374
+ case 'tool':
375
+ icon = 'tools';
376
+ color = 'green';
377
+ title = 'Tool: ' + subtype.replace('_', ' ');
378
+ break;
379
+ case 'data':
380
+ icon = 'database';
381
+ color = 'orange';
382
+ title = 'Data: ' + subtype.replace('_', ' ');
383
+ break;
384
+ }
385
+
386
+ // Create node HTML
387
+ node.innerHTML = `
388
+ <div class="node-header bg-${color}-50 text-${color}-700">
389
+ <div>
390
+ <i class="fas fa-${icon} mr-2"></i>
391
+ ${title}
392
+ </div>
393
+ <button class="node-delete text-gray-400 hover:text-red-500">
394
+ <i class="fas fa-times"></i>
395
+ </button>
396
+ </div>
397
+ <div class="node-content">
398
+ <select class="w-full p-2 border border-gray-300 rounded text-sm">
399
+ ${getOptionsForType(type)}
400
+ </select>
401
+ <div class="mt-2 text-xs text-gray-500">
402
+ <i class="fas fa-info-circle mr-1"></i>
403
+ ${getDescriptionForSubtype(type, subtype)}
404
+ </div>
405
+ </div>
406
+ <div class="node-connector input" data-node="${nodeId}" data-type="input"></div>
407
+ <div class="node-connector output" data-node="${nodeId}" data-type="output"></div>
408
+ `;
409
+
410
+ // Add node to canvas
411
+ canvas.appendChild(node);
412
+
413
+ // Make node draggable
414
+ makeNodeDraggable(node);
415
+
416
+ // Add delete functionality
417
+ const deleteBtn = node.querySelector('.node-delete');
418
+ deleteBtn.addEventListener('click', () => {
419
+ // Remove any connections to this node
420
+ connections = connections.filter(conn => {
421
+ return conn.fromNode !== nodeId && conn.toNode !== nodeId;
422
+ });
423
+
424
+ // Remove connection lines from DOM
425
+ document.querySelectorAll('.connection-line').forEach(line => {
426
+ if (line.dataset.fromNode === nodeId || line.dataset.toNode === nodeId) {
427
+ line.remove();
428
+ }
429
+ });
430
+
431
+ // Remove the node
432
+ node.remove();
433
+ updateNodeCount();
434
+ });
435
+
436
+ // Store node in array
437
+ nodes.push({
438
+ id: nodeId,
439
+ type: type,
440
+ subtype: subtype,
441
+ element: node
442
+ });
443
+
444
+ updateNodeCount();
445
+ return node;
446
+ }
447
+
448
+ // Get options for select dropdown based on node type
449
+ function getOptionsForType(type) {
450
+ let options = '';
451
+
452
+ switch(type) {
453
+ case 'agent':
454
+ options = `
455
+ <option value="underwriting_agent">Underwriting Agent</option>
456
+ <option value="sales_agent">Sales Agent</option>
457
+ <option value="fraud_agent">Fraud Agent</option>
458
+ <option value="claims_agent">Claims Agent</option>
459
+ `;
460
+ break;
461
+ case 'task':
462
+ options = `
463
+ <option value="risk_assessment">Risk Assessment</option>
464
+ <option value="fraud_detection">Fraud Detection</option>
465
+ <option value="sales_prospective">Sales Prospective</option>
466
+ <option value="appraisal">Appraisal</option>
467
+ <option value="estimation">Estimation</option>
468
+ `;
469
+ break;
470
+ case 'tool':
471
+ options = `
472
+ <option value="web_search">Web Search</option>
473
+ <option value="data_set">Data Set</option>
474
+ <option value="analysis">Analysis</option>
475
+ <option value="delegation">Delegation</option>
476
+ <option value="think">Think</option>
477
+ <option value="output_delivery">Output Delivery</option>
478
+ `;
479
+ break;
480
+ case 'data':
481
+ options = `
482
+ <option value="customer_synt">Customer Synthetic</option>
483
+ <option value="claim_synt">Claim Synthetic</option>
484
+ <option value="process_synt">Process Synthetic</option>
485
+ <option value="dataset">Dataset</option>
486
+ <option value="sales">Sales Data</option>
487
+ `;
488
+ break;
489
+ }
490
+
491
+ return options;
492
+ }
493
+
494
+ // Get description for subtype
495
+ function getDescriptionForSubtype(type, subtype) {
496
+ const descriptions = {
497
+ agent: {
498
+ underwriting_agent: "Evaluates and assesses risks for insurance policies",
499
+ sales_agent: "Handles customer acquisition and policy sales",
500
+ fraud_agent: "Detects and investigates potential fraudulent claims",
501
+ claims_agent: "Manages and processes insurance claims"
502
+ },
503
+ task: {
504
+ risk_assessment: "Analyzes and evaluates potential risks",
505
+ fraud_detection: "Identifies suspicious patterns in claims",
506
+ sales_prospective: "Finds and qualifies potential customers",
507
+ appraisal: "Evaluates property or damage for claims",
508
+ estimation: "Calculates claim amounts or policy costs"
509
+ },
510
+ tool: {
511
+ web_search: "Searches the web for relevant information",
512
+ data_set: "Accesses structured data for analysis",
513
+ analysis: "Performs data analysis and interpretation",
514
+ delegation: "Assigns tasks to other agents",
515
+ think: "Processes information and makes decisions",
516
+ output_delivery: "Sends results to the next step"
517
+ },
518
+ data: {
519
+ customer_synt: "Synthetic customer profile data",
520
+ claim_synt: "Synthetic insurance claim data",
521
+ process_synt: "Synthetic process workflow data",
522
+ dataset: "General structured dataset",
523
+ sales: "Historical sales performance data"
524
+ }
525
+ };
526
+
527
+ return descriptions[type]?.[subtype] || "No description available";
528
+ }
529
+
530
+ // Make node draggable
531
+ function makeNodeDraggable(node) {
532
+ const header = node.querySelector('.node-header');
533
+
534
+ header.addEventListener('mousedown', (e) => {
535
+ if (e.target.classList.contains('node-delete') || e.target.closest('.node-delete')) {
536
+ return; // Don't drag if clicking delete button
537
+ }
538
+
539
+ const startX = e.clientX;
540
+ const startY = e.clientY;
541
+ const startLeft = parseInt(node.style.left);
542
+ const startTop = parseInt(node.style.top);
543
+
544
+ function moveNode(e) {
545
+ const dx = e.clientX - startX;
546
+ const dy = e.clientY - startY;
547
+
548
+ node.style.left = `${startLeft + dx}px`;
549
+ node.style.top = `${startTop + dy}px`;
550
+
551
+ // Update connection lines
552
+ updateConnectionLines();
553
+ }
554
+
555
+ function stopDrag() {
556
+ document.removeEventListener('mousemove', moveNode);
557
+ document.removeEventListener('mouseup', stopDrag);
558
+ }
559
+
560
+ document.addEventListener('mousemove', moveNode);
561
+ document.addEventListener('mouseup', stopDrag);
562
+ });
563
+ }
564
+
565
+ // Create a connection between two nodes
566
+ function createConnection(fromNodeId, toNodeId) {
567
+ // Check if connection already exists
568
+ const existingConnection = connections.find(conn =>
569
+ conn.fromNode === fromNodeId && conn.toNode === toNodeId
570
+ );
571
+
572
+ if (existingConnection) return;
573
+
574
+ // Add to connections array
575
+ connections.push({
576
+ fromNode: fromNodeId,
577
+ toNode: toNodeId
578
+ });
579
+
580
+ // Create connection line
581
+ updateConnectionLines();
582
+ }
583
+
584
+ // Update all connection lines
585
+ function updateConnectionLines() {
586
+ // Remove all existing connection lines
587
+ document.querySelectorAll('.connection-line').forEach(line => line.remove());
588
+
589
+ // Create new connection lines
590
+ connections.forEach(conn => {
591
+ const fromNode = document.getElementById(conn.fromNode);
592
+ const toNode = document.getElementById(conn.toNode);
593
+
594
+ if (fromNode && toNode) {
595
+ const fromConnector = fromNode.querySelector('.node-connector.output');
596
+ const toConnector = toNode.querySelector('.node-connector.input');
597
+
598
+ const fromRect = fromConnector.getBoundingClientRect();
599
+ const toRect = toConnector.getBoundingClientRect();
600
+ const canvasRect = canvas.getBoundingClientRect();
601
+
602
+ const fromX = fromRect.left + fromRect.width / 2 - canvasRect.left;
603
+ const fromY = fromRect.top + fromRect.height / 2 - canvasRect.top;
604
+ const toX = toRect.left + toRect.width / 2 - canvasRect.left;
605
+ const toY = toRect.top + toRect.height / 2 - canvasRect.top;
606
+
607
+ const length = Math.sqrt(Math.pow(toX - fromX, 2) + Math.pow(toY - fromY, 2));
608
+ const angle = Math.atan2(toY - fromY, toX - fromX) * 180 / Math.PI;
609
+
610
+ const line = document.createElement('div');
611
+ line.className = 'connection-line';
612
+ line.style.width = `${length}px`;
613
+ line.style.left = `${fromX}px`;
614
+ line.style.top = `${fromY}px`;
615
+ line.style.transform = `rotate(${angle}deg)`;
616
+ line.style.transformOrigin = '0 0';
617
+ line.dataset.fromNode = conn.fromNode;
618
+ line.dataset.toNode = conn.toNode;
619
+
620
+ canvas.appendChild(line);
621
+ }
622
+ });
623
+ }
624
+
625
+ // Handle drag and drop from components panel to canvas
626
  draggableItems.forEach(item => {
627
  item.addEventListener('dragstart', (e) => {
628
+ e.dataTransfer.setData('type', e.target.dataset.type);
629
+ e.dataTransfer.setData('subtype', e.target.dataset.subtype);
630
  e.dataTransfer.effectAllowed = 'copy';
631
  });
632
  });
 
638
 
639
  canvas.addEventListener('drop', (e) => {
640
  e.preventDefault();
 
641
 
642
+ const type = e.dataTransfer.getData('type');
643
+ const subtype = e.dataTransfer.getData('subtype');
644
+
645
+ if (!type || !subtype) return;
646
 
 
647
  const rect = canvas.getBoundingClientRect();
648
+ const x = e.clientX - rect.left - 90; // Center the node on cursor
649
+ const y = e.clientY - rect.top - 40;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
650
 
651
+ createNode(type, subtype, x, y);
652
+ });
653
+
654
+ // Handle connector dragging for creating connections
655
+ canvas.addEventListener('mousedown', (e) => {
656
+ const connector = e.target.closest('.node-connector');
657
+ if (!connector) return;
658
+
659
+ e.preventDefault();
660
+ e.stopPropagation();
661
 
662
+ startConnector = {
663
+ node: connector.dataset.node,
664
+ type: connector.dataset.type,
665
+ x: e.clientX,
666
+ y: e.clientY
667
+ };
668
 
669
+ // Create temporary line
670
+ tempLine = document.createElement('div');
671
+ tempLine.className = 'connection-line';
672
+ tempLine.style.backgroundColor = '#6366f1';
673
+ canvas.appendChild(tempLine);
 
 
674
 
675
+ isDragging = true;
 
676
  });
677
 
678
+ document.addEventListener('mousemove', (e) => {
679
+ if (!isDragging || !startConnector) return;
680
+
681
+ const fromNode = document.getElementById(startConnector.node);
682
+ if (!fromNode) return;
683
+
684
+ const fromConnector = fromNode.querySelector(`.node-connector.${startConnector.type}`);
685
+ const fromRect = fromConnector.getBoundingClientRect();
686
+ const canvasRect = canvas.getBoundingClientRect();
687
+
688
+ const fromX = fromRect.left + fromRect.width / 2 - canvasRect.left;
689
+ const fromY = fromRect.top + fromRect.height / 2 - canvasRect.top;
690
+ const toX = e.clientX - canvasRect.left;
691
+ const toY = e.clientY - canvasRect.top;
692
+
693
+ const length = Math.sqrt(Math.pow(toX - fromX, 2) + Math.pow(toY - fromY, 2));
694
+ const angle = Math.atan2(toY - fromY, toX - fromX) * 180 / Math.PI;
695
+
696
+ tempLine.style.width = `${length}px`;
697
+ tempLine.style.left = `${fromX}px`;
698
+ tempLine.style.top = `${fromY}px`;
699
+ tempLine.style.transform = `rotate(${angle}deg)`;
700
  });
701
 
702
+ document.addEventListener('mouseup', (e) => {
703
+ if (!isDragging || !startConnector) {
704
+ isDragging = false;
705
+ startConnector = null;
706
+ return;
707
+ }
708
+
709
+ const connector = e.target.closest('.node-connector');
710
+ if (connector) {
711
+ const endConnector = {
712
+ node: connector.dataset.node,
713
+ type: connector.dataset.type
714
+ };
715
+
716
+ // Only connect output to input
717
+ if (startConnector.type === 'output' && endConnector.type === 'input') {
718
+ // Don't allow self-connections
719
+ if (startConnector.node !== endConnector.node) {
720
+ createConnection(startConnector.node, endConnector.node);
721
+ }
722
  }
723
  }
724
+
725
+ // Clean up
726
+ if (tempLine) {
727
+ tempLine.remove();
728
+ tempLine = null;
729
+ }
730
+
731
+ isDragging = false;
732
+ startConnector = null;
733
  });
734
 
735
+ // Clear canvas
736
+ clearCanvasBtn.addEventListener('click', () => {
737
+ if (confirm('Are you sure you want to clear the canvas?')) {
738
+ document.querySelectorAll('.canvas-node').forEach(node => node.remove());
739
+ document.querySelectorAll('.connection-line').forEach(line => line.remove());
740
+ nodes = [];
741
+ connections = [];
742
+ updateNodeCount();
743
+ }
744
+ });
745
 
746
+ // Save workflow
747
+ saveWorkflowBtn.addEventListener('click', () => {
748
+ const workflow = {
749
+ nodes: nodes.map(node => ({
750
+ id: node.id,
751
+ type: node.type,
752
+ subtype: node.subtype,
753
+ position: {
754
+ x: parseInt(node.element.style.left),
755
+ y: parseInt(node.element.style.top)
756
+ }
757
+ })),
758
+ connections: connections
759
+ };
760
+
761
+ // In a real app, you would send this to a server
762
+ console.log('Workflow saved:', workflow);
763
+ alert('Workflow saved successfully!');
764
+ });
765
+
766
+ // Zoom functionality
767
+ document.getElementById('zoom-in').addEventListener('click', () => {
768
+ canvasScale = Math.min(canvasScale + 0.1, 2);
769
+ canvas.style.transform = `scale(${canvasScale})`;
770
+ });
771
+
772
+ document.getElementById('zoom-out').addEventListener('click', () => {
773
+ canvasScale = Math.max(canvasScale - 0.1, 0.5);
774
+ canvas.style.transform = `scale(${canvasScale})`;
775
+ });
776
+
777
+ document.getElementById('center-canvas').addEventListener('click', () => {
778
+ canvasScale = 1;
779
+ canvas.style.transform = `scale(${canvasScale})`;
780
+ canvas.scrollIntoView({ behavior: 'smooth', block: 'center' });
781
+ });
782
+
783
+ // Initialize
784
+ updateNodeCount();
785
  </script>
786
  <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=designfailure/insur-mcp" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
787
  </html>
prompts.txt CHANGED
@@ -1,2 +1,3 @@
1
  #Context: I need a website application with frontend and backend components and modules. The frontend styling design must be minimalistic and modern, with a canvas page for a drag & drop feature, component capabilities for one sub-page. Additionally, the main page and one subpage are just navigable subpages from the main menu bar tab. The website must also be optimized for desktop and mobile browsing by simply detecting the user's browser type. “Scope: Deploying Synthetic Workers with Strategic Confidence at Insur.MCP, we’re not just experimenting with AI — we’re deploying synthetic workers through our Strategic and Structured Iterative Model Context Protocol (MSP) approach, for the AGENTIC insurance workflow system. It helps incumbents escape pilot purgatory and confidently scale real AI outcomes.” ##Task: Start with the frontend main page wich contains a scrollable context and a swipe layout of feature cards as follows: “At Insur.MCP, we help corporates and incubators automate the digitalization of skills by replicating how teams work — their tools, tasks, and workflows — into agentic AI systems. We bring deep insurance industry knowledge where departments run on repetitive, structured tasks, and we translate that into multi-agent AI environments that perform jobs-to-be-done autonomously. Our mission is to build secure, sandboxed workspaces with synthetic datasets to validate and train these agents safely, because we believe the future of work is agentic, modular, and truly autonomous. It’s like giving every team a digital twin that thinks and acts, not just reacts.” Start with the largest layout components and progressively refine down to smaller elements and individual components. Ensure the plan includes clear steps for testing responsiveness across all breakpoints to maintain consistency and a seamless user experience. Share the plan for review before proceeding. ###Guidelines: Name the site “Insur.MCP”.
2
- # Context: Implement modifications to the second task feature while ensuring core functionality, other features, and processes remain unaffected. ## Task: The second task is to develop and deploy step-by-step the canvas of the drag & drop subpage. Enhance the drag & drop feature capability of this subpage. Ensuring the drag & drop from the left TAB, where are placed <agent> , <task> , <tool> , <data>. Each of this TAB when selected and drag & dropped to the canvas will appear as a feature component. Users could interconnect each of those all together in different ways and specialities. ### Guidelines: a header button [Get Started] drives use to this canvas subpage, which one has the drag & drop capability. Users can select either the AGENT, TASK, TOOL, or the DATA set from the left tab. Once the TAB is placed on the canvas shows the drop-down menu as follows: [Agent]; underwriting_agent, sales_agent, fraud_agent, claims_agent [Task]; risk_assesment, fraud_detection, sales_propsective, appraisal, estimation, [Tool]; web_search, data_set, analysis, delegation, think, output_delivery [Data]; customer_synt, claim_synt, process_synt, dataset, sales, #### Constraints: Make visual enhancements—ensure functionality and drag & drop logic capability to the canvas subpage, others pages remain unaffected. Gain a comprehensive understanding of how the existing UI interacts with applicative drag & drop UX. Make certain that all designs are completely responsive at every breakpoint, adopting a mobile-first strategy. Apply contemporary UI/UX best practices to define how components should adjust for varying screen sizes, utilizing ShadCN and Tailwind’s standard breakpoints.
 
 
1
  #Context: I need a website application with frontend and backend components and modules. The frontend styling design must be minimalistic and modern, with a canvas page for a drag & drop feature, component capabilities for one sub-page. Additionally, the main page and one subpage are just navigable subpages from the main menu bar tab. The website must also be optimized for desktop and mobile browsing by simply detecting the user's browser type. “Scope: Deploying Synthetic Workers with Strategic Confidence at Insur.MCP, we’re not just experimenting with AI — we’re deploying synthetic workers through our Strategic and Structured Iterative Model Context Protocol (MSP) approach, for the AGENTIC insurance workflow system. It helps incumbents escape pilot purgatory and confidently scale real AI outcomes.” ##Task: Start with the frontend main page wich contains a scrollable context and a swipe layout of feature cards as follows: “At Insur.MCP, we help corporates and incubators automate the digitalization of skills by replicating how teams work — their tools, tasks, and workflows — into agentic AI systems. We bring deep insurance industry knowledge where departments run on repetitive, structured tasks, and we translate that into multi-agent AI environments that perform jobs-to-be-done autonomously. Our mission is to build secure, sandboxed workspaces with synthetic datasets to validate and train these agents safely, because we believe the future of work is agentic, modular, and truly autonomous. It’s like giving every team a digital twin that thinks and acts, not just reacts.” Start with the largest layout components and progressively refine down to smaller elements and individual components. Ensure the plan includes clear steps for testing responsiveness across all breakpoints to maintain consistency and a seamless user experience. Share the plan for review before proceeding. ###Guidelines: Name the site “Insur.MCP”.
2
+ # Context: Implement modifications to the second task feature while ensuring core functionality, other features, and processes remain unaffected. ## Task: The second task is to develop and deploy step-by-step the canvas of the drag & drop subpage. Enhance the drag & drop feature capability of this subpage. Ensuring the drag & drop from the left TAB, where are placed <agent> , <task> , <tool> , <data>. Each of this TAB when selected and drag & dropped to the canvas will appear as a feature component. Users could interconnect each of those all together in different ways and specialities. ### Guidelines: a header button [Get Started] drives use to this canvas subpage, which one has the drag & drop capability. Users can select either the AGENT, TASK, TOOL, or the DATA set from the left tab. Once the TAB is placed on the canvas shows the drop-down menu as follows: [Agent]; underwriting_agent, sales_agent, fraud_agent, claims_agent [Task]; risk_assesment, fraud_detection, sales_propsective, appraisal, estimation, [Tool]; web_search, data_set, analysis, delegation, think, output_delivery [Data]; customer_synt, claim_synt, process_synt, dataset, sales, #### Constraints: Make visual enhancements—ensure functionality and drag & drop logic capability to the canvas subpage, others pages remain unaffected. Gain a comprehensive understanding of how the existing UI interacts with applicative drag & drop UX. Make certain that all designs are completely responsive at every breakpoint, adopting a mobile-first strategy. Apply contemporary UI/UX best practices to define how components should adjust for varying screen sizes, utilizing ShadCN and Tailwind’s standard breakpoints.
3
+ create a subpage as Canvas CTA : # Context: Implement modifications to the second task feature while ensuring core functionality, other features, and processes remain unaffected. ## Task: The second task is to develop and deploy step-by-step the canvas of the drag & drop subpage. Enhance the drag & drop feature capability of this subpage. Ensuring the drag & drop from the left TAB, where are placed <agent> , <task> , <tool> , <data>. Each of this TAB when selected and drag & dropped to the canvas will appear as a feature component. Users could interconnect each of those all together in different ways and specialities. ### Guidelines: a header button [Get Started] drives use to this canvas subpage, which one has the drag & drop capability. Users can select either the AGENT, TASK, TOOL, or the DATA set from the left tab. Once the TAB is placed on the canvas shows the drop-down menu as follows: [Agent]; underwriting_agent, sales_agent, fraud_agent, claims_agent [Task]; risk_assesment, fraud_detection, sales_propsective, appraisal, estimation, [Tool]; web_search, data_set, analysis, delegation, think, output_delivery [Data]; customer_synt, claim_synt, process_synt, dataset, sales, #### Constraints: Make visual enhancements—ensure functionality and drag & drop logic capability to the canvas subpage, others pages remain unaffected. Gain a comprehensive understanding of how the existing UI interacts with applicative drag & drop UX. Make certain that all designs are completely responsive at every breakpoint, adopting a mobile-first strategy. Apply contemporary UI/UX best practices to define how components should adjust for varying screen sizes, utilizing ShadCN and Tailwind’s standard breakpoints.