function Chart({ data, labels }) {
const w = 720, h = 220, pad = 32;
const max = Math.max(...data.flat());
const stepX = (w - pad * 2) / (data[0].length - 1);
const toPts = arr => arr.map((v, i) => [pad + i * stepX, h - pad - (v / max) * (h - pad * 2)]);
const line = arr => "M " + toPts(arr).map(p => p.join(",")).join(" L ");
return (
Revenue vs baseline · last 6 mo
indexed, month 0 = 100
Post-engagement revenue
Projected baseline
);
}
function Funnel({ rows }) {
const max = rows[0].v;
return (
Funnel breakdown
last 30 days
{rows.map((r, i) => (
))}
);
}
function WorkPage({ onGo }) {
const D = window.DATA;
const [expanded, setExpanded] = useState("koyo");
return (
<>
Work · case studies
Engagements where the numbers did the talking.
Selected engagements from the last three years. Click any row to open the full teardown.
{D.cases.map((c, i) => (
[{String(i + 1).padStart(2, "0")}]
setExpanded(expanded === c.id ? null : c.id)}>{c.name}
{c.industry}
{c.hero}
{c.year}
setExpanded(expanded === c.id ? null : c.id)}>{expanded === c.id ? "−" : "↗"}
))}
{/* Expanded case */}
{expanded && (() => {
const c = D.cases.find(x => x.id === expanded);
// Generate a chart per case, deterministic-ish
const chartData = {
koyo: [[100, 112, 128, 148, 168, 192, 221], [100, 103, 106, 108, 109, 111, 113]],
northwind: [[100, 118, 141, 172, 205, 248, 310], [100, 104, 108, 112, 116, 119, 123]],
paperline: [[100, 108, 118, 132, 151, 174, 204], [100, 105, 109, 114, 118, 121, 125]],
atlas: [[100, 140, 185, 230, 280, 335, 398], [100, 101, 103, 105, 107, 108, 110]],
}[expanded];
const funnelRows = {
koyo: [
{ label: "Impressions", v: 12400000, display: "12.4M" },
{ label: "Clicks", v: 186000, display: "186k" },
{ label: "Landing page", v: 142000, display: "142k" },
{ label: "Add to cart", v: 11200, display: "11.2k" },
{ label: "Checkout", v: 6800, display: "6.8k" },
{ label: "Purchase", v: 4820, display: "4,820" },
],
northwind: [
{ label: "Impressions", v: 3200000, display: "3.2M" },
{ label: "Sessions", v: 94000, display: "94k" },
{ label: "Account created", v: 8400, display: "8.4k" },
{ label: "Demo booked", v: 1240, display: "1,240" },
{ label: "Demo attended", v: 860, display: "860" },
{ label: "Closed-won", v: 142, display: "142" },
],
paperline: [
{ label: "Impressions", v: 8600000, display: "8.6M" },
{ label: "Clicks", v: 128000, display: "128k" },
{ label: "Landing page", v: 94000, display: "94k" },
{ label: "Add to cart", v: 7200, display: "7.2k" },
{ label: "Checkout", v: 4400, display: "4.4k" },
{ label: "Purchase", v: 3180, display: "3,180" },
],
atlas: [
{ label: "Impressions", v: 4400000, display: "4.4M" },
{ label: "Clicks", v: 72000, display: "72k" },
{ label: "Landing page", v: 54000, display: "54k" },
{ label: "Form started", v: 6200, display: "6.2k" },
{ label: "Form complete", v: 2840, display: "2,840" },
{ label: "Consult booked", v: 2052, display: "2,052" },
],
}[expanded];
return (
Case detail · {c.tag} · {c.year}
{c.name}
- Industry
- {c.industry}
- Role
- Growth partner
- Engagement
- 6 months retainer
- Team
- Solo + 1 creative contractor
{c.metrics.map((m, i) => (
))}
);
})()}
Your case study is next.
>
);
}
window.WorkPage = WorkPage;