// Who it's for — three audience cards, each with a Reddit-style customer quote
// and Vibn's answer.
const AUDIENCE = [
{
label: "Small business owners",
icon: "shop",
headline: "Stop renting. Build the tool that actually fits.",
quote: "I'm paying $312/month for software that does 60% of what I need and zero of the rest.",
source: "u/coffeeshop_owner · r/smallbusiness",
answer: "Replace the whole stack with one tool that matches your workflow — bookings, customers, invoicing, all in one place. Owned by you.",
},
{
label: "Freelancers & local builders",
icon: "spark",
headline: "Become the craftsman who builds for businesses in your town.",
quote: "My client wants a quote tool. I can mock the frontend in a day. The backend? Two weeks I don't have.",
source: "u/agency_of_one · r/freelance",
answer: "Deliver the whole thing — login, data, hosting, polish — in the same chat where you built the screens. Bill for the system, not the hours.",
},
{
label: "Quiet entrepreneurs",
icon: "spark2",
headline: "Build a business without ever picking up the phone.",
quote: "I want to build my thing, ship my thing, and find my customers — without doing sales calls or talking to a developer.",
source: "u/asynchronous_human · r/indiehackers",
answer: "No deploys. No GitHub. No cold outreach. The thing you described is online, with logins, marketing on autopilot — ready for the right people to find it.",
},
];
function Audience() {
return (
Who Vibn is for
People who have an idea — not a stack.
Three people who feel the same thing — different ways to fix it.
{AUDIENCE.map((a) => (
{a.label}
{a.headline}
"{a.quote}"
— {a.source}
Vibn{a.answer}
))}
);
}
function AudienceIcon({ name }) {
const p = { width: 20, height: 20, viewBox: "0 0 20 20", fill: "none",
stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" };
if (name === "shop") return (
);
if (name === "spark") return (
);
if (name === "spark2") return (
);
return null;
}
Object.assign(window, { Audience });