// direction-a-rate-card.jsx — "Loaded for your trade on day one" section. // The proof that closes the practical buyer: Werkd ships a real, priced rate // card (217 jobs / 17 trades / 1,556 SKUs) the moment you sign up — vs the // empty price book every other app hands you. Light section, right after hero. // Exposes window.ALoadedDayOne. // // The Rate Card panel shows ONE trade (Plumber) with ALL 18 of its real jobs, // grouped by the real in-app categories, filterable by chip — data lifted // verbatim from src/lib/pricing/taskCatalog.ts (PLUMBING_TASKS). // // Loads after direction-a.jsx (uses DA, Reveal, Counter, Icon, ADot, useIsMobile). // Thin scrollbar for the job list (webkit) — injected once. (function () { if (typeof document === 'undefined' || document.getElementById('rc-scroll-style')) return; const s = document.createElement('style'); s.id = 'rc-scroll-style'; s.textContent = '.rc-scroll::-webkit-scrollbar{width:8px}' + '.rc-scroll::-webkit-scrollbar-track{background:transparent}' + '.rc-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.16);border-radius:8px}' + '.rc-scroll::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.28)}'; document.head.appendChild(s); })(); // Real Plumber catalog — all 18 jobs. [name, category, labor, parts, good, best] const RC_TRADE = 'Plumber'; const RC_JOBS = [ ['Replace kitchen faucet', 'Faucets & Fixtures', '1–2.5h', 5, 295, 895], ['Replace toilet', 'Faucets & Fixtures', '1–2.5h', 5, 300, 1150], ['Install garbage disposal', 'Faucets & Fixtures', '1–2.5h', 4, 405, 810], ['Toilet Repair / Replace', 'Faucets & Fixtures', '1–2h', 5, 195, 895], ['Faucet Repair / Replace', 'Faucets & Fixtures', '0.75–1.75h', 5, 185, 625], ['Fixture Install (Sink/Shower)', 'Faucets & Fixtures', '1.5–4h', 8, 325, 1495], ['Fix leaking pipe under sink', 'Pipe Repair', '0.5–2h', 5, 185, 525], ['Repipe bathroom (rough-in)', 'Pipe Repair', '4–12h', 16, 1800, 4500], ['Leak Repair (Pipe)', 'Pipe Repair', '1–4h', 6, 200, 900], ['Water Line Repair', 'Pipe Repair', '1.5–6h', 5, 400, 4500], ['Sewer Camera Inspection', 'Pipe Repair', '0.5–1.5h', 4, 150, 500], ['Unclog main sewer line', 'Drain Cleaning', '1–3h', 4, 250, 625], ['Drain Cleaning / Unclog', 'Drain Cleaning', '1–2h', 4, 129, 400], ['Replace water heater (standard tank)', 'Water Heaters', '2.5–6h', 8, 1450, 3300], ['Tankless Water Heater Install', 'Water Heaters', '4–7h', 7, 2100, 5000], ['Repair sump pump', 'Pumps & Drains', '1–3h', 6, 300, 1750], ['Install water softener', 'Water Treatment', '2.5–5.5h', 9, 1200, 4200], ['Install outdoor hose bib', 'Outdoor Plumbing', '1–2.5h', 6, 250, 625], ]; // Category order (by count) + counts, mirroring the in-app chips. const RC_CATS = ['Faucets & Fixtures', 'Pipe Repair', 'Drain Cleaning', 'Water Heaters', 'Pumps & Drains', 'Water Treatment', 'Outdoor Plumbing']; function ALoadedDayOne() { const DA = window.DA; const m = window.useIsMobile(); const [cat, setCat] = React.useState('All'); const fmt = (n) => (n === 0 ? 'Free' : '$' + n.toLocaleString()); const groups = RC_CATS .map((c) => ({ cat: c, items: RC_JOBS.filter((j) => j[1] === c) })) .filter((g) => g.items.length); const visible = cat === 'All' ? groups : groups.filter((g) => g.cat === cat); const chip = (label, count, key) => ( ); return (
{/* Header */}
READY ON DAY ONE

You don't start with
an empty app

Most apps hand you a blank price book and a weekend of data entry. Werkd comes loaded for your trade — real jobs, real parts, Good/Better/Best pricing — the minute you log in.

{/* Stat tiles */}
{[ { to: 17, l: 'Trades modeled', d: 'From plumbing to pressure washing — yours is one of them.' }, { to: 217, l: 'Jobs, already priced', d: 'Every one with a Good / Better / Best ladder, ready to send.' }, { to: 1556, l: 'Parts with locked costs', d: 'A real price book behind every line — national-average costs that sharpen to your own prices as you quote.' }, ].map((s, i) => (
0 ? `1px solid ${DA.hairline}` : 'none', height: '100%', }}>
{s.l}
{s.d}
))}
{/* Two-column: copy/templates left, rate-card panel right */}
{/* Left — narrative + templates */}

Your trade's price book,
already in the app

Here's the plumber's catalog — all 18 common jobs, sorted into the same categories you'd reach for on site, each with typical parts, time ranges, and three price tiers benchmarked to real market data. Tap one in the New Job flow and the quote fills itself in.

{/* Make it yours — templates */}
Make it yours
Tweak a price once and it sticks. Save your own repeat jobs as templates — the second time is one tap.
{/* Custom / describe-it row */}
Something custom?
Describe it in your own words — werkd fills in the time, parts, and tiers, then you adjust.
{/* Right — the Rate Card app panel (dark, mirrors the real in-app sheet) */}
{/* faint brand glow top-right */}
{/* Wizard strip — ties the rate card to the fast New Job flow */}
THE NEW JOB FLOW

Tap to scheduled,
in under a minute

The rate card lives inside step 2 of the New Job flow. Pick a service and the price, parts, and time auto-fill — job created, scheduled, and the customer emailed their confirmation before you're out of the driveway.

{/* 5-step indicator */}
{[ ['Customer', 'Pick or add — name + phone', false], ['Service', 'From your Rate Card', true], ['Schedule', 'Smart slot + drive time', false], ['Review', 'Auto-filled — just confirm', false], ['Send', 'Booked + customer emailed', false], ].map(([label, sub, hot], i) => (
{i + 1}
{i < 4 &&
}
{label} {hot && RATE CARD}
{sub}
))}
); } window.ALoadedDayOne = ALoadedDayOne;