const { useState, useEffect, useRef, useMemo } = React; /* ── TWEAK DEFAULTS ── */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#FF6A1A", "showCustomCursor": true, "marqueeSpeed": 30 }/*EDITMODE-END*/; /* ── LOGO ── */ function Logo({ height = 28, light = true }) { return ( Linkllo ); } /* ── ICONS ── */ function Icon({ name, size = 20, color = "currentColor", strokeWidth = 1.5 }) { const map = { arrow: <>, arrowUR: <>, plus: <>, check: , zap: , target: <>, shield: , chart: <>, sparkles: <>, link: <>, msg: , ig: <>, twitter: , yt: <>, cpu: <>, clock: <>, users: <>, x: <>, menu: <>, }; return {map[name]}; } /* ── Custom cursor ── */ function useCustomCursor(enabled) { useEffect(() => { if (!enabled) return; const dot = document.getElementById('cursorDot'); const ring = document.getElementById('cursorRing'); if (!dot || !ring) return; let mx = 0, my = 0, rx = 0, ry = 0; const move = (e) => { mx = e.clientX; my = e.clientY; dot.style.left = mx + 'px'; dot.style.top = my + 'px'; }; const tick = () => { rx += (mx - rx) * 0.18; ry += (my - ry) * 0.18; ring.style.left = rx + 'px'; ring.style.top = ry + 'px'; requestAnimationFrame(tick); }; const onEnter = () => ring.classList.add('hovering'); const onLeave = () => ring.classList.remove('hovering'); document.addEventListener('mousemove', move); document.querySelectorAll('a, button, [data-cursor-hover]').forEach(el => { el.addEventListener('mouseenter', onEnter); el.addEventListener('mouseleave', onLeave); }); tick(); return () => document.removeEventListener('mousemove', move); }, [enabled]); } /* ── Reveal hook ── */ function useReveal() { useEffect(() => { // Fallback: reveal everything after a beat so nothing stays invisible if observer fails const fallback = setTimeout(() => { document.querySelectorAll('.reveal, .reveal-stagger, .word-reveal').forEach(el => el.classList.add('visible')); }, 200); if (!('IntersectionObserver' in window)) return; const obs = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); }); }, { threshold: 0.05, rootMargin: '0px 0px -40px 0px' }); document.querySelectorAll('.reveal, .reveal-stagger, .word-reveal').forEach(el => obs.observe(el)); // Immediately reveal anything in initial viewport requestAnimationFrame(() => { document.querySelectorAll('.reveal, .reveal-stagger, .word-reveal').forEach(el => { const r = el.getBoundingClientRect(); if (r.top < window.innerHeight) el.classList.add('visible'); }); }); return () => { clearTimeout(fallback); obs.disconnect(); }; }, []); } /* ── Mouse-follow card glow ── */ function GlowCard({ children, style, className = '', ...rest }) { const ref = useRef(null); const onMove = (e) => { const r = ref.current?.getBoundingClientRect(); if (!r) return; ref.current.style.setProperty('--mx', (e.clientX - r.left) + 'px'); ref.current.style.setProperty('--my', (e.clientY - r.top) + 'px'); }; return
{children}
; } /* ── Word reveal heading ── */ function WordReveal({ text, delay = 0, as: Tag = 'span', color }) { const words = String(text || '').split(' '); return ( {words.map((w, i) => ( {w} ))} ); } /* ── NAVBAR ── */ function Nav() { const [scrolled, setScrolled] = useState(false); const [open, setOpen] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 30); window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); const links = [['Features', '#features'], ['How it works', '#how'], ['Pricing', '#pricing'], ['FAQ', '#faq']]; return ( <> {open && ( )} ); } /* ── HERO ── */ function Hero() { const [parallax, setParallax] = useState(0); useEffect(() => { const onScroll = () => setParallax(window.scrollY); window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); return (
{/* Background grid */}
{/* Orange ambient glow */}
{/* Drifting blobs */}
{/* Eyebrow */}
v2.0 — AI-powered DM templates now live
{/* Headline */}

{' '}

{/* Subhead */}

Linkllo detects keywords in your Instagram comments and instantly sends personalized DMs. Real-time, IG-compliant, zero manual work.

{/* CTA Row */}
{/* Hero visual: Phone + comment cascade */}
{/* LEFT: comment cascade */}
{[ { user: 'sarah_m', txt: 'LINK 🙏', match: true, time: '2s ago' }, { user: 'marcus.b', txt: 'price?', match: false, time: '8s ago' }, { user: 'priya_k', txt: 'send LINK pls', match: true, time: '14s ago' }, ].map((c, i) => (
{c.user[0].toUpperCase()}
@{c.user}
{c.txt}
{c.match &&
MATCH
}
))}
12 keyword matches today
{/* CENTER: Phone */}
{/* Floating arrow showing flow */}
{/* Status bar */}
9:41 ●●●
{/* IG header */}
Direct
{/* Chat header */}
S
sarah_m
Active now
{/* Messages */}
Hi! Looking for the link 👀
Hey @sarah_m! 🎉
Here's the free guide you asked for:
linkllo.com/g/abc
Sent · 2s
{/* RIGHT: stats card */}
Today
2,847 ↑ 24%
DMs sent automatically
Avg. response
1.2 sec
From comment to DM
Open rate
94%
Industry avg: 21%
); } /* ── MARQUEE ── */ function LogoMarquee({ speed }) { const items = ['Course Creators', '✦', 'D2C Brands', '✦', 'Coaches', '✦', 'Agencies', '✦', 'E-commerce', '✦', 'Influencers', '✦', 'Solopreneurs', '✦', 'Startups', '✦']; const repeated = [...items, ...items, ...items]; return (
{repeated.map((it, i) => ( {it} ))}
); } /* ── PROBLEM/SOLUTION SECTION ── */ function ProblemSolution() { return (
— The problem

You're losing leads
in the comment section.

{[ { num: '01', title: 'Hundreds of comments', desc: "You can't reply to every one manually. Most go cold before you ever see them.", stat: '~78%', label: 'never replied to' }, { num: '02', title: '2-second attention span', desc: "By the time you DM back, they've scrolled past 40 other posts. Lead lost.", stat: '< 2 min', label: 'engagement window' }, { num: '03', title: 'Burnout from manual work', desc: "Replying to comments shouldn't be your full-time job. Your time is better spent creating.", stat: '4.5 hrs', label: 'wasted daily' }, ].map((c, i) => (
{c.num} / 03
{c.stat}
{c.label}

{c.title}

{c.desc}

))}
); } /* ── HOW IT WORKS — Sticky scroll reveal ── */ function HowItWorks() { return (
— How it works

Set up once. Run forever.

{[ { num: '01', title: 'Connect Instagram', desc: 'One-click Meta login. No passwords, no browser extensions. Works with Business and Creator accounts.', icon: 'ig', highlights: ['One-click Meta login', 'No passwords', 'Business & Creator'] }, { num: '02', title: 'Pick a keyword, write a DM', desc: 'Choose a trigger word like "LINK." Write the message your followers get. Add your link, freebie, or discount code.', icon: 'sparkles', highlights: ['Trigger keywords', 'Custom message', 'Links & freebies'] }, { num: '03', title: 'Every comment becomes a DM', desc: 'Someone comments your keyword? Linkllo sends your DM in seconds. Works on Reels, Stories, and feed posts. Runs 24/7.', icon: 'zap', highlights: ['Reels + Stories + Posts', 'Sends in seconds', 'Runs 24/7'] }, ].map((step, i) => (
{/* Left side */}
{step.num}

{step.title}

{step.desc}

{step.highlights.map(h => ( {h} ))}
{/* Right side: visual mock */}
))}
); } function StepVisual({ step }) { if (step === 0) { return (
Authorize via Instagram
Continue with Instagram
{['Read your posts & comments', 'Send DMs on your behalf', 'Read insights & analytics'].map((p, i) => (
{p}
))}
); } if (step === 1) { return (
Automation builder
POST
📸 Free Marketing Guide
TRIGGER KEYWORDS
{['LINK', 'GUIDE', 'send'].map(k => ( {k} ))}
DM TEMPLATE
AI-generated
Hey {`{username}`}! 🎁 Here's the free guide you asked for: linkllo.com/g/abc
); } // step 2 return (
Live activity
Active
{[ { user: 'sarah_m', txt: 'LINK 🙏', sent: '2s', state: 'delivered' }, { user: 'priya_k', txt: 'send LINK pls', sent: '14s', state: 'delivered' }, { user: 'jake.d', txt: 'GUIDE!', sent: '32s', state: 'delivered' }, { user: 'mira_b', txt: 'LINK', sent: '1m', state: 'delivered' }, { user: 'alex.k', txt: 'send', sent: '2m', state: 'delivered' }, ].map((r, i) => (
{r.user[0].toUpperCase()}
@{r.user} · "{r.txt}"
sent
{r.sent}
))}
); } /* ── FEATURES (bento grid) ── */ function Features() { return (
— Features

Built like an obsession.

{/* Bento */}
{/* Big tile: AI templates */}
AI-POWERED

AI writes DMs that actually convert

Describe your goal. Our AI generates 5 high-converting DM variants in seconds. Edit, A/B test, ship.

$ generate "course launch DM, friendly tone"
{/* Compliance */}

IG-safe by design

Official Graph API. Built-in rate limiting. Zero account bans, ever.

{/* Analytics */}

Real-time analytics

Delivery, opens, clicks, conversions. Know what's working.

{/* Smart matching */}

Smart keyword matching

EXACT, CONTAINS, regex. Emoji-tolerant. Catches every variation.

{/* Multi-account */}

Multi-account dashboard

Manage all your IG accounts from one place. Switch in one click.

); } /* ── USE CASES ── */ function UseCases() { const cases = [ { tag: 'Course creators', kw: 'COURSE', desc: 'Auto-deliver checkout links the moment someone asks. Course sales tripled in 30 days.', metric: '3.2×', metricLabel: 'sales lift' }, { tag: 'D2C brands', kw: 'PRICE', desc: 'Reply to product questions 24/7. Drop your catalog + buy link in their DMs instantly.', metric: '47%', metricLabel: 'reply rate' }, { tag: 'Coaches', kw: 'BOOK', desc: 'Capture every interested lead from comments. DM them your calendar link automatically.', metric: '12×', metricLabel: 'leads/month' }, ]; return (
— Use cases

Whatever you sell.
Linkllo delivers.

{cases.map((c, i) => (
{c.tag.toUpperCase()}
{c.metric}
{c.metricLabel}
keyword: "{c.kw}"

{c.desc}

))}
); } /* ── SAFE & COMPLIANT (Meta Tech Provider) ── */ function MetaCompliant() { const points = [ 'Tech & Business Approved Meta Provider (since Jan 2026)', 'Works with Business and Creator accounts', 'No password sharing — connect securely through Meta', 'GDPR and CAN-SPAM compliant', '200 DMs/hour limit (Instagram\'s rule, not ours)', 'Cancel anytime — no contracts', ]; return (
{/* ambient orange glow top-right */}
{/* LEFT: copy + checks */}
Safe & Compliant

Built on Meta's
official API. No bots. No bans.

Linkllo is a Tech & Business Approved Meta Provider. We use Instagram's official Graph API — the same technology Meta provides to verified partners. No browser extensions. No shady workarounds.

    {points.map((p, i) => (
  • {p}
  • ))}
{/* RIGHT: Meta Tech Provider badge card */}
{/* corner accent */}
VERIFIED
Meta Tech Provider
Tech & Business Approved Meta Provider
); } /* ── COMMENTS → CUSTOMERS (chat previews) ── */ function CommentsToCustomers() { const cards = [ { title: 'Drop product links instantly', desc: "Reels go viral, comments pile up. Linkllo DMs the buy link the moment someone types your keyword — no missed sales while you sleep.", audience: 'For affiliate creators · UGC · D2C drops', cta: 'See affiliate flows', accent: '#FF6A1A', chat: { handle: '@nia_styles', commentTrigger: 'LINK where did you get this jacket?', reply: "Hey Nia! ✨ You'll love it — same one, in stock now:", attach: { label: 'Shop the look', sub: 'linkllo.com/r/jacket-23' }, }, }, { title: 'Grow your email list from comments', desc: 'Promise a freebie, capture the email inside the DM, then deliver. Every Reel becomes a lead-magnet — without sending people to a landing page.', audience: 'For coaches · creators · educators', cta: 'See lead-gen flows', accent: '#FF6A1A', chat: { handle: '@arjun.coaches', commentTrigger: 'GUIDE pls 🙏', reply: "Sending now! Drop your email and I'll deliver the 10-page guide instantly.", attach: { label: 'Free guide · 10 pages', sub: 'Just type your email below ↓' }, }, }, { title: 'Book calls while you sleep', desc: "Story replies, post comments, even keyword DMs — Linkllo answers with your booking link, discount code, or offer. Wake up to a full calendar.", audience: 'For service businesses · agencies · solos', cta: 'See booking flows', accent: '#FF6A1A', chat: { handle: '@studio_meha', commentTrigger: 'BOOK want a slot for next week', reply: "Yay! Here's my live calendar — pick any open slot and you're in 🎉", attach: { label: 'Book a 30-min call', sub: 'cal.linkllo.com/meha' }, }, }, ]; return (
{/* ambient glow */}
{/* Header row */}
— Comments → customers

Turn every comment
into a conversation.

Real Linkllo flows, written by real creators. Steal one, tweak it, ship it tonight.

{/* Cards grid */}
{cards.map((c, i) => ( {/* Top: copy */}
0{i + 1} · Use case

{c.title}

{c.desc}

{/* Audience tag */}
{c.audience}
{/* CTA */} {c.cta} {/* Chat mockup */}
{/* fake browser/IG dots */}
{['#FF5F57', '#FEBC2E', '#28C840'].map(col => ( ))} {c.chat.handle}
{/* incoming bubble (commenter) */}
{c.chat.handle[1]?.toUpperCase()}
{c.chat.commentTrigger.split(' ')[0]} {' '}{c.chat.commentTrigger.split(' ').slice(1).join(' ')}
{/* outgoing bubble (Linkllo) */}
{c.chat.reply}
{/* attached card */}
{c.attach?.label || c.chat.attach.label}
{c.chat.attach.sub}
{/* sent indicator */}
delivered · 1.2s
))}
); } /* ── BIG STAT BANNER ── */ function StatBanner() { return (

Creators using Linkllo see 10× more DM conversations and 3.2× more revenue from Instagram in 30 days.

{[ { v: '500+', l: 'Active creators' }, { v: '4.2M', l: 'DMs delivered' }, { v: '94%', l: 'Open rate' }, { v: '24/7', l: 'Always running' }, ].map((s, i) => (
{s.v}
{s.l}
))}
); } /* ── PRICING ── */ function Pricing() { const [annual, setAnnual] = useState(true); const plans = [ { name: 'Free', price: '₹0', sub: 'Forever', cta: 'Start free', featured: false, features: ['1,000 DMs / month', 'Unlimited automations', '1,000 contacts', 'Email support'], locked: ['Re-trigger', 'AI templates', 'Lead-gen forms'], }, { name: 'Pro', price: annual ? '₹399' : '₹799', sub: annual ? 'per month, billed annually' : 'per month', cta: 'Start 7-day trial', featured: true, badge: 'MOST POPULAR', features: ['Unlimited DMs', 'Unlimited contacts', 'Re-trigger sequences', 'AI DM templates', 'Lead-gen forms', 'Ask-for-follow gate', 'Priority support'], }, { name: 'Enterprise', price: 'Custom', sub: "Let's talk", cta: 'Contact sales', featured: false, features: ['Multi-account agency dashboard', 'Dedicated account manager', 'Custom integrations', 'Early access to features', 'White-label option', 'SLA + 24/7 support'], }, ]; return (
— Pricing

Pricing that respects you.

{plans.map((p, i) => (
{p.badge && (
{p.badge}
)}
{p.name}
{p.price}
{p.sub}
{p.features.map((f, fi) => (
{f}
))} {p.locked && p.locked.map((f, fi) => (
{f}
))}
))}
); } /* ── TESTIMONIALS ── */ function Testimonials() { const items = [ { name: 'Aarav Shah', handle: '@aarav.creates', followers: '142K', q: "Linkllo is the tool I didn't know I needed. 10× more DM conversations without lifting a finger. Setup took 2 minutes." }, { name: 'Priya Mehra', handle: '@priyalifts', followers: '89K', q: "My course sales tripled in one month. People comment COURSE, they get the link instantly. No more losing leads while I sleep." }, { name: 'James O.', handle: '@jamesbuildz', followers: '201K', q: "I was skeptical about automation, but Linkllo feels personal, it's IG-safe, my team saves 3+ hours every day. Total game-changer." }, { name: 'Sana K.', handle: '@sanak.beauty', followers: '64K', q: "From DM chaos to DM zen. Every product question gets answered in under 2 seconds. My AOV went up 38%." }, ]; return (
— Loved by creators

Real creators.
Real results.

{items.map((t, i) => (

"{t.q}"

{t.name[0]}
{t.name}
{t.handle} · {t.followers} followers
{[...Array(5)].map((_, si) => )}
))}
); } /* ── FAQ ── */ function FAQ() { const [openIdx, setOpenIdx] = useState(0); const items = [ { q: 'Is Linkllo Instagram-approved?', a: "Yes. Linkllo uses the official Instagram API — the same infrastructure Meta provides for business tools. We're a Meta Business Partner, which means our integration has been reviewed and approved by Instagram's team." }, { q: 'Will my account get banned?', a: "No — as long as you stay within our rate limits (200 DMs/hour) and content guidelines. Linkllo has built-in safeguards that mimic human behavior, and we only DM users who actively comment with your trigger keyword." }, { q: 'What happens if I exceed my DM limit?', a: "On Free, DMs pause until your monthly limit resets. You'll get a notification email with the option to upgrade. No automations are deleted — they resume automatically when limits reset." }, { q: 'Can I use this on multiple Instagram accounts?', a: "Yes. The Pro plan supports unlimited accounts from a single dashboard. Switch between accounts in one click. Enterprise plans add agency-level multi-account management." }, { q: 'Do you support Reels and Stories?', a: "Reels comments are fully supported. Stories support is in beta — comment triggers from story replies work, but story-sticker responses are coming in Q3 2026." }, { q: 'How does AI template generation work?', a: 'Describe your goal (e.g. "send a course link, friendly + urgent tone"), and our GPT-4 integration generates 3–5 DM variants for you to choose from. Edit any template before publishing.' }, { q: 'Is my data safe?', a: "Yes. Data is encrypted at rest (AES-256) and in transit (TLS 1.3). We never store IG tokens in plaintext. We're fully GDPR-compliant — you can request a data export or deletion at any time." }, ]; return (
— FAQ

Frequently asked.

Can't find what you need? Email our team →

{items.map((item, i) => (

{item.a}

))}
); } /* ── FINAL CTA ── */ function FinalCTA() { return (

Stop losing leads.
Start sending DMs.

Free forever plan. No credit card. Set up in 60 seconds.

); } /* ── FOOTER ── */ function Footer() { const cols = [ { title: 'Product', links: ['Features', 'Pricing', 'Use cases', 'Changelog'] }, { title: 'Company', links: ['About', 'Blog', 'Careers', 'Contact'] }, { title: 'Legal', links: ['Privacy', 'Terms', 'Data deletion', 'GDPR'] }, { title: 'Resources', links: ['Help center', 'API docs', 'Status'] }, ]; return ( ); } /* ── APP ── */ function App() { const tweaks = TWEAK_DEFAULTS; useReveal(); useCustomCursor(tweaks.showCustomCursor); return ( <>