-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
373 lines (340 loc) · 23.8 KB
/
Copy pathindex.html
File metadata and controls
373 lines (340 loc) · 23.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>prospect-research-agent — type a name, get a sales-grade psychological profile</title>
<meta name="description" content="An n8n + LangChain agent that takes a prospect name and returns a 10-section psychological sales profile in 60 seconds. GPT-4o + Perplexity Sonar + LinkedIn scraping. Open source.">
<meta property="og:title" content="prospect-research-agent — your 60-second sales-grade prospect dossier">
<meta property="og:description" content="Chat with the agent. Drop a prospect name. Get a 10-section psychological profile by email. Built in n8n + LangChain.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://darshakbhatt-aiproductlabs.github.io/prospect-research-agent/">
<meta name="twitter:card" content="summary_large_image">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%237c3aed'/%3E%3Ccircle cx='32' cy='24' r='10' fill='white'/%3E%3Cpath d='M14 54c0-10 8-16 18-16s18 6 18 16' fill='white'/%3E%3Ccircle cx='48' cy='20' r='5' fill='%23fbbf24' stroke='%237c3aed' stroke-width='2'/%3E%3C/svg%3E">
<style>
*,*::before,*::after{box-sizing:border-box}
:root{
--bg:#0d1117; --surface:#161b22; --surface-2:#21262d; --border:#30363d;
--text:#e6edf3; --text-dim:#8b949e; --text-faint:#6e7681;
--accent:#a78bfa; --accent-2:#38bdf8; --accent-3:#fbbf24;
--accent-grad:linear-gradient(135deg,#a78bfa 0%,#38bdf8 100%);
--max-w:1100px;
}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}
code,pre{font-family:"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;font-size:.9em}
code{background:var(--surface-2);padding:2px 6px;border-radius:4px;color:var(--accent-3)}
pre{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px;overflow-x:auto;line-height:1.5}
pre code{background:none;padding:0;color:var(--text)}
nav.top{position:sticky;top:0;z-index:50;background:rgba(13,17,23,.85);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border)}
nav.top .inner{max-width:var(--max-w);margin:0 auto;padding:14px 24px;display:flex;justify-content:space-between;align-items:center}
nav.top .logo{font-weight:700;font-size:18px;letter-spacing:-.01em;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
nav.top .links{display:flex;gap:22px;align-items:center}
nav.top .links a{color:var(--text-dim);font-size:14px;font-weight:500;transition:color 150ms ease}
nav.top .links a:hover{color:var(--text);text-decoration:none}
nav.top .links a.gh{color:var(--text);border:1px solid var(--border);padding:6px 12px;border-radius:6px}
nav.top .links a.gh:hover{border-color:var(--accent);background:var(--surface)}
@media (max-width:600px){nav.top .links a:not(.gh){display:none}}
header.hero{position:relative;padding:96px 24px 80px;overflow:hidden}
header.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(800px at 20% 0%,rgba(167,139,250,.15),transparent 60%),radial-gradient(700px at 80% 30%,rgba(56,189,248,.10),transparent 60%);pointer-events:none}
header.hero .inner{position:relative;max-width:var(--max-w);margin:0 auto;text-align:center}
.pill{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;background:var(--surface);border:1px solid var(--border);border-radius:999px;font-size:13px;color:var(--text-dim);margin-bottom:28px}
.pill .dot{width:6px;height:6px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}
header.hero h1{font-size:clamp(36px,5.5vw,60px);line-height:1.04;letter-spacing:-.025em;margin:0 0 20px;font-weight:800}
header.hero h1 .grad{background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
header.hero p.lead{max-width:720px;margin:0 auto 36px;color:var(--text-dim);font-size:clamp(16px,2vw,19px);line-height:1.6}
.ctas{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:8px;font-weight:600;font-size:15px;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:transform 100ms ease,box-shadow 150ms ease;font-family:inherit}
.btn-primary{background:var(--accent-grad);color:white;box-shadow:0 6px 24px -8px rgba(167,139,250,.6)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(167,139,250,.75);text-decoration:none}
.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}
.btn-secondary:hover{background:var(--surface-2);border-color:var(--accent);text-decoration:none}
.hero-meta{margin-top:44px;display:flex;justify-content:center;gap:28px;flex-wrap:wrap;color:var(--text-faint);font-size:14px}
.hero-meta strong{color:var(--text);font-weight:600}
section{padding:88px 24px}
section .inner{max-width:var(--max-w);margin:0 auto}
section h2{font-size:clamp(28px,3.5vw,38px);letter-spacing:-.02em;font-weight:700;margin:0 0 12px;text-align:center}
section .subhead{text-align:center;color:var(--text-dim);font-size:17px;margin:0 auto 48px;max-width:640px}
section.alt{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.steps{max-width:820px;margin:0 auto;list-style:none;padding:0;counter-reset:step}
.steps li{position:relative;padding:28px 28px 28px 88px;background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:16px;counter-increment:step}
.steps li::before{content:counter(step);position:absolute;left:24px;top:26px;width:44px;height:44px;background:var(--accent-grad);color:white;font-weight:700;font-size:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.steps li h3{margin:0 0 8px;font-size:18px}
.steps li p{margin:0 0 12px;color:var(--text-dim);font-size:15px}
.steps li p:last-child{margin-bottom:0}
.ai-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.ai-chip{background:var(--surface-2);border:1px solid var(--border);padding:5px 12px;border-radius:999px;font-size:13px;color:var(--text-dim)}
.diagram-wrap{max-width:920px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px;overflow-x:auto}
.chat-frame{max-width:680px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.chat-head{padding:14px 18px;background:var(--surface-2);border-bottom:1px solid var(--border);font-size:13px;color:var(--text-dim);display:flex;align-items:center;gap:10px}
.chat-head::before{content:"";width:8px;height:8px;background:#22c55e;border-radius:50%}
.chat-body{padding:24px;display:flex;flex-direction:column;gap:14px;background:#0a0d12}
.msg{max-width:75%;padding:12px 16px;border-radius:14px;font-size:14.5px;line-height:1.5}
.msg.bot{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px;align-self:flex-start}
.msg.user{background:var(--accent-grad);color:white;border-bottom-right-radius:4px;align-self:flex-end}
.msg.bot .typing{display:inline-block;width:6px;height:6px;background:var(--text-faint);border-radius:50%;margin-right:3px;animation:bounce 1.2s infinite ease-in-out}
.msg.bot .typing:nth-child(2){animation-delay:.15s}
.msg.bot .typing:nth-child(3){animation-delay:.3s}
@keyframes bounce{0%,80%,100%{transform:translateY(0);opacity:.3}40%{transform:translateY(-6px);opacity:1}}
.report-frame{max-width:860px;margin:32px auto 0;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.report-toolbar{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.preview-dot{width:12px;height:12px;border-radius:50%}
.preview-dot.red{background:#ff5f57}.preview-dot.yellow{background:#febc2e}.preview-dot.green{background:#28c840}
.report-meta{flex:1;color:var(--text-dim);font-size:13px;text-align:center}
.report-body{padding:30px 36px;background:#fff;color:#1a1a1a;font-size:14px;line-height:1.6;max-height:560px;overflow-y:auto}
.report-body h1{font-size:22px;margin:0 0 6px;color:#1a1a1a}
.report-body .pname{color:#7c3aed;font-weight:700}
.report-body hr{border:0;border-top:1px solid #e5e5e5;margin:18px 0}
.report-body h2{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:#7c3aed;margin:22px 0 10px}
.report-body h3{font-size:14.5px;color:#1a1a1a;margin:14px 0 6px}
.report-body p,.report-body li{font-size:13.5px;color:#333}
.report-body ol,.report-body ul{padding-left:20px;margin:6px 0 12px}
.report-body .bottom-line{margin-top:18px;padding:14px;border-left:3px solid #7c3aed;background:#faf7ff;font-size:13.5px;border-radius:0 6px 6px 0}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media (max-width:900px){.feature-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.feature-grid{grid-template-columns:1fr}}
.feature-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px;transition:border-color 200ms ease,transform 200ms ease}
.feature-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.feature-card .icon{font-size:24px;margin-bottom:12px;display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;background:var(--surface-2);border-radius:8px}
.feature-card h3{font-size:16px;margin:0 0 8px}
.feature-card p{margin:0;color:var(--text-dim);font-size:14px;line-height:1.6}
.badges{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.badge{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);padding:7px 14px;border-radius:6px;font-size:14px;font-weight:500}
.ethics{max-width:760px;margin:0 auto;padding:28px 32px;background:rgba(251,191,36,.06);border:1px solid rgba(251,191,36,.3);border-radius:12px}
.ethics h3{margin:0 0 8px;color:var(--accent-3);font-size:16px;display:flex;align-items:center;gap:8px}
.ethics p{margin:0 0 10px;color:var(--text-dim);font-size:14.5px;line-height:1.65}
.ethics p:last-child{margin-bottom:0}
.final-cta{max-width:720px;margin:0 auto;text-align:center;padding:60px 32px;background:linear-gradient(135deg,rgba(167,139,250,.08),rgba(56,189,248,.06));border:1px solid var(--border);border-radius:16px}
.final-cta h2{margin-top:0}.final-cta p{color:var(--text-dim);margin-bottom:28px}
footer{border-top:1px solid var(--border);padding:40px 24px 30px;background:var(--surface)}
footer .inner{max-width:var(--max-w);margin:0 auto;display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;align-items:center}
footer .credit{color:var(--text-dim);font-size:14px}
footer .credit a{color:var(--text);font-weight:600}
footer .links-row{display:flex;gap:22px}
footer .links-row a{color:var(--text-dim);font-size:14px}
footer .links-row a:hover{color:var(--text)}
</style>
</head>
<body>
<nav class="top">
<div class="inner">
<a href="#" class="logo">prospect-research-agent</a>
<div class="links">
<a href="#how">How it works</a>
<a href="#arch">Architecture</a>
<a href="#sample">Sample output</a>
<a href="#ethics">Ethics</a>
<a class="gh" href="https://github.com/darshakbhatt-aiproductlabs/prospect-research-agent" target="_blank" rel="noopener">View on GitHub</a>
</div>
</div>
</nav>
<header class="hero">
<div class="inner">
<span class="pill"><span class="dot"></span> Chat-triggered · 60-second turnaround · Open source</span>
<h1>Type a prospect name.<br><span class="grad">Get a sales-grade dossier.</span></h1>
<p class="lead">An n8n + LangChain agent that takes a prospect name, scrapes their LinkedIn, enriches via Perplexity Sonar Pro, and returns a 10-section psychological sales profile by email — in about a minute.</p>
<div class="ctas">
<a class="btn btn-primary" href="https://github.com/darshakbhatt-aiproductlabs/prospect-research-agent" target="_blank" rel="noopener">‹/› View on GitHub</a>
<a class="btn btn-secondary" href="workflows/prospect-research.json" download>⬇ Download workflow</a>
</div>
<div class="hero-meta">
<span>💬 <strong>Chat or Calendly</strong> trigger</span>
<span>🧠 GPT-4o + Perplexity Sonar Pro</span>
<span>📑 <strong>10-section</strong> structured profile</span>
<span>📧 Email-delivered</span>
</div>
</div>
</header>
<section class="alt">
<div class="inner">
<h2>Chat with the agent.</h2>
<p class="subhead">The agent collects the prospect name, validates the format, then triggers a 5-stage research pipeline behind the scenes.</p>
<div class="chat-frame">
<div class="chat-head">prospect-research-agent · online</div>
<div class="chat-body">
<div class="msg user">Hi</div>
<div class="msg bot">I am doing good. Kindly share the name in 'Firstname Lastname' format of your prospect.</div>
<div class="msg user">Jane Anderson</div>
<div class="msg bot">Thank you. Processing Jane Anderson for research. You'll get the dossier by email in ~60 seconds.</div>
<div class="msg bot"><span class="typing"></span><span class="typing"></span><span class="typing"></span></div>
</div>
</div>
</div>
</section>
<section id="how">
<div class="inner">
<h2>How it works.</h2>
<p class="subhead">A two-agent chain. The first agent does background research; the second turns research into a sales-shaped psychological profile.</p>
<ol class="steps">
<li>
<h3>Capture the name</h3>
<p>Trigger is either a chat message or a Calendly invitee event. A small LLM (gpt-4o-mini) handles the polite "what's the prospect's name" flow and extracts a clean <code>Firstname Lastname</code> string.</p>
</li>
<li>
<h3>Validate</h3>
<p>An <code>IF</code> node checks the extracted string exists and is longer than 2 characters. If not, the agent re-prompts. If yes, we move to research.</p>
</li>
<li>
<h3>Background research</h3>
<p>Research Agent (GPT-4o) gets three tools: <strong>Perplexity Sonar Pro</strong> for company + recent activity, <strong>Google Search</strong> for the LinkedIn URL, and <strong>LinkedIn scraper</strong> for the profile body. The system prompt explicitly says "be relentless about finding the LinkedIn".</p>
<div class="ai-row">
<span class="ai-chip">GPT-4o</span><span class="ai-chip">Perplexity Sonar Pro</span><span class="ai-chip">LinkedIn scrape</span>
</div>
</li>
<li>
<h3>Psychological profiling</h3>
<p>Profiler Agent (gpt-4o-latest) takes the research output and runs it through a long, structured prompt: archetype, buying triggers, objections, communication blueprint, decision-making blind spots, social proof patterns, scripts, action plan. Output is a 10-section markdown report.</p>
</li>
<li>
<h3>Deliver</h3>
<p>The completed profile goes to the configured Gmail recipient as the body of an email titled <code>Psychological Profile Report</code>. Total run time: typically 45–90 seconds depending on LinkedIn responsiveness.</p>
</li>
</ol>
</div>
</section>
<section id="arch" class="alt">
<div class="inner">
<h2>Architecture.</h2>
<p class="subhead">Two LangChain agents stitched together by n8n nodes. Each agent gets its own memory buffer.</p>
<div class="diagram-wrap">
<pre class="mermaid">
flowchart TD
A1[💬 Chat trigger] --> B
A2[📅 Calendly trigger] --> C
B[Greeter Agent<br/>gpt-4o-mini] --> C[Extract Name LLM<br/>chatgpt-4o-latest]
C --> D{Valid name?<br/>len > 2}
D -- no --> B
D -- yes --> E[Research Agent<br/>GPT-4o + tools]
E -.uses.-> F[🔍 Perplexity<br/>Sonar Pro]
E -.uses.-> G[🌐 Google Search]
E -.uses.-> H[💼 LinkedIn scrape]
E --> I[Psychological Profiler<br/>chatgpt-4o-latest]
I --> J[📧 Gmail<br/>send report]
style E fill:#a78bfa20,stroke:#a78bfa,color:#fff
style I fill:#38bdf820,stroke:#38bdf8,color:#fff
style J fill:#22c55e20,stroke:#22c55e,color:#fff
</pre>
</div>
</div>
</section>
<section id="sample">
<div class="inner">
<h2>What the dossier looks like.</h2>
<p class="subhead">Real format, fully synthetic prospect. The actual prompt produces ~3,000 words across 10 sections.</p>
<div class="report-frame">
<div class="report-toolbar">
<span class="preview-dot red"></span><span class="preview-dot yellow"></span><span class="preview-dot green"></span>
<span class="report-meta">📧 Psychological Profile Report — Jane Anderson</span>
</div>
<div class="report-body">
<h1>🤖 Sales Psychological Profile</h1>
<p><b>Prospect:</b> <span class="pname">Jane Anderson</span> · VP Operations · ContosoLogix · 11 yrs experience · Chicago, IL</p>
<hr>
<h2>📊 Executive Summary</h2>
<p>Jane is an operations-first, data-driven leader who values process discipline and quantified outcomes. She's mid-adopter on technology but late-majority on AI specifically — burned once by a 2023 RPA implementation that under-delivered. Pitch automation around <em>regaining time</em> and <em>cost discipline</em>, not novelty.</p>
<hr>
<h2>🎯 Buying Triggers (Ranked)</h2>
<ol>
<li><b>Cost-per-shipment pressure.</b> Her LinkedIn posts in Q1 referenced "doing more with the same headcount." Lead with workflows that eliminate FTE-equivalents in receiving and routing.</li>
<li><b>Audit-readiness.</b> ContosoLogix is preparing for SOC 2; she's the executive sponsor. Frame the audit as an opportunity to make process automation a control, not a side-project.</li>
<li><b>Peer pressure.</b> Two of her named peers at WayneCorp and Stark Logistics have publicly talked about automation programs.</li>
</ol>
<hr>
<h2>🚧 Likely Objections</h2>
<h3>"We tried automation and it didn't work."</h3>
<p>→ Counter: "The 2023 RPA effort failed because the processes weren't audited first. Our audit identifies which workflows are automation-ready and which need optimization. We eliminate the guesswork."</p>
<h3>"We don't have budget this quarter."</h3>
<p>→ Counter: "The audit shows you which automations pay for themselves fastest. Most clients fund the second engagement from the first one's savings."</p>
<hr>
<h2>🗣️ Opening Lines (Use Verbatim)</h2>
<ol>
<li>"Saw your post about doing more with the same headcount — most logistics ops teams we audit have 15-25 hours per week of automatable receiving work. Worth a 20-min look?"</li>
<li>"Your SOC 2 prep is a great moment to turn process discipline into a control, not just a checkbox. We've helped two logistics peers do exactly that."</li>
</ol>
<hr>
<h2>⚡ 30-Day Sales Plan</h2>
<ul>
<li>Week 1 — Email opener referencing her cost-per-shipment LinkedIn post.</li>
<li>Week 2 — LinkedIn message with WayneCorp automation case study (with permission).</li>
<li>Week 3 — Audit pitch: 2-hour scoping call.</li>
<li>Week 4 — Deliver one-page audit findings + implementation roadmap.</li>
</ul>
<div class="bottom-line">
<b>🤖 Bottom line.</b> Lead with audit-as-control framing for SOC 2 prep; back it with cost-per-shipment hard numbers; use WayneCorp social proof. Avoid AI-novelty pitches.
</div>
</div>
</div>
</div>
</section>
<section>
<div class="inner">
<h2>Built with.</h2>
<p class="subhead">All open-source where possible. Two LLM calls per run; cost ~$0.10 per profile at gpt-4o pricing.</p>
<div class="badges">
<span class="badge">n8n</span>
<span class="badge">LangChain (n8n nodes)</span>
<span class="badge">OpenAI GPT-4o</span>
<span class="badge">gpt-4o-mini</span>
<span class="badge">chatgpt-4o-latest</span>
<span class="badge">Perplexity Sonar Pro</span>
<span class="badge">Google Search</span>
<span class="badge">LinkedIn scraping</span>
<span class="badge">Gmail OAuth</span>
<span class="badge">Calendly Trigger</span>
</div>
</div>
</section>
<section id="ethics" class="alt">
<div class="inner">
<h2>A note on ethics.</h2>
<p class="subhead">This tool researches publicly available information about professional contacts. Use it well.</p>
<div class="ethics">
<h3>🟡 What this is for</h3>
<p>Preparing for sales conversations and partnership discussions with people who have already publicly signaled openness to that (booked a meeting, opened a thread, listed contact info). It compresses 30 minutes of manual research into 60 seconds, using sources the recipient has already chosen to make public — LinkedIn, company news, podcast appearances.</p>
<p><b>What it is not for:</b> mass cold outreach, scraping non-consenting individuals, building shadow profiles, or any use that violates LinkedIn's terms of service or GDPR. The included LinkedIn scraping integration is rate-limited and intended for one-prospect-at-a-time use. <b>You're responsible for your jurisdiction's rules.</b></p>
<p>If you're going to use it, anchor on three rules: 1) only profile people who've already opted in to commercial contact, 2) destroy profiles after the engagement, 3) never quote the AI-generated profile in conversation with the prospect — use it as preparation, not script.</p>
</div>
</div>
</section>
<section>
<div class="inner">
<div class="final-cta">
<h2>Fork it.</h2>
<p>Workflow JSON is in the repo. Import, plug in OpenAI + Perplexity + Gmail credentials, point the chat trigger at your platform of choice (Telegram, Slack, web). Running in 20 minutes.</p>
<div class="ctas">
<a class="btn btn-primary" href="https://github.com/darshakbhatt-aiproductlabs/prospect-research-agent" target="_blank" rel="noopener">‹/› GitHub repo</a>
<a class="btn btn-secondary" href="https://darshakbhatt-aiproductlabs.github.io/portfolio/">← Back to portfolio</a>
</div>
</div>
</div>
</section>
<footer>
<div class="inner">
<div class="credit">Built by <a href="https://darshakbhatt-aiproductlabs.github.io/portfolio/">Darshak Bhatt</a> · open source · MIT</div>
<div class="links-row">
<a href="https://github.com/darshakbhatt-aiproductlabs/prospect-research-agent" target="_blank" rel="noopener">GitHub</a>
<a href="https://www.linkedin.com/in/darshak-bhatt/" target="_blank" rel="noopener">LinkedIn</a>
<a href="https://darshakbhatt-aiproductlabs.github.io/portfolio/">Portfolio</a>
</div>
</div>
</footer>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({
startOnLoad: true,
theme: 'dark',
themeVariables: {
darkMode: true,
background: '#161b22',
primaryColor: '#21262d',
primaryTextColor: '#e6edf3',
primaryBorderColor: '#30363d',
lineColor: '#8b949e',
tertiaryColor: '#0d1117'
},
flowchart: { padding: 16, nodeSpacing: 30, rankSpacing: 50 }
});
</script>
</body>
</html>