One pass over the whole site before paid traffic lands on it: the funnel, the writing in both languages, the calls to action, SEO, and the animations. Three things were worth changing and are live. The rest was checked, measured, and left alone on purpose.
Three fixes. Each one was measured before it was touched and measured again after deploy.
Was: between the heading and the first input sat a paragraph, a developer note with an avatar slot, and a three-bullet "what to expect" box. On a 390 x 844 phone the Name field landed at y=911 in Hebrew and y=1014 in English. A cold click from an ad had to read a screen of text before it could type anything.
Is now: heading, duration line, step indicator, fields. The same three blocks render below the Continue button on step 1 only, so nothing was cut. The first input is at y=497 (HE) and y=512 (EN). On step 2 onward the pitch was already hidden, which stays as it was.




Was: step 2 opened with a source question (six options) that fed a 10-point scoring dimension. Every visitor had to answer it. The channel it asked for is already captured automatically the moment someone lands: UTM parameters, the referrer and the Meta click id travel with the booking and show up in the email and WhatsApp alert as, for example, meta / cpc / intro_he (Meta click). Asking a second time cost a tap and gave a worse answer.
Is now: five questions, all still required, opening on "Which of these fits you best?". The scorer runs on four dimensions out of 90 points and the three band thresholds were rescaled to the same percentages (63 / 45 / 27, formerly 70 / 50 / 30 of 100).
All 11,360 possible answer combinations were scored by the old scorer (with "web search" as the source, which is what paid traffic would pick) and by the new one. 11,135 land in the same band. The 225 that move are owner-type leads that sat one point under "hot" before and are hot now. None move down. The free call still goes through Tom's approval, so the band only orders his inbox.
Was: earlier today the float was taught to lift out of the way while the cookie notice is open (the notice's Reject button had been sitting directly on top of it). The lift changed the float's bottom, and moving a fixed element that way is layout shift whichever way it happens: transitioned over 200 ms it cost 0.011 across eleven small frames, and a first attempt at jumping it in one frame cost 0.017 in one large frame. Both were measured live today.
Is now: the lift is a CSS transform. A transform is not layout, so the layout-shift metric ignores it by definition, and it still slides smoothly. On /book a second, smaller shift (0.005) came from the "instant confirmation" badge growing its row when live availability arrived about two seconds after load; the row now reserves that height. Live CLS after: 0 to 0.0003.
Was: the ₪ sign was the only character on any page, in either language, that fell outside the basic Latin font file. Because of how the font ranges were declared, that one glyph made every visit download the full Latin-extended file (85,068 bytes) just to draw it.
Is now: the sign has its own one-glyph font file (1,172 bytes), cut from the same Inter file, so it draws in exactly the glyph it always did. The ₪250 price chip was compared pixel by pixel against the live site before the change: zero differing pixels. Live Lighthouse after (3-sample medians, mobile): home Hebrew LCP 2820 to 2505 ms (performance 95 to 97), home English 2667 to 2342 ms (96 to 98), pricing Hebrew 2649 to 2186 ms (96 to 98). Deployed 17 Oct, 13:22 IDT, commit c7c69c7.
Was: step 2 ended with "Do you have a figure in mind?" (four ₪ brackets plus "not costed yet") and asked "When would you want this working?" with four options. Five questions were required on the owner path.
Is now (Tom's call): the budget question is gone. The figure is what the call establishes, and asking for it first was the question most likely to lose a cold visitor. Timing is reframed as "How urgent is this?" with six levels, most to least urgent: already costing me time or money; ready to start, choosing who builds it; a date in the next few months; exploring; interested but in no rush; just curious. The two middle-upper levels carry the buying-stage signal the budget question used to provide. Owner path is four questions; a visitor with an idea answers three; a team member answers five. Live: 11 taps (HE) and 12 (EN) from /book to submit, down from 13 and 14 on Thursday morning. Scorer rescaled to the same proportions (70-point total, bands 49 / 35 / 21). Deployed 17 Oct, 13:43 IDT, commit fd8dd35.
Mobile Lighthouse against the live site, 412 x 823, 4x CPU slowdown, 3 runs, median. Funnel geometry on 390 x 844.
| Measure | Before (live, this morning) | After (live, post-deploy) |
|---|---|---|
| First input position, HE / EN | y = 911 / 1014 | y = 505 / 514 |
| Required questions in step 2 (owner path) | 6 | 4 (5 on 16 Oct, 4 since 17 Oct) |
| Taps, /book to final submit, HE / EN | 13 / 14 | 11 / 12 (12 / 13 on 16 Oct) |
| Home HE: performance / LCP / CLS | 95 / 2815 ms / 0.011 | 95 / 2820 ms / 0 |
| Home EN: performance / LCP / CLS | 96 / 2681 ms / 0.011 | 96 / 2667 ms / 0 |
| /book HE: performance / LCP / CLS | 99 / 2050 ms / 0.016 | 99 / 2049 ms / 0 |
| /pricing HE: performance / LCP / CLS | 96 / 2665 ms / 0.011 | 96 / 2649 ms / 0 |
| Accessibility / best practices / SEO | 100 / 100 / 100 (home, pricing); /book 97 / 100 / 100 | 100 / 100 / 100 everywhere, /book included |
| Automated suites | 327 + 20 + 32 + 16 + 220 + legal guard | 327 + 20 + 32 + tap targets + 16 + 220 + legal guard, all green on the deployed build |
Performance and LCP are unchanged within noise, which is the expected result: nothing in this pass touched the critical path, and the point was never speed. The one accessibility miss was on /book, where the two small "terms" and "privacy" links under the consent box measured 16 px tall against the 24 px touch-target minimum. They have been that size since 16 September; they are now 24 px, and the live page scores 100.
Each of these was on the list. Each was measured. None needed a change, and changing them for the sake of it would have risked what already works.
Both versions are written natively, not translated, and they carry the same promise in the same order. Home: "Know what it takes before you build it. Five to ten minutes on the phone, and you know which part sets the budget." / "לדעת מה זה דורש עוד לפני שבונים. חמש עד עשר דקות בטלפון, ואתם יודעים איזה חלק קובע את התקציב." Word counts sit close in both locales (home 1,227 EN / 1,122 HE, pricing 1,159 / 1,058, how it works 687 / 612), which is what parallel copy looks like. Prices carry "including VAT" everywhere they appear. The four legal documents are under a verbatim guard that fails the build if the page and the signed pack drift, and it passed.
Eleven links to /book on each homepage, in exactly two wordings: the short "Book a call" / "שיחת בירור" (6) and the specific "Book a 5–10 minute call" / "לשיחת בירור של 5–10 דקות" (5). One destination, one promise, no competing offers. The sticky bar on mobile and the WhatsApp float are the only other conversion surfaces, and both were already verified reachable under the cookie notice earlier today.
All 32 locale pages in the build carry a canonical URL, hreflang pairs, Open Graph title, a meta description and the right lang. 28 have exactly one H1; the four without one are /book and /pay, which render client-side by design because their content is live slot data and a payment form. Structured data in the build: Organization on all 32, Person on /about, Service on /ai-setup and /pricing, FAQPage on the home page and /what-it-costs, Article on /what-it-costs and the case studies. Titles run 17 to 63 characters. Lighthouse SEO is 100 on every page measured.
The home page runs 25 animations at load, all of them in the hero figure (11 pulses, 8 halos, a few traces). Every other route runs zero. All of it sits behind prefers-reduced-motion, and the 220-check shell gate confirms nothing animates and no text is stranded invisible when a visitor has asked for reduced motion. Performance scores of 95 to 99 on the live site say the motion is not costing anything that matters. Nothing animates on /book at all, which is correct for a page whose job is a form.
PERSON_IMAGE and PERSON_LINKEDIN_URL in src/lib/person.js are empty strings. The avatar slot next to "the call is with the developer who would build it" renders nothing until a square photo exists. Deprioritised by Tom, kept on the list.