@contractspec/bundle.marketing 3.7.6 → 3.7.7
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/.turbo/turbo-build.log +84 -84
- package/AGENTS.md +29 -21
- package/README.md +36 -49
- package/dist/browser/components/marketing/ChangelogPage.js +8 -8
- package/dist/browser/components/marketing/CofounderPage.js +167 -523
- package/dist/browser/components/marketing/ContactClient.js +200 -207
- package/dist/browser/components/marketing/ContributePage.js +211 -463
- package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/browser/components/marketing/LandingPage.js +464 -568
- package/dist/browser/components/marketing/PricingClient.js +213 -839
- package/dist/browser/components/marketing/ProductClientPage.js +265 -463
- package/dist/browser/components/marketing/index.js +2007 -3338
- package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
- package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
- package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
- package/dist/browser/components/marketing/studio-signup-section.js +25 -41
- package/dist/browser/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/browser/components/templates/TemplatesPage.js +1 -1
- package/dist/browser/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/browser/components/templates/index.js +2361 -3615
- package/dist/browser/index.js +2363 -3617
- package/dist/browser/libs/email/client.js +1 -1
- package/dist/browser/libs/email/contact.js +1 -1
- package/dist/browser/libs/email/newsletter.js +1 -1
- package/dist/browser/libs/email/waitlist-application.js +1 -1
- package/dist/browser/libs/email/waitlist.js +1 -1
- package/dist/browser/registry/engine.js +2003 -3334
- package/dist/browser/registry/index.js +2003 -3334
- package/dist/browser/registry/registry-docs.js +2 -2
- package/dist/browser/registry/registry-landing.js +2007 -3338
- package/dist/browser/registry/registry.js +2003 -3334
- package/dist/browser/registry/utils.js +2003 -3334
- package/dist/components/marketing/ChangelogPage.js +8 -8
- package/dist/components/marketing/CofounderPage.js +167 -523
- package/dist/components/marketing/ContactClient.js +200 -207
- package/dist/components/marketing/ContributePage.d.ts +0 -2
- package/dist/components/marketing/ContributePage.js +211 -463
- package/dist/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/components/marketing/LandingPage.js +464 -568
- package/dist/components/marketing/PricingClient.js +213 -839
- package/dist/components/marketing/ProductClientPage.js +265 -463
- package/dist/components/marketing/index.d.ts +5 -5
- package/dist/components/marketing/index.js +2007 -3338
- package/dist/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/components/marketing/sections/CtaSection.js +3 -3
- package/dist/components/marketing/sections/FearsSection.js +3 -3
- package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
- package/dist/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/components/marketing/sections/StepsSection.js +4 -4
- package/dist/components/marketing/studio-signup-section.js +25 -41
- package/dist/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/components/templates/TemplatesPage.js +1 -1
- package/dist/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/components/templates/index.js +2361 -3615
- package/dist/index.js +2363 -3617
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +1 -1
- package/dist/libs/email/newsletter.js +1 -1
- package/dist/libs/email/waitlist-application.js +1 -1
- package/dist/libs/email/waitlist.js +1 -1
- package/dist/node/components/marketing/ChangelogPage.js +8 -8
- package/dist/node/components/marketing/CofounderPage.js +167 -523
- package/dist/node/components/marketing/ContactClient.js +200 -207
- package/dist/node/components/marketing/ContributePage.js +211 -463
- package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/node/components/marketing/LandingPage.js +464 -568
- package/dist/node/components/marketing/PricingClient.js +213 -839
- package/dist/node/components/marketing/ProductClientPage.js +265 -463
- package/dist/node/components/marketing/index.js +2007 -3338
- package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/node/components/marketing/sections/CtaSection.js +3 -3
- package/dist/node/components/marketing/sections/FearsSection.js +3 -3
- package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/node/components/marketing/sections/StepsSection.js +4 -4
- package/dist/node/components/marketing/studio-signup-section.js +25 -41
- package/dist/node/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/node/components/templates/TemplatesPage.js +1 -1
- package/dist/node/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/node/components/templates/index.js +2361 -3615
- package/dist/node/index.js +2363 -3617
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +1 -1
- package/dist/node/libs/email/newsletter.js +1 -1
- package/dist/node/libs/email/waitlist-application.js +1 -1
- package/dist/node/libs/email/waitlist.js +1 -1
- package/dist/node/registry/engine.js +2003 -3334
- package/dist/node/registry/index.js +2003 -3334
- package/dist/node/registry/registry-docs.js +2 -2
- package/dist/node/registry/registry-landing.js +2007 -3338
- package/dist/node/registry/registry.js +2003 -3334
- package/dist/node/registry/utils.js +2003 -3334
- package/dist/registry/engine.js +2003 -3334
- package/dist/registry/index.js +2003 -3334
- package/dist/registry/registry-docs.js +2 -2
- package/dist/registry/registry-landing.js +2007 -3338
- package/dist/registry/registry.js +2003 -3334
- package/dist/registry/utils.js +2003 -3334
- package/package.json +22 -22
- package/src/bundles/MarketingBundle.ts +273 -273
- package/src/components/marketing/ChangelogPage.tsx +72 -100
- package/src/components/marketing/CofounderPage.tsx +120 -384
- package/src/components/marketing/ContactClient.tsx +164 -154
- package/src/components/marketing/ContributePage.tsx +139 -313
- package/src/components/marketing/DesignPartnerPage.tsx +133 -171
- package/src/components/marketing/LandingPage.tsx +353 -25
- package/src/components/marketing/PricingClient.tsx +192 -437
- package/src/components/marketing/ProductClientPage.tsx +255 -377
- package/src/components/marketing/index.ts +5 -5
- package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
- package/src/components/marketing/sections/AudienceSection.tsx +55 -56
- package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
- package/src/components/marketing/sections/CtaSection.tsx +49 -50
- package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
- package/src/components/marketing/sections/FearsSection.tsx +36 -37
- package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
- package/src/components/marketing/sections/IconGridSection.tsx +71 -71
- package/src/components/marketing/sections/OutputsSection.tsx +51 -52
- package/src/components/marketing/sections/ProblemSection.tsx +39 -40
- package/src/components/marketing/sections/SolutionSection.tsx +39 -40
- package/src/components/marketing/sections/StepsSection.tsx +47 -48
- package/src/components/marketing/studio-signup-section.tsx +39 -41
- package/src/components/templates/TemplatesClientPage.tsx +727 -685
- package/src/components/templates/TemplatesPage.tsx +110 -110
- package/src/components/templates/TemplatesPreviewModal.tsx +197 -198
- package/src/index.ts +4 -4
- package/src/libs/email/client.test.ts +81 -81
- package/src/libs/email/client.ts +111 -111
- package/src/libs/email/contact.ts +35 -35
- package/src/libs/email/newsletter.ts +46 -46
- package/src/libs/email/types.ts +29 -29
- package/src/libs/email/utils.ts +5 -5
- package/src/libs/email/waitlist-application.ts +72 -72
- package/src/libs/email/waitlist.ts +46 -46
- package/src/libs/pricing-examples.ts +12 -12
- package/src/registry/engine.ts +16 -16
- package/src/registry/factory.ts +57 -57
- package/src/registry/registry-docs.ts +656 -666
- package/src/registry/registry-landing.ts +94 -95
- package/src/registry/registry.ts +36 -37
- package/src/registry/types.ts +2 -2
- package/src/registry/utils.ts +56 -56
- package/tsconfig.json +11 -11
- package/tsdown.config.js +5 -5
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import { Box, HStack, VStack } from '@contractspec/lib.ui-kit-web/ui/stack';
|
|
5
|
-
import {
|
|
6
|
-
H1,
|
|
7
|
-
H2,
|
|
8
|
-
H3,
|
|
9
|
-
Lead,
|
|
10
|
-
Muted,
|
|
11
|
-
Small,
|
|
12
|
-
} from '@contractspec/lib.ui-kit-web/ui/typography';
|
|
13
|
-
import {
|
|
14
|
-
Check,
|
|
15
|
-
Clock,
|
|
16
|
-
MapPin,
|
|
17
|
-
MessageSquare,
|
|
18
|
-
Percent,
|
|
19
|
-
Rocket,
|
|
20
|
-
Target,
|
|
21
|
-
Users,
|
|
22
|
-
X,
|
|
23
|
-
} from 'lucide-react';
|
|
3
|
+
import Link from 'next/link';
|
|
24
4
|
|
|
25
5
|
const COFOUNDER_EMAIL = 'tboutron@contractspec.io';
|
|
26
6
|
const APPLY_SUBJECT = 'Co-founder application: ContractSpec';
|
|
@@ -41,369 +21,125 @@ What I would own in the first 90 days:
|
|
|
41
21
|
|
|
42
22
|
const mailtoLink = `mailto:${COFOUNDER_EMAIL}?subject=${encodeURIComponent(APPLY_SUBJECT)}&body=${encodeURIComponent(APPLY_BODY)}`;
|
|
43
23
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
</H1>
|
|
55
|
-
<Lead className="text-muted-foreground max-w-2xl text-lg text-balance md:text-xl">
|
|
56
|
-
ContractSpec is a contract-first compiler for AI-generated code.
|
|
57
|
-
Define specs, enforce policies, regenerate safely. Pre-PMF. Building
|
|
58
|
-
in public.
|
|
59
|
-
</Lead>
|
|
60
|
-
<HStack gap="md" justify="center" wrap="wrap" className="pt-2">
|
|
61
|
-
<ButtonLink href={mailtoLink}>Talk about co-founding</ButtonLink>
|
|
62
|
-
<ButtonLink variant="ghost" href="/contact">
|
|
63
|
-
Become a design partner
|
|
64
|
-
</ButtonLink>
|
|
65
|
-
</HStack>
|
|
66
|
-
</VStack>
|
|
67
|
-
</MarketingSection>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function WhatExistsSection() {
|
|
72
|
-
const realNow = [
|
|
73
|
-
'ContractSpec Core: open-source spec compiler',
|
|
74
|
-
'Working CLI and TypeScript runtime',
|
|
75
|
-
'Design partner pipeline open',
|
|
76
|
-
'Solo founder, bootstrapped',
|
|
77
|
-
];
|
|
78
|
-
|
|
79
|
-
const planned = [
|
|
80
|
-
'ContractSpec Studio product-decision engine',
|
|
81
|
-
'Auto-evolution engine',
|
|
82
|
-
'Multi-tenant SaaS',
|
|
83
|
-
'Integration marketplace',
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
return (
|
|
87
|
-
<MarketingSection padding="comfortable" align="center" maxWidth="lg">
|
|
88
|
-
<VStack gap="lg">
|
|
89
|
-
<H2 className="text-3xl font-bold">What exists today</H2>
|
|
90
|
-
<div className="grid w-full gap-8 md:grid-cols-2">
|
|
91
|
-
<VStack gap="sm" align="start">
|
|
92
|
-
<H3 className="text-lg font-semibold text-emerald-400">Real now</H3>
|
|
93
|
-
<ul className="space-y-2">
|
|
94
|
-
{realNow.map((item) => (
|
|
95
|
-
<li key={item} className="flex items-start gap-2">
|
|
96
|
-
<Check size={16} className="mt-1 shrink-0 text-emerald-400" />
|
|
97
|
-
<Small>{item}</Small>
|
|
98
|
-
</li>
|
|
99
|
-
))}
|
|
100
|
-
</ul>
|
|
101
|
-
</VStack>
|
|
102
|
-
<VStack gap="sm" align="start">
|
|
103
|
-
<H3 className="text-lg font-semibold text-blue-400">Planned</H3>
|
|
104
|
-
<ul className="space-y-2">
|
|
105
|
-
{planned.map((item) => (
|
|
106
|
-
<li key={item} className="flex items-start gap-2">
|
|
107
|
-
<Target size={16} className="mt-1 shrink-0 text-blue-400" />
|
|
108
|
-
<Small>{item}</Small>
|
|
109
|
-
</li>
|
|
110
|
-
))}
|
|
111
|
-
</ul>
|
|
112
|
-
</VStack>
|
|
113
|
-
</div>
|
|
114
|
-
</VStack>
|
|
115
|
-
</MarketingSection>
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
function RoleSection() {
|
|
120
|
-
const gtmDeliverables = [
|
|
121
|
-
'Run 5+ sales conversations per week',
|
|
122
|
-
'Own the design partner pipeline end-to-end',
|
|
123
|
-
'Write positioning copy that ships',
|
|
124
|
-
'Build and maintain partnership channels',
|
|
125
|
-
'Turn user feedback into roadmap signal',
|
|
126
|
-
];
|
|
127
|
-
|
|
128
|
-
const productDeliverables = [
|
|
129
|
-
'Ship UI/UX improvements weekly',
|
|
130
|
-
'Define specs based on user research',
|
|
131
|
-
'Own the Studio product experience',
|
|
132
|
-
'Collaborate on architecture decisions',
|
|
133
|
-
];
|
|
134
|
-
|
|
135
|
-
return (
|
|
136
|
-
<MarketingSection
|
|
137
|
-
// tone="subtle"
|
|
138
|
-
padding="comfortable"
|
|
139
|
-
align="center"
|
|
140
|
-
maxWidth="lg"
|
|
141
|
-
>
|
|
142
|
-
<VStack gap="lg">
|
|
143
|
-
<H2 className="text-3xl font-bold">The role</H2>
|
|
144
|
-
<VStack gap="md" align="start" className="w-full">
|
|
145
|
-
<H3 className="text-xl font-semibold">
|
|
146
|
-
Option A: GTM / Sales / Partnerships
|
|
147
|
-
</H3>
|
|
148
|
-
<Muted>Weekly deliverables, not vague traits:</Muted>
|
|
149
|
-
<ul className="space-y-2">
|
|
150
|
-
{gtmDeliverables.map((item) => (
|
|
151
|
-
<li key={item} className="flex items-start gap-2">
|
|
152
|
-
<Rocket size={16} className="mt-1 shrink-0 text-amber-400" />
|
|
153
|
-
<Small>{item}</Small>
|
|
154
|
-
</li>
|
|
155
|
-
))}
|
|
156
|
-
</ul>
|
|
157
|
-
</VStack>
|
|
158
|
-
<VStack gap="md" align="start" className="w-full pt-4">
|
|
159
|
-
<H3 className="text-xl font-semibold">Option B: Product / Design</H3>
|
|
160
|
-
<Muted>If this is your strength:</Muted>
|
|
161
|
-
<ul className="space-y-2">
|
|
162
|
-
{productDeliverables.map((item) => (
|
|
163
|
-
<li key={item} className="flex items-start gap-2">
|
|
164
|
-
<Rocket size={16} className="mt-1 shrink-0 text-purple-400" />
|
|
165
|
-
<Small>{item}</Small>
|
|
166
|
-
</li>
|
|
167
|
-
))}
|
|
168
|
-
</ul>
|
|
169
|
-
</VStack>
|
|
170
|
-
</VStack>
|
|
171
|
-
</MarketingSection>
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function IdealCofounderSection() {
|
|
176
|
-
const qualities = [
|
|
177
|
-
"You have shipped products people paid for — links or it didn't happen",
|
|
178
|
-
'You have sold something (product, consulting, yourself)',
|
|
179
|
-
'You write clearly and fast — emails, docs, copy',
|
|
180
|
-
'You have taste: you know good UX when you see it',
|
|
181
|
-
'You can work 6+ months without a salary',
|
|
182
|
-
'You are allergic to meetings that could be docs',
|
|
183
|
-
'You have built in public or contributed to open source',
|
|
184
|
-
'You are based in Europe or overlap significantly with CET',
|
|
185
|
-
];
|
|
186
|
-
|
|
187
|
-
return (
|
|
188
|
-
<MarketingSection padding="comfortable" align="center" maxWidth="lg">
|
|
189
|
-
<VStack gap="lg">
|
|
190
|
-
<H2 className="text-3xl font-bold">The ideal co-founder</H2>
|
|
191
|
-
<ul className="space-y-3">
|
|
192
|
-
{qualities.map((item) => (
|
|
193
|
-
<li key={item} className="flex items-start gap-2">
|
|
194
|
-
<Check size={16} className="mt-1 shrink-0 text-emerald-400" />
|
|
195
|
-
<Small>{item}</Small>
|
|
196
|
-
</li>
|
|
197
|
-
))}
|
|
198
|
-
</ul>
|
|
199
|
-
<Box className="border-border mt-4 rounded-lg border p-4">
|
|
200
|
-
<VStack gap="sm" align="start">
|
|
201
|
-
<H3 className="text-lg font-semibold">Proof of work examples</H3>
|
|
202
|
-
<Muted className="text-sm">
|
|
203
|
-
GitHub profile, shipped product, writing (blog/Twitter/essays),
|
|
204
|
-
revenue screenshot, open-source contributions, or anything that
|
|
205
|
-
shows you execute.
|
|
206
|
-
</Muted>
|
|
207
|
-
</VStack>
|
|
208
|
-
</Box>
|
|
209
|
-
</VStack>
|
|
210
|
-
</MarketingSection>
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
function WhatYouGetSection() {
|
|
215
|
-
const benefits = [
|
|
216
|
-
{
|
|
217
|
-
icon: <Percent size={20} className="text-emerald-400" />,
|
|
218
|
-
title: 'Equity-first',
|
|
219
|
-
desc: 'Meaningful co-founder equity. Salary is minimal/zero until revenue covers it.',
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
icon: <Users size={20} className="text-blue-400" />,
|
|
223
|
-
title: 'Real ownership',
|
|
224
|
-
desc: 'You own your domain. No permission-seeking. Ship and iterate.',
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
icon: <MessageSquare size={20} className="text-amber-400" />,
|
|
228
|
-
title: 'Written-first decisions',
|
|
229
|
-
desc: 'We default to async, docs, and fast decisions. Meetings are last resort.',
|
|
230
|
-
},
|
|
231
|
-
];
|
|
232
|
-
|
|
233
|
-
const values = [
|
|
234
|
-
'Contracts over conventions',
|
|
235
|
-
'Clarity over cleverness',
|
|
236
|
-
'Safety over speed (in code)',
|
|
237
|
-
'Leverage over labor',
|
|
238
|
-
];
|
|
239
|
-
|
|
240
|
-
return (
|
|
241
|
-
<MarketingSection
|
|
242
|
-
// tone="subtle"
|
|
243
|
-
padding="comfortable"
|
|
244
|
-
align="center"
|
|
245
|
-
maxWidth="lg"
|
|
246
|
-
>
|
|
247
|
-
<VStack gap="lg">
|
|
248
|
-
<H2 className="text-3xl font-bold">What you get</H2>
|
|
249
|
-
<div className="grid w-full gap-6 md:grid-cols-3">
|
|
250
|
-
{benefits.map((b) => (
|
|
251
|
-
<VStack
|
|
252
|
-
key={b.title}
|
|
253
|
-
gap="sm"
|
|
254
|
-
align="start"
|
|
255
|
-
className="border-border rounded-lg border p-4"
|
|
256
|
-
>
|
|
257
|
-
{b.icon}
|
|
258
|
-
<H3 className="text-lg font-semibold">{b.title}</H3>
|
|
259
|
-
<Muted className="text-sm">{b.desc}</Muted>
|
|
260
|
-
</VStack>
|
|
261
|
-
))}
|
|
262
|
-
</div>
|
|
263
|
-
<VStack gap="sm" align="start" className="w-full pt-4">
|
|
264
|
-
<H3 className="text-lg font-semibold">Our values</H3>
|
|
265
|
-
<HStack gap="sm" wrap="wrap">
|
|
266
|
-
{values.map((v) => (
|
|
267
|
-
<Box
|
|
268
|
-
key={v}
|
|
269
|
-
className="border-border rounded-full border px-3 py-1 text-sm"
|
|
270
|
-
>
|
|
271
|
-
{v}
|
|
272
|
-
</Box>
|
|
273
|
-
))}
|
|
274
|
-
</HStack>
|
|
275
|
-
</VStack>
|
|
276
|
-
</VStack>
|
|
277
|
-
</MarketingSection>
|
|
278
|
-
);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
function RedFlagsSection() {
|
|
282
|
-
const redFlags = [
|
|
283
|
-
'Needs a big salary now',
|
|
284
|
-
'Hates selling or talking to users',
|
|
285
|
-
'Vague about past execution',
|
|
286
|
-
'Wants to "advise" instead of build',
|
|
287
|
-
'Needs a big team to feel productive',
|
|
288
|
-
'Cannot write clearly',
|
|
289
|
-
];
|
|
290
|
-
|
|
291
|
-
return (
|
|
292
|
-
<MarketingSection padding="comfortable" align="center" maxWidth="lg">
|
|
293
|
-
<VStack gap="lg">
|
|
294
|
-
<H2 className="text-3xl font-bold">Non-negotiables / red flags</H2>
|
|
295
|
-
<Muted>If any of these apply, this is not the right fit:</Muted>
|
|
296
|
-
<ul className="space-y-2">
|
|
297
|
-
{redFlags.map((item) => (
|
|
298
|
-
<li key={item} className="flex items-start gap-2">
|
|
299
|
-
<X size={16} className="mt-1 shrink-0 text-red-400" />
|
|
300
|
-
<Small>{item}</Small>
|
|
301
|
-
</li>
|
|
302
|
-
))}
|
|
303
|
-
</ul>
|
|
304
|
-
</VStack>
|
|
305
|
-
</MarketingSection>
|
|
306
|
-
);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
function FAQSection() {
|
|
310
|
-
const faqs = [
|
|
311
|
-
{
|
|
312
|
-
icon: <Users size={18} />,
|
|
313
|
-
q: 'Why co-founder instead of hiring?',
|
|
314
|
-
a: "I need a partner who thinks like an owner, not an employee. Someone who will stay when things get hard and share in the upside when they don't.",
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
icon: <Clock size={18} />,
|
|
318
|
-
q: 'What is the timeline to revenue?',
|
|
319
|
-
a: 'Design partners are converting now. Goal: paying customers in 2025. But this is startup life — timelines are best guesses.',
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
icon: <MapPin size={18} />,
|
|
323
|
-
q: 'Is this remote?',
|
|
324
|
-
a: 'Yes. Async-first. Occasional in-person (Paris-based) for planning. Europe timezone overlap strongly preferred.',
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
icon: <Percent size={18} />,
|
|
328
|
-
q: 'How much equity?',
|
|
329
|
-
a: 'Depends on what you bring, when you join, and how much you can commit. Expect meaningful co-founder equity with 4-year vesting. We will discuss specifics in person.',
|
|
330
|
-
},
|
|
331
|
-
];
|
|
332
|
-
|
|
333
|
-
return (
|
|
334
|
-
<MarketingSection
|
|
335
|
-
// tone="subtle"
|
|
336
|
-
padding="comfortable"
|
|
337
|
-
align="center"
|
|
338
|
-
maxWidth="lg"
|
|
339
|
-
>
|
|
340
|
-
<VStack gap="lg">
|
|
341
|
-
<H2 className="text-3xl font-bold">FAQ</H2>
|
|
342
|
-
<VStack gap="md" className="w-full">
|
|
343
|
-
{faqs.map((faq) => (
|
|
344
|
-
<VStack
|
|
345
|
-
key={faq.q}
|
|
346
|
-
gap="xs"
|
|
347
|
-
align="start"
|
|
348
|
-
className="border-border w-full rounded-lg border p-4"
|
|
349
|
-
>
|
|
350
|
-
<HStack gap="sm" align="center">
|
|
351
|
-
<span className="text-muted-foreground">{faq.icon}</span>
|
|
352
|
-
<H3 className="text-lg font-semibold">{faq.q}</H3>
|
|
353
|
-
</HStack>
|
|
354
|
-
<Muted>{faq.a}</Muted>
|
|
355
|
-
</VStack>
|
|
356
|
-
))}
|
|
357
|
-
</VStack>
|
|
358
|
-
</VStack>
|
|
359
|
-
</MarketingSection>
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
function FinalCtaSection() {
|
|
364
|
-
return (
|
|
365
|
-
<MarketingSection
|
|
366
|
-
tone="gradient"
|
|
367
|
-
padding="comfortable"
|
|
368
|
-
align="center"
|
|
369
|
-
maxWidth="lg"
|
|
370
|
-
>
|
|
371
|
-
<VStack gap="md" align="center" className="text-center">
|
|
372
|
-
<H2 className="text-3xl font-bold md:text-4xl">Ready to talk?</H2>
|
|
373
|
-
<Lead className="text-muted-foreground max-w-xl">
|
|
374
|
-
Send an email with: your LinkedIn, 2 proof-of-work links, why
|
|
375
|
-
ContractSpec, and what you would own in the first 90 days.
|
|
376
|
-
</Lead>
|
|
377
|
-
<HStack gap="md" justify="center" wrap="wrap" className="pt-2">
|
|
378
|
-
<ButtonLink href={mailtoLink}>Talk about co-founding</ButtonLink>
|
|
379
|
-
<ButtonLink variant="ghost" href="/contact">
|
|
380
|
-
Become a design partner
|
|
381
|
-
</ButtonLink>
|
|
382
|
-
</HStack>
|
|
383
|
-
<Muted className="pt-4 text-sm">
|
|
384
|
-
CHAMAN VENTURES, SASU · RCS Paris · SIREN 989 498 902 · 229 rue
|
|
385
|
-
Saint-Honoré, 75001 Paris
|
|
386
|
-
</Muted>
|
|
387
|
-
</VStack>
|
|
388
|
-
</MarketingSection>
|
|
389
|
-
);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
/* -------------------------------------------------------------------------- */
|
|
393
|
-
/* Main Component */
|
|
394
|
-
/* -------------------------------------------------------------------------- */
|
|
24
|
+
const tracks = [
|
|
25
|
+
{
|
|
26
|
+
title: 'GTM / partnerships',
|
|
27
|
+
copy: 'Own the design partner pipeline, sharpen messaging, and turn market feedback into product signal.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: 'Product / design',
|
|
31
|
+
copy: 'Own the Studio surface, shape the interaction model, and turn live user behavior into clearer workflows.',
|
|
32
|
+
},
|
|
33
|
+
];
|
|
395
34
|
|
|
396
35
|
export function CofounderPage() {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
36
|
+
return (
|
|
37
|
+
<main>
|
|
38
|
+
<section className="section-padding hero-gradient border-border/70 border-b">
|
|
39
|
+
<div className="editorial-shell grid gap-8 lg:grid-cols-[1.05fr_0.95fr]">
|
|
40
|
+
<div className="space-y-5">
|
|
41
|
+
<p className="editorial-kicker">Co-founder search</p>
|
|
42
|
+
<h1 className="editorial-title max-w-4xl">
|
|
43
|
+
Looking for a co-founder who wants to build an open system and the
|
|
44
|
+
product on top of it.
|
|
45
|
+
</h1>
|
|
46
|
+
<p className="editorial-subtitle">
|
|
47
|
+
ContractSpec already has the early stack shape: explicit
|
|
48
|
+
contracts, runtimes, harnesses, examples, and the first Studio
|
|
49
|
+
operating loops. The next phase needs someone who can own either
|
|
50
|
+
GTM or product depth with real execution energy.
|
|
51
|
+
</p>
|
|
52
|
+
</div>
|
|
53
|
+
<div className="editorial-panel space-y-5">
|
|
54
|
+
<p className="editorial-kicker">What exists now</p>
|
|
55
|
+
<ul className="editorial-list">
|
|
56
|
+
<li>
|
|
57
|
+
<span className="editorial-list-marker" />
|
|
58
|
+
<span>
|
|
59
|
+
Open-source package ecosystem and working website/docs
|
|
60
|
+
surface.
|
|
61
|
+
</span>
|
|
62
|
+
</li>
|
|
63
|
+
<li>
|
|
64
|
+
<span className="editorial-list-marker" />
|
|
65
|
+
<span>
|
|
66
|
+
Studio product direction with live operating workflows.
|
|
67
|
+
</span>
|
|
68
|
+
</li>
|
|
69
|
+
<li>
|
|
70
|
+
<span className="editorial-list-marker" />
|
|
71
|
+
<span>
|
|
72
|
+
Founder-led product, bootstrapped, still early enough to
|
|
73
|
+
shape.
|
|
74
|
+
</span>
|
|
75
|
+
</li>
|
|
76
|
+
</ul>
|
|
77
|
+
<Link href={mailtoLink} className="btn-primary">
|
|
78
|
+
Talk about co-founding
|
|
79
|
+
</Link>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</section>
|
|
83
|
+
|
|
84
|
+
<section className="editorial-section">
|
|
85
|
+
<div className="editorial-shell grid gap-6 lg:grid-cols-2">
|
|
86
|
+
{tracks.map((track) => (
|
|
87
|
+
<div key={track.title} className="editorial-panel">
|
|
88
|
+
<p className="editorial-kicker">{track.title}</p>
|
|
89
|
+
<h2 className="mt-3 font-serif text-4xl tracking-[-0.04em]">
|
|
90
|
+
{track.title}
|
|
91
|
+
</h2>
|
|
92
|
+
<p className="mt-4 text-muted-foreground text-sm leading-7">
|
|
93
|
+
{track.copy}
|
|
94
|
+
</p>
|
|
95
|
+
</div>
|
|
96
|
+
))}
|
|
97
|
+
</div>
|
|
98
|
+
</section>
|
|
99
|
+
|
|
100
|
+
<section className="editorial-section bg-striped">
|
|
101
|
+
<div className="editorial-shell grid gap-8 lg:grid-cols-2">
|
|
102
|
+
<div className="editorial-panel">
|
|
103
|
+
<p className="editorial-kicker">What good looks like</p>
|
|
104
|
+
<ul className="editorial-list mt-6">
|
|
105
|
+
<li>
|
|
106
|
+
<span className="editorial-list-marker" />
|
|
107
|
+
<span>You have proof of work, not just interest.</span>
|
|
108
|
+
</li>
|
|
109
|
+
<li>
|
|
110
|
+
<span className="editorial-list-marker" />
|
|
111
|
+
<span>
|
|
112
|
+
You can own a whole surface and move without waiting for
|
|
113
|
+
permission.
|
|
114
|
+
</span>
|
|
115
|
+
</li>
|
|
116
|
+
<li>
|
|
117
|
+
<span className="editorial-list-marker" />
|
|
118
|
+
<span>
|
|
119
|
+
You like written clarity, sharp product taste, and direct
|
|
120
|
+
feedback.
|
|
121
|
+
</span>
|
|
122
|
+
</li>
|
|
123
|
+
</ul>
|
|
124
|
+
</div>
|
|
125
|
+
<div className="editorial-panel">
|
|
126
|
+
<p className="editorial-kicker">Apply</p>
|
|
127
|
+
<p className="text-muted-foreground text-sm leading-7">
|
|
128
|
+
Send links that prove how you think and how you ship. The best
|
|
129
|
+
applications make it obvious what you would own in the first 90
|
|
130
|
+
days and why this problem is worth years of your attention.
|
|
131
|
+
</p>
|
|
132
|
+
<div className="mt-6 flex flex-col gap-3 sm:flex-row">
|
|
133
|
+
<Link href={mailtoLink} className="btn-primary">
|
|
134
|
+
Email application
|
|
135
|
+
</Link>
|
|
136
|
+
<Link href="/contact" className="btn-ghost">
|
|
137
|
+
Start with a conversation
|
|
138
|
+
</Link>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
</section>
|
|
143
|
+
</main>
|
|
144
|
+
);
|
|
409
145
|
}
|