Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ SMTP_FROM_NAME=Ihor Kyrychenko
SMTP_FROM_EMAIL=igor@legal.org.ua
SMTP_REPLY_TO=igor@legal.org.ua
# Public base URL for unsubscribe links + secret to sign unsubscribe tokens
PUBLIC_BASE_URL=https://selected.highfunk.uk
PUBLIC_BASE_URL=https://crm.legal.org.ua
UNSUBSCRIBE_SECRET=change_me_to_a_long_random_string

# SES relay reputation / warm-up (mail server relays outbound through AWS SES)
Expand Down
2 changes: 1 addition & 1 deletion Caddyfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
http://selected.highfunk.uk {
http://crm.legal.org.ua {
reverse_proxy app:3000
}
2 changes: 1 addition & 1 deletion deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ rsync -avz --delete \
echo "==> Building and starting containers..."
ssh -i "$KEY" -o StrictHostKeyChecking=no "$HOST" "cd $REMOTE_DIR && docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build"

echo "==> Done! Site: https://selected.highfunk.uk"
echo "==> Done! Site: https://crm.legal.org.ua"
24 changes: 12 additions & 12 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,10 +185,10 @@ app.get("/blog", (req, res) => {
<title>selected.ai — Blog</title>
<meta name="description" content="How we built an AI-powered LinkedIn outreach engine — from architecture to conversion.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://selected.highfunk.uk/blog">
<meta property="og:url" content="https://crm.legal.org.ua/blog">
<meta property="og:title" content="selected.ai — Blog">
<meta property="og:description" content="How we built an AI-powered LinkedIn outreach engine — from architecture to conversion.">
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png">
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png">
</head>
<body>
<h1>The selected.ai Blog</h1>
Expand Down Expand Up @@ -227,9 +227,9 @@ app.get("/blog/:slug", (req, res) => {
"headline": article.title,
"description": article.excerpt,
"datePublished": article.date,
"author": { "@type": "Organization", "name": "selected.ai", "url": "https://selected.highfunk.uk" },
"publisher": { "@type": "Organization", "name": "selected.ai", "url": "https://selected.highfunk.uk" },
"mainEntityOfPage": `https://selected.highfunk.uk/blog/${article.id}`,
"author": { "@type": "Organization", "name": "selected.ai", "url": "https://crm.legal.org.ua" },
"publisher": { "@type": "Organization", "name": "selected.ai", "url": "https://crm.legal.org.ua" },
"mainEntityOfPage": `https://crm.legal.org.ua/blog/${article.id}`,
"keywords": article.tags.join(", "),
"articleSection": article.category,
"inLanguage": "en",
Expand All @@ -243,20 +243,20 @@ app.get("/blog/:slug", (req, res) => {
<title>${article.title} — selected.ai Blog</title>
<meta name="description" content="${article.excerpt}">
<meta property="og:type" content="article">
<meta property="og:url" content="https://selected.highfunk.uk/blog/${article.id}">
<meta property="og:url" content="https://crm.legal.org.ua/blog/${article.id}">
<meta property="og:title" content="${article.title} — selected.ai">
<meta property="og:description" content="${article.excerpt}">
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png">
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="uk_UA">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="${article.title} — selected.ai">
<meta name="twitter:description" content="${article.excerpt}">
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png">
<link rel="canonical" href="https://selected.highfunk.uk/blog/${article.id}">
<link rel="alternate" hreflang="en" href="https://selected.highfunk.uk/blog/${article.id}">
<link rel="alternate" hreflang="uk" href="https://selected.highfunk.uk/blog/${article.id}">
<link rel="alternate" hreflang="x-default" href="https://selected.highfunk.uk/blog/${article.id}">
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png">
<link rel="canonical" href="https://crm.legal.org.ua/blog/${article.id}">
<link rel="alternate" hreflang="en" href="https://crm.legal.org.ua/blog/${article.id}">
<link rel="alternate" hreflang="uk" href="https://crm.legal.org.ua/blog/${article.id}">
<link rel="alternate" hreflang="x-default" href="https://crm.legal.org.ua/blog/${article.id}">
<script type="application/ld+json">${jsonLd}</script>
</head>
<body>
Expand Down
2 changes: 1 addition & 1 deletion src/web/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ function getOAuth2Client(): OAuth2Client | null {
return new OAuth2Client(
appConfig.googleClientId,
appConfig.googleClientSecret,
appConfig.googleCallbackUrl || "https://selected.highfunk.uk/auth/google/callback"
appConfig.googleCallbackUrl || "https://crm.legal.org.ua/auth/google/callback"
);
}

Expand Down
18 changes: 9 additions & 9 deletions src/web/public/blog.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@
<title>selected.ai — Blog</title>
<meta name="description" content="How we built an AI-powered LinkedIn outreach engine — from architecture to conversion. For growth managers and engineers alike.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://selected.highfunk.uk/blog">
<meta property="og:url" content="https://crm.legal.org.ua/blog">
<meta property="og:title" content="selected.ai — Blog">
<meta property="og:description" content="How we built an AI-powered LinkedIn outreach engine — from architecture to conversion. For growth managers and engineers alike.">
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png">
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="selected.ai — Blog">
<meta name="twitter:description" content="How we built an AI-powered LinkedIn outreach engine — from architecture to conversion.">
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png">
<link rel="canonical" href="https://selected.highfunk.uk/blog">
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png">
<link rel="canonical" href="https://crm.legal.org.ua/blog">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="uk_UA">
<link rel="alternate" hreflang="en" href="https://selected.highfunk.uk/blog">
<link rel="alternate" hreflang="uk" href="https://selected.highfunk.uk/blog">
<link rel="alternate" hreflang="x-default" href="https://selected.highfunk.uk/blog">
<link rel="alternate" hreflang="en" href="https://crm.legal.org.ua/blog">
<link rel="alternate" hreflang="uk" href="https://crm.legal.org.ua/blog">
<link rel="alternate" hreflang="x-default" href="https://crm.legal.org.ua/blog">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Blog","name":"selected.ai Blog","url":"https://selected.highfunk.uk/blog","description":"How we built an AI-powered LinkedIn outreach engine — from architecture to conversion.","publisher":{"@type":"Organization","name":"selected.ai","url":"https://selected.highfunk.uk"}}
{"@context":"https://schema.org","@type":"Blog","name":"selected.ai Blog","url":"https://crm.legal.org.ua/blog","description":"How we built an AI-powered LinkedIn outreach engine — from architecture to conversion.","publisher":{"@type":"Organization","name":"selected.ai","url":"https://crm.legal.org.ua"}}
</script>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="manifest" href="/site.webmanifest">
Expand Down Expand Up @@ -191,7 +191,7 @@ <h1 id="hero-title">The <span>selected.ai</span> Blog</h1>
</div>

<div class="footer">
&copy; 2026 selected.ai &mdash; <a href="https://selected.highfunk.uk">selected.highfunk.uk</a>
&copy; 2026 selected.ai &mdash; <a href="https://crm.legal.org.ua">crm.legal.org.ua</a>
</div>

<script>
Expand Down
8 changes: 4 additions & 4 deletions src/web/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
<meta name="description" content="LinkedIn lead automation platform: AI-powered outreach with Claude (AWS Bedrock), timezone-aware messaging, campaign management, real-time analytics. Built on GCP Cloud Run." />
<meta property="og:title" content="selected.ai — AI-Powered LinkedIn Lead Automation" />
<meta property="og:description" content="Automated LinkedIn outreach with AI-crafted messages, smart lead discovery, and campaign analytics." />
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png" />
<meta property="og:url" content="https://selected.highfunk.uk/dashboard" />
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png" />
<meta property="og:url" content="https://crm.legal.org.ua/dashboard" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="selected.ai — AI-Powered LinkedIn Lead Automation" />
<meta name="twitter:description" content="Automated LinkedIn outreach with AI-crafted messages, smart lead discovery, and campaign analytics." />
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png" />
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png" />
<meta property="og:locale" content="en_US" />
<link rel="canonical" href="https://selected.highfunk.uk/dashboard" />
<link rel="canonical" href="https://crm.legal.org.ua/dashboard" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#f0a830">
Expand Down
22 changes: 11 additions & 11 deletions src/web/public/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,38 @@
<title>selected.ai — AI-Powered LinkedIn Lead Automation Platform</title>
<meta name="description" content="AI-powered LinkedIn outreach platform: Claude-crafted messages, automated lead discovery, timezone-aware scheduling, real-time campaign analytics. Built on GCP Cloud Run.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://selected.highfunk.uk/">
<meta property="og:url" content="https://crm.legal.org.ua/">
<meta property="og:title" content="selected.ai — AI-Powered LinkedIn Lead Automation">
<meta property="og:description" content="Automated LinkedIn outreach with AI-crafted messages via Claude/AWS Bedrock, smart lead discovery, timezone-aware delivery, and real-time campaign analytics.">
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png">
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png">
<meta property="og:site_name" content="selected.ai">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="uk_UA">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="selected.ai — AI LinkedIn Lead Automation">
<meta name="twitter:description" content="Automated LinkedIn outreach with AI-crafted messages, smart lead discovery, and campaign analytics.">
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png">
<link rel="canonical" href="https://selected.highfunk.uk/">
<link rel="alternate" hreflang="en" href="https://selected.highfunk.uk/">
<link rel="alternate" hreflang="uk" href="https://selected.highfunk.uk/">
<link rel="alternate" hreflang="x-default" href="https://selected.highfunk.uk/">
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png">
<link rel="canonical" href="https://crm.legal.org.ua/">
<link rel="alternate" hreflang="en" href="https://crm.legal.org.ua/">
<link rel="alternate" hreflang="uk" href="https://crm.legal.org.ua/">
<link rel="alternate" hreflang="x-default" href="https://crm.legal.org.ua/">
<script type="application/ld+json">
[{
"@context": "https://schema.org",
"@type": "Organization",
"name": "selected.ai",
"url": "https://selected.highfunk.uk",
"url": "https://crm.legal.org.ua",
"description": "AI-powered LinkedIn lead automation platform",
"sameAs": ["https://selected.highfunk.uk/blog", "https://selected.highfunk.uk/pitch-deck"]
"sameAs": ["https://crm.legal.org.ua/blog", "https://crm.legal.org.ua/pitch-deck"]
}, {
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "selected.ai",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"description": "AI-powered LinkedIn lead automation platform with Claude/AWS Bedrock for intelligent outreach, timezone-aware messaging, and real-time campaign analytics.",
"url": "https://selected.highfunk.uk",
"author": { "@type": "Organization", "name": "selected.ai", "url": "https://selected.highfunk.uk" },
"url": "https://crm.legal.org.ua",
"author": { "@type": "Organization", "name": "selected.ai", "url": "https://crm.legal.org.ua" },
"featureList": [
"AI-powered message crafting via Claude (AWS Bedrock)",
"Automated LinkedIn lead discovery and enrichment",
Expand Down
16 changes: 8 additions & 8 deletions src/web/public/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="selected.ai — AI-Powered LinkedIn Lead Automation" />
<meta property="og:description" content="Automated LinkedIn outreach: AI-crafted messages via Claude/AWS Bedrock, smart lead discovery, timezone-aware delivery, campaign analytics. Built on GCP Cloud Run." />
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png" />
<meta property="og:url" content="https://selected.highfunk.uk" />
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png" />
<meta property="og:url" content="https://crm.legal.org.ua" />
<meta property="og:site_name" content="selected.ai" />
<meta property="og:locale" content="en_US" />

<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="selected.ai — AI LinkedIn Lead Automation" />
<meta name="twitter:description" content="Automated LinkedIn outreach with AI-crafted messages, smart lead discovery, and campaign analytics." />
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png" />
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png" />

<!-- Structured data -->
<link rel="canonical" href="https://selected.highfunk.uk" />
<link rel="canonical" href="https://crm.legal.org.ua" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
Expand All @@ -31,15 +31,15 @@
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"description": "AI-powered LinkedIn lead automation platform with Claude/AWS Bedrock for intelligent outreach, timezone-aware messaging, and real-time campaign analytics.",
"url": "https://selected.highfunk.uk",
"url": "https://crm.legal.org.ua",
"sameAs": [
"https://selected.highfunk.uk/blog",
"https://selected.highfunk.uk/pitch-deck.html"
"https://crm.legal.org.ua/blog",
"https://crm.legal.org.ua/pitch-deck.html"
],
"author": {
"@type": "Organization",
"name": "selected.ai",
"url": "https://selected.highfunk.uk"
"url": "https://crm.legal.org.ua"
},
"featureList": [
"AI-powered message crafting via Claude (AWS Bedrock)",
Expand Down
14 changes: 7 additions & 7 deletions src/web/public/pitch-deck.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@
<title>selected.ai — Pitch Deck</title>
<meta name="description" content="selected.ai pitch deck — AI-powered LinkedIn outreach engine that automates lead discovery, hyper-personalized messaging, and follow-ups at scale.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://selected.highfunk.uk/pitch-deck.html">
<meta property="og:url" content="https://crm.legal.org.ua/pitch-deck.html">
<meta property="og:title" content="selected.ai — Pitch Deck">
<meta property="og:description" content="AI-powered LinkedIn outreach engine that automates lead discovery, hyper-personalized messaging, and follow-ups at scale.">
<meta property="og:image" content="https://selected.highfunk.uk/og-image.png">
<meta property="og:image" content="https://crm.legal.org.ua/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="selected.ai — Pitch Deck">
<meta name="twitter:description" content="AI-powered LinkedIn outreach engine that automates lead discovery, hyper-personalized messaging, and follow-ups at scale.">
<meta name="twitter:image" content="https://selected.highfunk.uk/og-image.png">
<link rel="canonical" href="https://selected.highfunk.uk/pitch-deck">
<meta name="twitter:image" content="https://crm.legal.org.ua/og-image.png">
<link rel="canonical" href="https://crm.legal.org.ua/pitch-deck">
<meta property="og:locale" content="en_US">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Organization","name":"selected.ai","url":"https://selected.highfunk.uk","description":"AI-powered LinkedIn lead automation platform"}
{"@context":"https://schema.org","@type":"Organization","name":"selected.ai","url":"https://crm.legal.org.ua","description":"AI-powered LinkedIn lead automation platform"}
</script>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<meta name="theme-color" content="#f0a830">
Expand Down Expand Up @@ -156,7 +156,7 @@ <h1 style="font-size:56px;margin-bottom:20px">
<p class="muted" style="font-size:16px;margin-bottom:32px">AI replaces manual prospecting. 50+ personalized messages/day.<br>3x higher reply rates. Zero spam.</p>
<div style="display:flex;align-items:center;gap:32px;margin-top:24px">
<span class="logo-mark">selected<span class="dot">.ai</span></span>
<span class="muted small">selected.highfunk.uk</span>
<span class="muted small">crm.legal.org.ua</span>
</div>
</div>
<div class="slide-num">01</div>
Expand Down Expand Up @@ -681,7 +681,7 @@ <h1 style="font-size:60px;margin-bottom:20px">
<div style="margin-top:24px">
<p style="font-size:18px;color:#e2e8f0;font-weight:600;margin-bottom:8px">Volodymyr Ovcharov</p>
<p class="muted" style="font-size:15px;margin-bottom:4px">CTO & Founder</p>
<p class="accent" style="font-size:15px;margin-bottom:24px">selected.highfunk.uk</p>
<p class="accent" style="font-size:15px;margin-bottom:24px">crm.legal.org.ua</p>
</div>
<div style="display:flex;justify-content:center;gap:24px;margin-top:16px">
<div class="card" style="padding:16px 28px;text-align:center">
Expand Down
2 changes: 1 addition & 1 deletion src/web/public/robots.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ Disallow: /pipeline
Disallow: /deals
Disallow: /follow-ups

Sitemap: https://selected.highfunk.uk/sitemap.xml
Sitemap: https://crm.legal.org.ua/sitemap.xml
Loading
Loading