fraim 2.0.166 → 2.0.167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/ai-hub/catalog.js +20 -27
- package/dist/src/ai-hub/server.js +418 -2
- package/dist/src/config/ai-manager-hiring.js +121 -0
- package/dist/src/config/compat.js +16 -0
- package/dist/src/config/feature-flags.js +25 -0
- package/dist/src/config/persona-capability-bundles.js +273 -0
- package/dist/src/config/persona-hiring.js +270 -0
- package/dist/src/config/portfolio-slug-overrides.js +17 -0
- package/dist/src/config/pricing.js +37 -0
- package/dist/src/config/stripe.js +43 -0
- package/dist/src/core/config-loader.js +9 -5
- package/dist/src/core/fraim-config-schema.generated.js +0 -21
- package/dist/src/core/utils/local-registry-resolver.js +8 -1
- package/package.json +5 -1
- package/public/ai-hub/index.html +81 -0
- package/public/ai-hub/review.css +13 -0
- package/public/ai-hub/script.js +414 -4
- package/public/ai-hub/styles.css +56 -0
- package/public/portfolio/ashley.html +523 -0
- package/public/portfolio/auditya.html +83 -0
- package/public/portfolio/banke.html +83 -0
- package/public/portfolio/beza.html +659 -0
- package/public/portfolio/careena.html +632 -0
- package/public/portfolio/casey.html +568 -0
- package/public/portfolio/celia.html +490 -0
- package/public/portfolio/deidre.html +642 -0
- package/public/portfolio/gautam.html +597 -0
- package/public/portfolio/hari.html +469 -0
- package/public/portfolio/huxley.html +1354 -0
- package/public/portfolio/index.html +741 -0
- package/public/portfolio/maestro.html +518 -0
- package/public/portfolio/mandy.html +590 -0
- package/public/portfolio/mona.html +597 -0
- package/public/portfolio/pam.html +887 -0
- package/public/portfolio/procella.html +107 -0
- package/public/portfolio/qasm.html +569 -0
- package/public/portfolio/ricardo.html +489 -0
- package/public/portfolio/sade.html +560 -0
- package/public/portfolio/sam.html +654 -0
- package/public/portfolio/sechar.html +580 -0
- package/public/portfolio/sreya.html +599 -0
- package/public/portfolio/swen.html +601 -0
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="light">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>CELiA · AI Legal Counsel · FRAIM Portfolio</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
|
|
10
|
+
<style>
|
|
11
|
+
:root {
|
|
12
|
+
--accent: #6366f1;
|
|
13
|
+
--accent-2: #4f46e5;
|
|
14
|
+
--accent-light: #e0e7ff;
|
|
15
|
+
--text: #1e1b4b;
|
|
16
|
+
--text-2: #334155;
|
|
17
|
+
--muted: #64748b;
|
|
18
|
+
--bg: #eef2ff;
|
|
19
|
+
--surface: #ffffff;
|
|
20
|
+
--surface-2: #f8fafc;
|
|
21
|
+
--border: #e2e8f0;
|
|
22
|
+
--shadow: 0 4px 24px rgba(30,27,75,.08);
|
|
23
|
+
--shadow-lg: 0 12px 40px rgba(30,27,75,.14);
|
|
24
|
+
--radius: 18px;
|
|
25
|
+
--radius-sm: 10px;
|
|
26
|
+
--green: #10b981;
|
|
27
|
+
--purple: #8b5cf6;
|
|
28
|
+
--amber: #f59e0b;
|
|
29
|
+
--red: #ef4444;
|
|
30
|
+
--code-bg: #0f172a;
|
|
31
|
+
--code-border: #1e293b;
|
|
32
|
+
}
|
|
33
|
+
[data-theme="dark"] {
|
|
34
|
+
--text: #e2e8f0; --text-2: #cbd5e1; --muted: #94a3b8;
|
|
35
|
+
--bg: #0d0c1a; --surface: #16143a; --surface-2: #1c1a42;
|
|
36
|
+
--border: #2e2c5e; --shadow: 0 4px 24px rgba(0,0,0,.35);
|
|
37
|
+
--shadow-lg: 0 12px 40px rgba(0,0,0,.5); --accent-light: #1e1b4b;
|
|
38
|
+
--code-bg: #060514; --code-border: #16143a;
|
|
39
|
+
}
|
|
40
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
41
|
+
body { font-family: 'Inter', sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; transition: background .3s, color .3s; }
|
|
42
|
+
code, pre, .mono { font-family: 'JetBrains Mono', 'Fira Code', monospace; }
|
|
43
|
+
|
|
44
|
+
.site-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 14px 32px; background: var(--surface); border-bottom: 1px solid var(--border); }
|
|
45
|
+
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; }
|
|
46
|
+
.brand-logo { width: 32px; height: 32px; border-radius: 8px; background: linear-gradient(135deg, #10b981, #059669); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 14px; color: #fff; }
|
|
47
|
+
.brand-name { font-weight: 700; font-size: 15px; color: var(--text); }
|
|
48
|
+
.header-actions { display: flex; align-items: center; gap: 12px; }
|
|
49
|
+
.theme-btn { background: var(--surface-2); border: 1px solid var(--border); color: var(--muted); cursor: pointer; border-radius: 8px; padding: 7px 10px; font-size: 16px; }
|
|
50
|
+
|
|
51
|
+
.hero { max-width: 900px; margin: 56px auto 0; padding: 0 24px; text-align: center; }
|
|
52
|
+
.avatar-ring { display: inline-flex; align-items: center; justify-content: center; width: 96px; height: 96px; border-radius: 50%; background: linear-gradient(135deg, #6366f1, #8b5cf6); margin-bottom: 24px; box-shadow: 0 0 0 6px var(--accent-light); overflow: hidden; }
|
|
53
|
+
.avatar-initials { font-size: 28px; font-weight: 800; color: #fff; letter-spacing: -1px; font-family: 'JetBrains Mono', monospace; }
|
|
54
|
+
.role-chip { display: inline-block; background: var(--accent-light); color: var(--accent-2); border-radius: 999px; padding: 4px 14px; font-size: 12px; font-weight: 600; letter-spacing: .04em; margin-bottom: 16px; }
|
|
55
|
+
.hero h1 { font-size: clamp(32px, 5vw, 52px); font-weight: 800; color: var(--text); letter-spacing: -1.5px; line-height: 1.1; margin-bottom: 16px; }
|
|
56
|
+
.hero h1 span { color: var(--accent); }
|
|
57
|
+
.hero p { font-size: 17px; color: var(--muted); max-width: 560px; margin: 0 auto 32px; line-height: 1.7; }
|
|
58
|
+
|
|
59
|
+
.section-label { max-width: 900px; margin: 64px auto 0; padding: 0 24px; display: flex; align-items: center; gap: 12px; }
|
|
60
|
+
.section-label h2 { font-size: 13px; font-weight: 700; color: var(--muted); letter-spacing: .08em; text-transform: uppercase; }
|
|
61
|
+
.section-divider { flex: 1; height: 1px; background: var(--border); }
|
|
62
|
+
|
|
63
|
+
.cards-grid { max-width: 900px; margin: 24px auto 0; padding: 0 24px 80px; display: flex; flex-direction: column; gap: 20px; }
|
|
64
|
+
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; transition: box-shadow .2s; }
|
|
65
|
+
.card:hover { box-shadow: var(--shadow-lg); }
|
|
66
|
+
.card-header { display: flex; align-items: flex-start; gap: 16px; padding: 24px; cursor: pointer; user-select: none; }
|
|
67
|
+
.card-icon { width: 48px; height: 48px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
|
|
68
|
+
.card-meta { flex: 1; min-width: 0; }
|
|
69
|
+
.card-tag { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 6px; }
|
|
70
|
+
.card-title { font-size: 18px; font-weight: 700; color: var(--text); line-height: 1.25; margin-bottom: 6px; }
|
|
71
|
+
.card-subtitle { font-size: 13px; color: var(--muted); }
|
|
72
|
+
.card-toggle { font-size: 22px; color: var(--muted); transition: transform .3s; flex-shrink: 0; align-self: center; }
|
|
73
|
+
.card.open .card-toggle { transform: rotate(90deg); }
|
|
74
|
+
.card-body { display: none; border-top: 1px solid var(--border); padding: 28px; }
|
|
75
|
+
.card.open .card-body { display: block; }
|
|
76
|
+
|
|
77
|
+
.card-context { font-size: 13px; color: var(--muted); font-style: italic; margin-bottom: 20px; line-height: 1.65; padding: 14px 16px; background: var(--surface-2); border-radius: var(--radius-sm); border-left: 3px solid var(--accent); }
|
|
78
|
+
|
|
79
|
+
.narrative { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-bottom: 28px; }
|
|
80
|
+
@media (max-width: 640px) { .narrative { grid-template-columns: 1fr; } }
|
|
81
|
+
.narrative-step { background: var(--surface-2); border-radius: var(--radius-sm); padding: 16px; }
|
|
82
|
+
.step-label { font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
|
|
83
|
+
.step-text { font-size: 13px; color: var(--text-2); line-height: 1.6; }
|
|
84
|
+
|
|
85
|
+
.artifact-label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
|
|
86
|
+
.artifact-label::before { content: ''; display: block; width: 20px; height: 2px; background: var(--accent); border-radius: 2px; }
|
|
87
|
+
|
|
88
|
+
.source-ref { margin-top: 16px; font-size: 12px; color: var(--muted); }
|
|
89
|
+
.source-ref a { color: var(--accent); text-decoration: none; }
|
|
90
|
+
.source-ref a:hover { text-decoration: underline; }
|
|
91
|
+
|
|
92
|
+
.card-hire-cta { margin-top: 20px; display: flex; justify-content: flex-end; }
|
|
93
|
+
|
|
94
|
+
/* ══ ARTIFACT 1 — Contract Review Redline Panel ══ */
|
|
95
|
+
.contract-panel {
|
|
96
|
+
background: #fafaf9;
|
|
97
|
+
border: 1px solid #e7e5e4;
|
|
98
|
+
border-radius: 14px;
|
|
99
|
+
overflow: hidden;
|
|
100
|
+
}
|
|
101
|
+
[data-theme="dark"] .contract-panel {
|
|
102
|
+
background: #1c1a1a;
|
|
103
|
+
border-color: #2a2827;
|
|
104
|
+
}
|
|
105
|
+
.contract-panel-header {
|
|
106
|
+
padding: 14px 20px;
|
|
107
|
+
background: #f5f5f4;
|
|
108
|
+
border-bottom: 1px solid #e7e5e4;
|
|
109
|
+
display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px;
|
|
110
|
+
}
|
|
111
|
+
[data-theme="dark"] .contract-panel-header {
|
|
112
|
+
background: #212121;
|
|
113
|
+
border-color: #2a2827;
|
|
114
|
+
}
|
|
115
|
+
.contract-doc-title { font-size: 13px; font-weight: 700; color: #1c1917; font-family: Georgia, 'Times New Roman', serif; }
|
|
116
|
+
[data-theme="dark"] .contract-doc-title { color: #e2e8f0; }
|
|
117
|
+
.contract-summary-badge {
|
|
118
|
+
display: inline-flex; align-items: center; gap: 6px;
|
|
119
|
+
background: rgba(99,102,241,.12); color: #6366f1; border: 1px solid rgba(99,102,241,.25);
|
|
120
|
+
border-radius: 999px; padding: 4px 12px; font-size: 11px; font-weight: 700;
|
|
121
|
+
}
|
|
122
|
+
.contract-issues { padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; }
|
|
123
|
+
.issue-card {
|
|
124
|
+
border-radius: 10px; padding: 14px 16px; border: 1px solid;
|
|
125
|
+
}
|
|
126
|
+
.issue-card.high { background: rgba(239,68,68,.06); border-color: rgba(239,68,68,.2); }
|
|
127
|
+
.issue-card.medium { background: rgba(245,158,11,.06); border-color: rgba(245,158,11,.2); }
|
|
128
|
+
.issue-card.low { background: rgba(234,179,8,.06); border-color: rgba(234,179,8,.2); }
|
|
129
|
+
[data-theme="dark"] .issue-card.high { background: rgba(239,68,68,.1); }
|
|
130
|
+
[data-theme="dark"] .issue-card.medium { background: rgba(245,158,11,.1); }
|
|
131
|
+
[data-theme="dark"] .issue-card.low { background: rgba(234,179,8,.1); }
|
|
132
|
+
.issue-risk-label { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 4px; }
|
|
133
|
+
.issue-risk-label.high { color: #ef4444; }
|
|
134
|
+
.issue-risk-label.medium { color: #f59e0b; }
|
|
135
|
+
.issue-risk-label.low { color: #ca8a04; }
|
|
136
|
+
.issue-section { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 4px; font-family: Georgia, 'Times New Roman', serif; }
|
|
137
|
+
.issue-desc { font-size: 12px; color: var(--text-2); line-height: 1.6; }
|
|
138
|
+
|
|
139
|
+
/* ══ ARTIFACT 2 — NDA Document Preview ══ */
|
|
140
|
+
.nda-card {
|
|
141
|
+
background: #ffffff;
|
|
142
|
+
border: 1px solid #d1d5db;
|
|
143
|
+
border-radius: 14px;
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
box-shadow: 0 2px 12px rgba(0,0,0,.06);
|
|
146
|
+
}
|
|
147
|
+
[data-theme="dark"] .nda-card {
|
|
148
|
+
background: #1a1a2e;
|
|
149
|
+
border-color: #2e2c5e;
|
|
150
|
+
}
|
|
151
|
+
.nda-doc-header {
|
|
152
|
+
padding: 24px 28px 0;
|
|
153
|
+
text-align: center;
|
|
154
|
+
border-bottom: 2px solid #1c1917;
|
|
155
|
+
padding-bottom: 16px;
|
|
156
|
+
}
|
|
157
|
+
[data-theme="dark"] .nda-doc-header { border-bottom-color: #e2e8f0; }
|
|
158
|
+
.nda-doc-title { font-size: 15px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #1c1917; font-family: Georgia, 'Times New Roman', serif; margin-bottom: 8px; }
|
|
159
|
+
[data-theme="dark"] .nda-doc-title { color: #e2e8f0; }
|
|
160
|
+
.nda-parties { font-size: 11px; color: #57534e; line-height: 1.7; font-family: Georgia, 'Times New Roman', serif; }
|
|
161
|
+
[data-theme="dark"] .nda-parties { color: #94a3b8; }
|
|
162
|
+
.nda-body { padding: 20px 28px; }
|
|
163
|
+
.nda-excerpt-label { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #94a3b8; margin-bottom: 8px; }
|
|
164
|
+
.nda-excerpt-text { font-size: 12px; color: #44403c; line-height: 1.75; font-family: Georgia, 'Times New Roman', serif; border-left: 2px solid #6366f1; padding-left: 14px; margin-bottom: 20px; }
|
|
165
|
+
[data-theme="dark"] .nda-excerpt-text { color: #cbd5e1; }
|
|
166
|
+
.nda-signatures { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-bottom: 16px; }
|
|
167
|
+
.nda-sig-line { border-top: 1px solid #a8a29e; padding-top: 6px; }
|
|
168
|
+
[data-theme="dark"] .nda-sig-line { border-top-color: #475569; }
|
|
169
|
+
.nda-sig-party { font-size: 10px; color: #78716c; font-family: Georgia, 'Times New Roman', serif; }
|
|
170
|
+
[data-theme="dark"] .nda-sig-party { color: #94a3b8; }
|
|
171
|
+
.nda-sig-blank { height: 20px; }
|
|
172
|
+
.nda-status { text-align: center; padding: 10px 16px; background: rgba(16,185,129,.08); border: 1px solid rgba(16,185,129,.2); border-radius: 8px; font-size: 11px; font-weight: 700; color: #10b981; }
|
|
173
|
+
|
|
174
|
+
/* ══ ARTIFACT 3 — Patent Application Summary ══ */
|
|
175
|
+
.patent-card {
|
|
176
|
+
background: var(--surface-2);
|
|
177
|
+
border: 1px solid var(--border);
|
|
178
|
+
border-radius: 14px;
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
}
|
|
181
|
+
.patent-header {
|
|
182
|
+
padding: 16px 20px;
|
|
183
|
+
background: var(--surface);
|
|
184
|
+
border-bottom: 1px solid var(--border);
|
|
185
|
+
display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px;
|
|
186
|
+
}
|
|
187
|
+
.patent-header-title { font-size: 14px; font-weight: 700; color: var(--text); }
|
|
188
|
+
.patent-pending-badge {
|
|
189
|
+
background: rgba(16,185,129,.1); color: #10b981; border: 1px solid rgba(16,185,129,.25);
|
|
190
|
+
border-radius: 999px; padding: 4px 12px; font-size: 11px; font-weight: 700;
|
|
191
|
+
}
|
|
192
|
+
.patent-body { padding: 20px; }
|
|
193
|
+
.patent-meta-row { display: flex; gap: 24px; margin-bottom: 16px; flex-wrap: wrap; }
|
|
194
|
+
.patent-meta-item { display: flex; flex-direction: column; gap: 2px; }
|
|
195
|
+
.patent-meta-key { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
|
|
196
|
+
.patent-meta-val { font-size: 13px; font-weight: 600; color: var(--text); font-family: 'JetBrains Mono', monospace; }
|
|
197
|
+
.patent-invention-title { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 14px; line-height: 1.4; padding: 12px 14px; background: rgba(99,102,241,.06); border: 1px solid rgba(99,102,241,.15); border-radius: 8px; }
|
|
198
|
+
.patent-claims-label { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; }
|
|
199
|
+
.patent-claims-list { display: flex; flex-direction: column; gap: 8px; }
|
|
200
|
+
.patent-claim { font-size: 12px; color: var(--text-2); line-height: 1.65; padding: 10px 14px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; }
|
|
201
|
+
.patent-claim strong { color: var(--text); }
|
|
202
|
+
|
|
203
|
+
/* Footer */
|
|
204
|
+
.portfolio-footer { background: var(--surface); border-top: 1px solid var(--border); padding: 40px 24px; text-align: center; }
|
|
205
|
+
.footer-sub { margin-top: 20px; font-size: 12px; color: var(--muted); }
|
|
206
|
+
.footer-sub a { color: var(--accent); text-decoration: none; }
|
|
207
|
+
|
|
208
|
+
@media (max-width: 640px) {
|
|
209
|
+
.site-header { padding: 12px 16px; }
|
|
210
|
+
.hero { margin-top: 36px; }
|
|
211
|
+
.cards-grid { padding: 0 16px 60px; }
|
|
212
|
+
.card-header { padding: 18px; }
|
|
213
|
+
.card-body { padding: 18px; }
|
|
214
|
+
.section-label { margin-top: 40px; padding: 0 16px; }
|
|
215
|
+
.nda-signatures { grid-template-columns: 1fr; gap: 8px; }
|
|
216
|
+
.patent-meta-row { gap: 14px; }
|
|
217
|
+
}
|
|
218
|
+
</style>
|
|
219
|
+
</head>
|
|
220
|
+
<body>
|
|
221
|
+
|
|
222
|
+
<header class="site-header">
|
|
223
|
+
<a class="brand" href="/">
|
|
224
|
+
<div class="brand-logo">F</div>
|
|
225
|
+
<span class="brand-name">FRAIM</span>
|
|
226
|
+
</a>
|
|
227
|
+
<div class="header-actions">
|
|
228
|
+
<button class="theme-btn" onclick="toggleTheme()" title="Toggle dark mode">☾</button>
|
|
229
|
+
</div>
|
|
230
|
+
</header>
|
|
231
|
+
|
|
232
|
+
<section class="hero">
|
|
233
|
+
<div class="avatar-ring">
|
|
234
|
+
<img src="https://api.dicebear.com/9.x/notionists/svg?seed=CELA-legal&backgroundColor=cbd5e1&radius=50" width="96" height="96" alt="CELA-legal avatar" style="border-radius:50%;">
|
|
235
|
+
</div>
|
|
236
|
+
<div class="role-chip">AI Legal Counsel</div>
|
|
237
|
+
<h1>Contracts reviewed.<br><span>IP protected.</span> Compliance filed.</h1>
|
|
238
|
+
<p>CELiA reviews contracts for hidden risk, drafts multi-party NDAs, and files provisional patents — so your legal work gets done before the deadline, not after.</p>
|
|
239
|
+
</section>
|
|
240
|
+
|
|
241
|
+
<div class="section-label">
|
|
242
|
+
<h2>Selected Work</h2>
|
|
243
|
+
<div class="section-divider"></div>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
<div class="cards-grid">
|
|
247
|
+
|
|
248
|
+
<!-- Card 1: Contract Review -->
|
|
249
|
+
<div class="card open" id="card1">
|
|
250
|
+
<div class="card-header" onclick="toggleCard(1)">
|
|
251
|
+
<div class="card-icon" style="background:#e0e7ff;">📋</div>
|
|
252
|
+
<div class="card-meta">
|
|
253
|
+
<div class="card-tag" style="color:#6366f1;">Contract Intelligence</div>
|
|
254
|
+
<div class="card-title">47-page SaaS contract. Key risks in 20 minutes.</div>
|
|
255
|
+
<div class="card-subtitle">FRAIM · contract-review-analysis · fraim/ai-employee/jobs/</div>
|
|
256
|
+
</div>
|
|
257
|
+
<div class="card-toggle">›</div>
|
|
258
|
+
</div>
|
|
259
|
+
<div class="card-body">
|
|
260
|
+
<div class="card-context">A startup was about to sign a 3-year enterprise SaaS contract worth $480K ARR. The contract was 47 pages. Their only lawyer charged $650/hour. The CEO was going to sign without review to save money.</div>
|
|
261
|
+
|
|
262
|
+
<div class="narrative">
|
|
263
|
+
<div class="narrative-step">
|
|
264
|
+
<div class="step-label">Why legal review gets skipped</div>
|
|
265
|
+
<div class="step-text">Most startup founders skip legal review on contracts under $500K because the cost-benefit feels wrong — a $2,000 review on a $480K deal sounds reasonable, but when the deal is already 90% closed and the lawyer takes a week, it just doesn't happen. The risk is hidden in boilerplate that looks standard but isn't.</div>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="narrative-step">
|
|
268
|
+
<div class="step-label">What CELiA Can Build</div>
|
|
269
|
+
<div class="step-text">CELiA analyzed the 47-page contract in 20 minutes: flagged a data processing clause that assigned full GDPR liability to the vendor; identified an auto-renewal clause locking in a 25% price increase unless canceled 90 days before renewal; noted that the IP assignment clause would have transferred ownership of any custom integrations to the enterprise customer; and proposed specific redline language for all three issues.</div>
|
|
270
|
+
</div>
|
|
271
|
+
<div class="narrative-step">
|
|
272
|
+
<div class="step-label">Possible Outcome</div>
|
|
273
|
+
<div class="step-text">CELiA's contract redline analysis can typically get 2 of 3 flagged issues accepted in negotiation, including auto-renewal clauses capped at 5%. Over a 3-year term, this kind of review can avoid an estimated $120K in liability exposure and $48K in unexpected pricing increases.</div>
|
|
274
|
+
</div>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
<div class="artifact-label">Live Artifact — Contract Review Redlines</div>
|
|
278
|
+
|
|
279
|
+
<div class="contract-panel">
|
|
280
|
+
<div class="contract-panel-header">
|
|
281
|
+
<span class="contract-doc-title">Contract Review — Enterprise SaaS Agreement</span>
|
|
282
|
+
<span class="contract-summary-badge">2/3 accepted · $168K risk avoided</span>
|
|
283
|
+
</div>
|
|
284
|
+
<div class="contract-issues">
|
|
285
|
+
<div class="issue-card high">
|
|
286
|
+
<div class="issue-risk-label high">🔴 HIGH RISK</div>
|
|
287
|
+
<div class="issue-section">§12.3 Data Processing Liability</div>
|
|
288
|
+
<div class="issue-desc">Clause assigns full GDPR liability to vendor. Standard practice assigns to the data controller (customer). Proposed redline: mutual liability, pro-rated by party's contribution to the breach.</div>
|
|
289
|
+
</div>
|
|
290
|
+
<div class="issue-card medium">
|
|
291
|
+
<div class="issue-risk-label medium">🟠 MEDIUM RISK</div>
|
|
292
|
+
<div class="issue-section">§8.1 Auto-Renewal Pricing</div>
|
|
293
|
+
<div class="issue-desc">Auto-renews with 25% price increase if not canceled 90 days prior. Redline: cap at 5% CPI-indexed increase. <strong>Accepted.</strong></div>
|
|
294
|
+
</div>
|
|
295
|
+
<div class="issue-card low">
|
|
296
|
+
<div class="issue-risk-label low">🟡 LOW-MEDIUM RISK</div>
|
|
297
|
+
<div class="issue-section">§14.2 Custom Integration IP</div>
|
|
298
|
+
<div class="issue-desc">Transfers ownership of custom integrations to customer. Redline: vendor retains ownership, grants perpetual license. <strong>Accepted.</strong></div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</div>
|
|
302
|
+
|
|
303
|
+
<div class="source-ref">
|
|
304
|
+
📎 Source: <a href="#">FRAIM · contract-review-analysis · fraim/ai-employee/jobs/contract-review-analysis.md</a>
|
|
305
|
+
</div>
|
|
306
|
+
<div class="card-hire-cta">
|
|
307
|
+
</div>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<!-- Card 2: NDA Creation -->
|
|
312
|
+
<div class="card" id="card2">
|
|
313
|
+
<div class="card-header" onclick="toggleCard(2)">
|
|
314
|
+
<div class="card-icon" style="background:#e0e7ff;">🔒</div>
|
|
315
|
+
<div class="card-meta">
|
|
316
|
+
<div class="card-tag" style="color:#6366f1;">IP Protection</div>
|
|
317
|
+
<div class="card-title">3-party NDA. Drafted. Signed. 2 hours.</div>
|
|
318
|
+
<div class="card-subtitle">FRAIM · nda-creation · fraim/ai-employee/jobs/</div>
|
|
319
|
+
</div>
|
|
320
|
+
<div class="card-toggle">›</div>
|
|
321
|
+
</div>
|
|
322
|
+
<div class="card-body">
|
|
323
|
+
<div class="card-context">A startup needed a mutual NDA for a partnership discussion involving three parties across two countries — US and UK — before they could share technical roadmap details.</div>
|
|
324
|
+
|
|
325
|
+
<div class="narrative">
|
|
326
|
+
<div class="narrative-step">
|
|
327
|
+
<div class="step-label">Why standard templates fail</div>
|
|
328
|
+
<div class="step-text">Multi-party, multi-jurisdiction NDAs are not routine. Most NDA templates are bilateral and US-only. The specific requirements — mutual confidentiality, UK law compliance, 3-party signature block, carve-out for regulatory disclosure — meant the standard template wouldn't work without modification.</div>
|
|
329
|
+
</div>
|
|
330
|
+
<div class="narrative-step">
|
|
331
|
+
<div class="step-label">What CELiA Can Build</div>
|
|
332
|
+
<div class="step-text">CELiA drafted the 3-party mutual NDA: dual-law governing clause (Delaware for US entities, English law for UK entity), defined "Confidential Information" to include technical roadmaps explicitly, added a specific carve-out for regulatory disclosure requiring prior notice to the other parties, and structured the signature block for DocuSign routing to all three parties in sequence.</div>
|
|
333
|
+
</div>
|
|
334
|
+
<div class="narrative-step">
|
|
335
|
+
<div class="step-label">Possible Outcome</div>
|
|
336
|
+
<div class="step-text">CELiA can draft a multi-party NDA ready for DocuSign within hours — enabling partnership discussions to start the same day. Cross-border deals that might otherwise wait days for legal review can often close the paperwork formalities before the conversation even begins.</div>
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
<div class="artifact-label">Live Artifact — NDA Document Preview</div>
|
|
341
|
+
|
|
342
|
+
<div class="nda-card">
|
|
343
|
+
<div class="nda-doc-header">
|
|
344
|
+
<div class="nda-doc-title">Mutual Non-Disclosure Agreement</div>
|
|
345
|
+
<div class="nda-parties">
|
|
346
|
+
Parties: [Company A] (Delaware Corporation) · [Company B] (Delaware Corporation) · [Company C] (England and Wales)
|
|
347
|
+
</div>
|
|
348
|
+
</div>
|
|
349
|
+
<div class="nda-body">
|
|
350
|
+
<div class="nda-excerpt-label">§2 — Key Clause Excerpt</div>
|
|
351
|
+
<div class="nda-excerpt-text">
|
|
352
|
+
"§2 CONFIDENTIAL INFORMATION includes, without limitation, technical roadmaps, product development plans, source code, customer lists, financial projections, and any information designated as confidential in writing by the disclosing party. Disclosure required by applicable law or regulation shall be permitted only upon prior written notice to the non-disclosing parties with reasonable opportunity to seek a protective order."
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<div class="nda-excerpt-label">Signature Block</div>
|
|
356
|
+
<div class="nda-signatures">
|
|
357
|
+
<div class="nda-sig-line">
|
|
358
|
+
<div class="nda-sig-blank"></div>
|
|
359
|
+
<div class="nda-sig-party">[Company A] (Delaware)<br>Authorized Signatory</div>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="nda-sig-line">
|
|
362
|
+
<div class="nda-sig-blank"></div>
|
|
363
|
+
<div class="nda-sig-party">[Company B] (Delaware)<br>Authorized Signatory</div>
|
|
364
|
+
</div>
|
|
365
|
+
<div class="nda-sig-line">
|
|
366
|
+
<div class="nda-sig-blank"></div>
|
|
367
|
+
<div class="nda-sig-party">[Company C] (England & Wales)<br>Authorized Signatory</div>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
<div class="nda-status">✓ Executed via DocuSign — May 19, 2026 14:32 UTC</div>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
|
|
374
|
+
<div class="source-ref">
|
|
375
|
+
📎 Source: <a href="#">FRAIM · nda-creation · fraim/ai-employee/jobs/nda-creation.md</a>
|
|
376
|
+
</div>
|
|
377
|
+
<div class="card-hire-cta">
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
382
|
+
<!-- Card 3: Provisional Patent Application -->
|
|
383
|
+
<div class="card" id="card3">
|
|
384
|
+
<div class="card-header" onclick="toggleCard(3)">
|
|
385
|
+
<div class="card-icon" style="background:#e0e7ff;">⚖️</div>
|
|
386
|
+
<div class="card-meta">
|
|
387
|
+
<div class="card-tag" style="color:#6366f1;">IP Strategy</div>
|
|
388
|
+
<div class="card-title">Patent filed before the conference talk</div>
|
|
389
|
+
<div class="card-subtitle">FRAIM · provisional-patent-application-creation · fraim/ai-employee/jobs/</div>
|
|
390
|
+
</div>
|
|
391
|
+
<div class="card-toggle">›</div>
|
|
392
|
+
</div>
|
|
393
|
+
<div class="card-body">
|
|
394
|
+
<div class="card-context">A technical founder had invented a novel method for real-time multi-agent task orchestration and was speaking at a conference in 12 days. Speaking publicly before filing a patent waives rights in some jurisdictions.</div>
|
|
395
|
+
|
|
396
|
+
<div class="narrative">
|
|
397
|
+
<div class="narrative-step">
|
|
398
|
+
<div class="step-label">The filing window problem</div>
|
|
399
|
+
<div class="step-text">Provisional patent applications (PPAs) give 12 months of "patent pending" status at low cost — but they require a written description of the invention, drawings, and claims specific enough to support the eventual full application. Most founders either file nothing and lose rights, or spend $5,000–$15,000 on a patent attorney.</div>
|
|
400
|
+
</div>
|
|
401
|
+
<div class="narrative-step">
|
|
402
|
+
<div class="step-label">What CELiA Can Build</div>
|
|
403
|
+
<div class="step-text">CELiA drafted the provisional patent application: wrote the technical description of the orchestration method with sufficient specificity to support claims, drafted 3 independent claims covering the core innovation (task decomposition, parallel dispatch, conflict resolution protocol), created flowchart drawings of the method, and prepared the USPTO filing packet (cover sheet, application, drawings, fee calculation).</div>
|
|
404
|
+
</div>
|
|
405
|
+
<div class="narrative-step">
|
|
406
|
+
<div class="step-label">Possible Outcome</div>
|
|
407
|
+
<div class="step-text">CELiA can prepare a provisional patent application within days of a conference deadline. The resulting draft can typically serve as 95% of what a patent attorney would charge $12,000 to produce — reducing the final review to 1 hour of attorney time. A well-prepared PPA filed this way often proceeds to non-provisional approval within 2 years.</div>
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
410
|
+
|
|
411
|
+
<div class="artifact-label">Live Artifact — Patent Application Summary</div>
|
|
412
|
+
|
|
413
|
+
<div class="patent-card">
|
|
414
|
+
<div class="patent-header">
|
|
415
|
+
<span class="patent-header-title">US Provisional Patent Application</span>
|
|
416
|
+
<span class="patent-pending-badge">Patent Pending · 12-month protection window</span>
|
|
417
|
+
</div>
|
|
418
|
+
<div class="patent-body">
|
|
419
|
+
<div class="patent-meta-row">
|
|
420
|
+
<div class="patent-meta-item">
|
|
421
|
+
<span class="patent-meta-key">Filing Date</span>
|
|
422
|
+
<span class="patent-meta-val">May 10, 2026</span>
|
|
423
|
+
</div>
|
|
424
|
+
<div class="patent-meta-item">
|
|
425
|
+
<span class="patent-meta-key">Status</span>
|
|
426
|
+
<span class="patent-meta-val" style="color:#10b981;">Filed</span>
|
|
427
|
+
</div>
|
|
428
|
+
<div class="patent-meta-item">
|
|
429
|
+
<span class="patent-meta-key">USPTO Confirmation #</span>
|
|
430
|
+
<span class="patent-meta-val">73849201</span>
|
|
431
|
+
</div>
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
<div class="patent-invention-title">
|
|
435
|
+
Title of Invention: "Method and System for Real-Time Multi-Agent Task Orchestration with Conflict Resolution"
|
|
436
|
+
</div>
|
|
437
|
+
|
|
438
|
+
<div class="patent-claims-label">Claims Preview</div>
|
|
439
|
+
<div class="patent-claims-list">
|
|
440
|
+
<div class="patent-claim">
|
|
441
|
+
<strong>1.</strong> A method for decomposing a complex task into parallelizable sub-tasks, comprising: identifying inter-task dependencies; dispatching independent sub-tasks to specialized agents; monitoring for conflicts arising from concurrent execution; and applying a deterministic conflict resolution protocol to produce a consistent combined result.
|
|
442
|
+
</div>
|
|
443
|
+
<div class="patent-claim">
|
|
444
|
+
<strong>2.</strong> The method of claim 1, wherein conflict resolution comprises: assigning priority weights to agent outputs based on task domain confidence scores; and applying a weighted merge operation to conflicting state updates.
|
|
445
|
+
</div>
|
|
446
|
+
<div class="patent-claim">
|
|
447
|
+
<strong>3.</strong> A system implementing the method of claim 1, comprising: an orchestration controller; a dependency graph resolver; a plurality of specialized agent runtimes; and a conflict arbitration module.
|
|
448
|
+
</div>
|
|
449
|
+
</div>
|
|
450
|
+
</div>
|
|
451
|
+
</div>
|
|
452
|
+
|
|
453
|
+
<div class="source-ref">
|
|
454
|
+
📎 Source: <a href="#">FRAIM · provisional-patent-application-creation · fraim/ai-employee/jobs/provisional-patent-application.md</a>
|
|
455
|
+
</div>
|
|
456
|
+
<div class="card-hire-cta">
|
|
457
|
+
</div>
|
|
458
|
+
</div>
|
|
459
|
+
</div>
|
|
460
|
+
|
|
461
|
+
</div>
|
|
462
|
+
|
|
463
|
+
<footer class="portfolio-footer">
|
|
464
|
+
<div class="footer-sub">
|
|
465
|
+
Part of the <a href="/">FRAIM</a> · 18 AI employees available ·
|
|
466
|
+
<a href="/">Back to FRAIM</a>
|
|
467
|
+
</div>
|
|
468
|
+
</footer>
|
|
469
|
+
|
|
470
|
+
<script>
|
|
471
|
+
function toggleTheme() {
|
|
472
|
+
const html = document.documentElement;
|
|
473
|
+
const isDark = html.getAttribute('data-theme') === 'dark';
|
|
474
|
+
html.setAttribute('data-theme', isDark ? 'light' : 'dark');
|
|
475
|
+
document.querySelector('.theme-btn').textContent = isDark ? '☾' : '☀';
|
|
476
|
+
}
|
|
477
|
+
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
478
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
479
|
+
document.querySelector('.theme-btn').textContent = '☀';
|
|
480
|
+
}
|
|
481
|
+
function toggleCard(num) {
|
|
482
|
+
const card = document.getElementById('card' + num);
|
|
483
|
+
const isOpen = card.classList.contains('open');
|
|
484
|
+
document.querySelectorAll('.card').forEach(c => c.classList.remove('open'));
|
|
485
|
+
if (!isOpen) { card.classList.add('open'); card.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }
|
|
486
|
+
}
|
|
487
|
+
</script>
|
|
488
|
+
|
|
489
|
+
</body>
|
|
490
|
+
</html>
|