import { SITE, services, cases, } from "./content"; import SiteHeader from "./components/SiteHeader"; import Hero from "./components/Hero"; import VelocityMarquee from "./components/VelocityMarquee"; import Reveal, { RevealItem } from "./components/Reveal"; import Scoreboard from "./components/Scoreboard"; import CaseCard, { type CaseData } from "./components/CaseCard"; import ProcessLoop from "./components/ProcessLoop"; import Testimonials from "./components/Testimonials"; import Faq from "./components/Faq"; import Magnetic from "./components/Magnetic"; import SectionDivider from "./components/SectionDivider"; import FinalCTA from "./components/FinalCTA"; const TAPE = [ "Revenue, not vanity metrics", "Paid", "SEO", "Content", "Social", "+52% ROAS", "+217% demos", "+128 booked/mo", "Reported every month", ]; const INDUSTRIES = [ "E-commerce", "B2B SaaS", "Clinics", "Professional services", "DTC brands", "Marketplaces", ]; /* Monochrome partner / certification marks, recreated as simple inline SVG wordmark-badges (no raster, no copied brand art). Illustrative, consistent with the footer "illustrative samples" disclaimer. ~24px tall, --c-text-dim. */ const TRUST_MARKS: { label: string; svg: React.ReactNode }[] = [ { label: "Google Partner", svg: ( Google Partner ), }, { label: "Meta Business Partner", svg: ( Meta Business Partner ), }, { label: "HubSpot Certified", svg: ( HubSpot Certified ), }, { label: "Shopify Plus Partner", svg: ( Shopify Plus Partner ), }, ]; /* Small live-feeling figures that flank the manifesto so the section reads full, not empty. Illustrative samples, consistent with the rest of the prototype. */ const MANIFESTO_STATS = [ { k: "Avg. reporting cadence", v: "Monthly" }, { k: "Channels we run", v: "6+" }, { k: "Built around", v: "Your revenue" }, ]; export default function Page() { return ( <>
{/* ===== KINETIC TAPE — scroll-velocity marquee ===== */}
{/* ===== POSITIONING / MANIFESTO ===== */}
The problem with most agencies Most budgets buy activity, not outcomes. Dashboards fill with impressions while the sales number{" "} sits still. We started Feedback Studios to fix that. Every campaign we run is built to move revenue, and we report on it the way your CFO would. No vanity metrics. No mystery. Just the number that pays the bills. {/* stat ribbon — fills the section, adds a "live" texture */} {MANIFESTO_STATS.map((s) => ( {s.v} {s.k} ))}
{/* ===== INDUSTRIES / SOCIAL PROOF ===== */}

Trusted by teams that care about the sales number

{INDUSTRIES.map((p) => ( ))} {/* second row — monochrome partner / certification marks (inline SVG, no raster) so the section reads substantiated, not sparse */} {TRUST_MARKS.map((m) => ( {m.label} ))}
{/* ===== SERVICES — interactive ledger ===== */}

Services / 06

How we grow your business
{services.map((s, i) => ( {String(i + 1).padStart(2, "0")}

{s.name}

{s.desc}

))}
{/* ===== METRICS scoreboard (animated SVG bars + count-ups) ===== */} {/* ===== CASE STUDIES — 3D tilt + coded charts ===== */}

Selected work — sample

Proof, not promises
{cases.map((c, i) => ( ))}
{/* ===== PROCESS — pinned scroll + morphing SVG ===== */} {/* ===== TESTIMONIALS — interactive auto-advancing carousel ===== */} {/* ===== FAQ ===== */}

FAQ

Questions about working with a digital marketing agency
{/* ===== FINAL CTA — dramatic cursor-reactive WebGL + kinetic type ===== */}
{/* ===== FOOTER ===== */} ); }