PageSourceSearch

https://ziplyne.agency/about

html ziplyne.agency collected 2026-10-08 05:46:48 UTC 78,058 bytes, 448 lines download raw bytes

1<!DOCTYPE html><html lang="en-US" dir="ltr" class="hl-root"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Isaac Horowitz leads ZipLyne Agency: custom software, CRMs, and AI automation for real operating problems. Direct builder access, client-owned systems."><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta name="author" content="Isaac Horowitz"><meta name="application-name" content="ZipLyne"><meta name="theme-color" content="#EFEAE0" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#17110E" media="(prefers-color-scheme: dark)"><!-- NIGHT SHIFT: resolve the theme before the first paint.
2       Runs synchronously in <head>, ahead of any stylesheet, so
3       <html data-theme> is already stamped when the page renders and
4       there is no flash of the wrong palette. The key is shared with the
5       deck (localStorage['zl-theme']), so a visitor who flips the switch
6       on one surface arrives on the other already in their theme. -->
6<script>
7    (function () {
8      try {
9        var saved = localStorage.getItem('zl-theme');
10        var theme = saved === 'dark' || saved === 'light'
11          ? saved
12          : (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
13        document.documentElement.setAttribute('data-theme', theme);
14      } catch (e) {
15        /* Private mode, storage disabled, no matchMedia: leave the attribute
16           off entirely. ops.css still resolves the palette through its
17           prefers-color-scheme block, so the page is never unstyled. */
18      }
19    })();
20  </script>
20<meta name="facebook-domain-verification" content="z3mcipnuaawzl1jyom8ygv06sgmenf"><meta name="p:domain_verify" content="1b8353770623bb4aa2f1c77d91073028"><link rel="canonical" href="https://ziplyne.agency/about"><link rel="alternate" hreflang="en" href="https://ziplyne.agency/about"><link rel="alternate" hreflang="x-default" href="https://ziplyne.agency/about"><link rel="alternate" type="text/plain" href="/llms.txt" title="ZipLyne LLM summary"><link rel="alternate" type="text/plain" href="/llms-full.txt" title="ZipLyne full LLM reference"><title>About Isaac Horowitz | ZipLyne Agency Custom Software</title><!-- Visit memory. Counts distinct visits (a gap of 30 minutes starts a new one) and
21       remembers the last page, so the homepage hero can greet someone who came back.
22       Everything stays in this browser's localStorage: no network call, no identifier,
23       nothing that leaves the device. Inline and early so the hero can read it before
24       first paint and never shift the layout. -->
24<script>
25    (function () {
26      var KEY = 'zl:visits';
27      var GAP = 30 * 60 * 1000;
28      function read() {
29        try { return JSON.parse(localStorage.getItem(KEY) || 'null'); } catch (e) { return null; }
30      }
31      function write(value) {
32        try { localStorage.setItem(KEY, JSON.stringify(value)); } catch (e) { /* private mode */ }
33      }
34      function pageTitle() { return (document.title || '').split('|')[0].trim(); }
35
36      var prev = read();
37      var now = Date.now();
38      var isNewVisit = !prev || !prev.at || (now - prev.at) > GAP;
39      var n = ((prev && prev.n) || 0) + (isNewVisit ? 1 : 0);
40      if (!n) n = 1;
41
42      // Only a genuinely new visit carries a "last time you were here" pointer;
43      // within one visit the previous page is just the back button.
44      window.__zlVisit = {
45        n: n,
46        previousPath: (isNewVisit && prev && prev.lastPath) || '',
47        previousTitle: (isNewVisit && prev && prev.lastTitle) || ''
48      };
49
50      write({ n: n, at: now, lastPath: location.pathname, lastTitle: pageTitle() });
51
52      // Re-read rather than reusing the object above, so a write from another tab
53      // is not overwritten with this tab's older state.
54      addEventListener('pagehide', function () {
55        var current = read() || { n: n };
56        current.at = Date.now();
57        current.lastPath = location.pathname;
58        current.lastTitle = pageTitle();
59        write(current);
60      });
61    })();
62  </script>
62<!-- The browser restores a tab's old scroll offset on its own, so reopening the site on a
63       phone could land mid-hero on a page whose whole point is the scroll from the top. Own
64       the restore: a fresh visit or a reload starts at the top, while pages that opt in
65       restore their position on back and forward. Inline in the head so it beats the
66       browser's own restore. -->
66<script>(function(){const restoreScrollOnHistory = true;
67
68    if ('scrollRestoration' in history) history.scrollRestoration = 'manual';
69    (function () {
70      var key = 'zl:y:' + location.pathname;
71      function save() {
72        try { sessionStorage.setItem(key, String(Math.round(window.scrollY))); } catch (e) { /* private mode */ }
73      }
74      addEventListener('pagehide', save);
75      addEventListener('visibilitychange', function () { if (document.visibilityState === 'hidden') save(); });
76      function place() {
77        if (location.hash) return;
78        var entry = performance.getEntriesByType('navigation')[0];
79        var y = 0;
80        if (restoreScrollOnHistory && entry && entry.type === 'back_forward') {
81          try { y = Number(sessionStorage.getItem(key)) || 0; } catch (e) { y = 0; }
82        }
83        window.scrollTo(0, y);
84        requestAnimationFrame(function () { window.scrollTo(0, y); });
85      }
86      if (document.readyState === 'loading') addEventListener('DOMContentLoaded', place);
87      else place();
88      addEventListener('load', place, { once: true });
89    })();
90  })();</script>
90<!-- The page transition can only start once the next document is here. Prefetch it on
91       pointer-down so a menu tap does not sit on the old page waiting for the network. -->
91<script type="speculationrules">
92    {"prefetch":[{"where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":"/api/*"}},{"not":{"selector_matches":"[data-cal-modal]"}},{"not":{"selector_matches":"[download]"}}]},"eagerness":"moderate"}]}
93  </script>
93<!-- Fonts --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Unbounded:wght@700;800&family=Instrument+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"><!-- Favicons (svg first: modern browsers prefer it; ?v cache-busts the rest) --><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/x-icon" href="/favicon.ico?v=2"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=2"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=2"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=2"><link rel="manifest" href="/manifest.json"><!-- Open Graph --><meta property="og:title" content="About Isaac Horowitz | ZipLyne Agency Custom Software"><meta property="og:description" content="Isaac Horowitz leads ZipLyne Agency: custom software, CRMs, and AI automation for real operating problems. Direct builder access, client-owned systems."><meta property="og:image" content="https://ziplyne.agency/isaac.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:type" content="image/png"><meta property="og:image:alt" content="Isaac Horowitz, founder of ZipLyne Agency"><meta property="og:url" content="https://ziplyne.agency/about"><meta property="og:type" content="website"><meta property="og:site_name" content="ZipLyne Agency"><meta property="og:locale" content="en_US"><!-- Twitter/X Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@iowitz"><meta name="twitter:creator" content="@iowitz"><meta name="twitter:title" content="About Isaac Horowitz | ZipLyne Agency Custom Software"><meta name="twitter:description" content="Isaac Horowitz leads ZipLyne Agency: custom software, CRMs, and AI automation for real operating problems. Direct builder access, client-owned systems."><meta name="twitter:image" content="https://ziplyne.agency/isaac.jpg"><meta name="twitter:image:alt" content="Isaac Horowitz, founder of ZipLyne Agency">
93<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":["Organization","ProfessionalService"],"@id":"https://ziplyne.agency#organization","name":"ZipLyne Agency","alternateName":["ZipLyne","ZipLyne Agency"],"legalName":"ZipLyne LLC","url":"https://ziplyne.agency","logo":"https://ziplyne.agency/brand/wordmark-dark.png","image":"https://ziplyne.agency/og-image-v3.png","email":"[email protected]","description":"ZipLyne Agency maps expensive operating problems and ships custom software, CRMs, and AI automation you own. Talk directly to founder Isaac Horowitz.","slogan":"Custom software for real business problems","founder":{"@id":"https://ziplyne.agency/about#isaac-horowitz"},"sameAs":["https://www.linkedin.com/in/isaac-orocz-seidman-1a5140a0/","https://instagram.com/ziplyne.agency","https://x.com/iowitz","https://cal.com/iowitz/ziplyne","https://iowitz.com"],"areaServed":"Worldwide","knowsAbout":["custom business software","business process diagnosis","AI business automation","admin automation for small business","custom CRM development","freight broker CRM","SaaS development","mobile app development","workflow automation","LLM application development","AI forward deployed engineering","enterprise AI deployment"],"hasOfferCatalog":{"@type":"OfferCatalog","name":"ZipLyne services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Custom software development","url":"https://ziplyne.agency/services"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Custom CRM builder","url":"https://ziplyne.agency/services/crm"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"AI automation for small business","url":"https://ziplyne.agency/services/transform"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"AI forward deployed engineering","url":"https://ziplyne.agency/services/ai-forward-deployed-engineering"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Product builds","url":"https://ziplyne.agency/services/build"}}]},"contactPoint":{"@type":"ContactPoint","contactType":"sales","email":"[email protected]","telephone":"+1-478-312-1714","url":"https://ziplyne.agency/contact"}},{"@type":"Person","@id":"https://ziplyne.agency/about#isaac-horowitz","name":"Isaac Horowitz","url":"https://ziplyne.agency/about","worksFor":{"@id":"https://ziplyne.agency#organization"},"jobTitle":"Founder and builder","sameAs":["https://www.linkedin.com/in/isaac-orocz-seidman-1a5140a0/","https://instagram.com/ziplyne.agency","https://x.com/iowitz","https://cal.com/iowitz/ziplyne","https://iowitz.com"],"knowsAbout":["software product development","AI automation","agentic development workflows","mobile applications","growth systems"]},{"@type":"WebSite","@id":"https://ziplyne.agency#website","url":"https://ziplyne.agency","name":"ZipLyne Agency","alternateName":"ZipLyne","publisher":{"@id":"https://ziplyne.agency#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https://ziplyne.agency/about#webpage","url":"https://ziplyne.agency/about","name":"About Isaac Horowitz | ZipLyne Agency Custom Software","description":"Isaac Horowitz leads ZipLyne Agency: custom software, CRMs, and AI automation for real operating problems. Direct builder access, client-owned systems.","isPartOf":{"@id":"https://ziplyne.agency#website"},"about":{"@id":"https://ziplyne.agency#organization"},"breadcrumb":{"@id":"https://ziplyne.agency/about#breadcrumb"},"primaryImageOfPage":{"@type":"ImageObject","url":"https://ziplyne.agency/og-image-v3.png"},"inLanguage":"en-US","dateModified":"2026-07-17"},{"@type":"BreadcrumbList","@id":"https://ziplyne.agency/about#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://ziplyne.agency"},{"@type":"ListItem","position":2,"name":"About","item":"https://ziplyne.agency/about"}]}]}</script>
93<!-- Google Analytics 4 --><link rel="preconnect" href="https://www.googletagmanager.com" crossorigin><link rel="dns-prefetch" href="https://www.googletagmanager.com"><link rel="preconnect" href="https://www.google-analytics.com" crossorigin>
vendor: 63 bytes, line 93
93<script async src="https://www.googletagmanager.com/gtag/js?id=
93G-PTEPM3MSZ5
vendor: 11 bytes, line 93
93"></script>
93<script>(function(){const gaMeasurementId = "G-PTEPM3MSZ5";
94
95        window.dataLayer = window.dataLayer || [];
96        function gtag() { window.dataLayer.push(arguments); }
97        window.gtag = gtag;
98        gtag('js', new Date());
99        gtag('config', gaMeasurementId, {
100          send_page_view: true,
101          allow_google_signals: true,
102          allow_ad_personalization_signals: true,
103        });
104      })();</script>
104<script>
105  (function () {
106    if (!window.gtag) return;
107    var fire = function (name, params) { try { window.gtag('event', name, params || {}); } catch (e) {} };
108    var slug = function (s) { return (s || '').toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '').slice(0, 60); };
109    var sectionOf = function (el) {
110      var d = el.closest('[data-section]');
111      if (d && d.getAttribute('data-section')) return d.getAttribute('data-section');
112      var s = el.closest('section[id]');
113      return s ? s.id : '';
114    };
115
116    // --- Marketing attribution (first touch this session) ---
117    var attrObj = { marketing_channel: 'direct', marketing_campaign: '(none)' };
118    try {
119      var qp = new URLSearchParams(location.search);
120      var chan = qp.get('utm_source') || qp.get('ref');
121      if (!chan && document.referrer) { try { var rh = new URL(document.referrer).hostname; if (rh && rh !== location.hostname) chan = rh; } catch (e) {} }
122      attrObj.marketing_channel = chan || 'direct';
123      attrObj.marketing_campaign = qp.get('utm_campaign') || '(none)';
124      if (!sessionStorage.getItem('zl_attr')) {
125        sessionStorage.setItem('zl_attr', '1');
126        window.gtag('set', 'user_properties', {
127          marketing_channel: attrObj.marketing_channel,
128          marketing_campaign: attrObj.marketing_campaign,
129          first_seen_landing_page: location.pathname,
130        });
131      }
132    } catch (e) {}
133    var withAttr = function (p) { p = p || {}; p.marketing_channel = attrObj.marketing_channel; p.marketing_campaign = attrObj.marketing_campaign; return p; };
134
135    // Footer credits on ZipLyne-built sites land here with a tagged campaign.
136    try {
137      var creditCampaign = new URLSearchParams(location.search).get('utm_campaign');
138      if (creditCampaign === 'designed-and-developed') {
139        fire('agency_credit_landing', withAttr({
140          credit_source: attrObj.marketing_channel,
141          credit_placement: new URLSearchParams(location.search).get('utm_content') || 'footer',
142        }));
143      }
144    } catch (e) {}
145
146    // --- Clicks (delegated, capture phase catches everything) ---
147    document.addEventListener('click', function (e) {
148      var el = e.target && e.target.closest ? e.target.closest('a, button, [role="button"], [data-cta]') : null;
149      if (!el) return;
150      var href = el.getAttribute('href') || '';
151      var text = (el.getAttribute('data-cta') || el.getAttribute('aria-label') || el.textContent || '').trim().replace(/\s+/g, ' ').slice(0, 100);
152      var section = sectionOf(el);
153      var base = withAttr({ cta_id: el.getAttribute('data-cta') || slug(text) || 'unknown', cta_location: section || 'page', section: section || 'page', link_text: text, link_url: href });
154      var isPrimary = el.matches('.sg-btn--primary, .btn--primary, .header-cta, [data-cta-primary], .nl-btn, .ty-nl-btn, .footer-news-btn');
155
156      if (/cal\.com/i.test(href)) fire('booking_start', base);
157      else if (href.indexOf('tel:') === 0) fire('phone_click', base);
158      else if (href.indexOf('mailto:') === 0) fire('email_click', base);
159      else if (/^https?:\/\//i.test(href) && href.indexOf(location.host) === -1) fire('outbound_click', base);
160      else if (el.tagName === 'A' && href.charAt(0) === '/') fire('nav_click', base);
161
162      if (isPrimary) fire('cta_click_primary', base);
163      else if (el.matches('button, .sg-btn, .btn, [data-cta], [role="button"]')) fire('cta_click', base);
164    }, true);
165
166    // --- Form submits ---
167    document.addEventListener('submit', function (e) {
168      var f = e.target;
169      if (!f || f.tagName !== 'FORM') return;
170      fire('form_submit', withAttr({ form_id: f.id || f.getAttribute('name') || f.getAttribute('aria-label') || 'form', section: sectionOf(f) || 'page' }));
171    }, true);
172
173    // --- Scroll depth (25/50/75/90) ---
174    var marks = [25, 50, 75, 90], hit = {}, ticking = false;
175    window.addEventListener('scroll', function () {
176      if (ticking) return; ticking = true;
177      requestAnimationFrame(function () {
178        ticking = false;
179        var h = document.documentElement.scrollHeight - window.innerHeight;
180        if (h <= 0) return;
181        var pct = Math.round((window.scrollY / h) * 100);
182        for (var i = 0; i < marks.length; i++) { var m = marks[i]; if (pct >= m && !hit[m]) { hit[m] = 1; fire('scroll', withAttr({ percent_scrolled: m, scroll_depth: m })); } }
183      });
184    }, { passive: true });
185
186    // This script runs in <head>, so DOM-querying setup must wait for the body to parse.
187    var ready = function (fn) {
188      if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn);
189      else fn();
190    };
191
192    ready(function () {
193      // --- Section views (once each) ---
194      if ('IntersectionObserver' in window) {
195        var so = new IntersectionObserver(function (entries) {
196          entries.forEach(function (x) {
197            if (x.isIntersecting) {
198              if (x.target.__sec) fire('section_view', withAttr({ section: x.target.__sec }));
199              so.unobserve(x.target);
200            }
201          });
202        }, { threshold: 0.4 });
203        // Observe every section; derive a stable name from data-section / id / kicker / heading / class.
204        document.querySelectorAll('section, [data-section]').forEach(function (s) {
205          var id = s.getAttribute('data-section') || s.id;
206          if (!id) {
207            var k = s.querySelector('[class*="kicker"]');
208            var hd = s.querySelector('h1, h2, h3');
209            id = slug((k && k.textContent) || (hd && hd.textContent) || (s.className || '').split(' ')[0] || '');
210          }
211          if (id) { s.__sec = id; so.observe(s); }
212        });
213      }
214
215      // --- Video plays (once each) ---
216      document.querySelectorAll('video').forEach(function (v) {
217        v.addEventListener('play', function () {
218          var id = v.getAttribute('data-video') || (v.getAttribute('poster') || v.currentSrc || 'video').split('/').pop();
219          fire('video_play', withAttr({ video_id: id }));
220        }, { once: true });
221      });
222    });
223  })();
224</script>
224<script>
225  (function () {
226    try {
227      if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
228      var root = document.documentElement;
229      root.classList.add('zl-motion-ready');
230      // Dead man's switch. If motion.ts fails to parse, 404s, or is blocked,
231      // the page must not be left with invisible sections.
232      setTimeout(function () {
233        if (!window.__zlMotionClaimed) root.classList.remove('zl-motion-ready');
234      }, 2500);
235    } catch (e) { /* no matchMedia: leave everything visible */ }
236  })();
237</script>
237 
237<script type="module" src="/_astro/Motion.astro_astro_type_script_index_0_lang.B9YJCC3O.js"></script>
237 
237<script type="application/ld+json">{"@context":"https://schema.org","@type":"ProfilePage","@id":"https://ziplyne.agency/about#profile","url":"https://ziplyne.agency/about","name":"About Isaac Horowitz and ZipLyne","mainEntity":{"@id":"https://ziplyne.agency/about#isaac-horowitz"}}</script>
237 <style>html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}
238</style>
239<link rel="stylesheet" href="/_astro/ad-studio.I5v2El2-.css">
240<style>.zl-asset{position:relative;display:block;isolation:isolate;width:100%;aspect-ratio:1;margin:0;pointer-events:none;contain:layout style;--asset-reveal:.7s}.zl-asset__poster,.zl-asset__viewport{position:absolute;inset:0;width:100%;height:100%;display:block}.zl-asset__poster{object-fit:contain;opacity:1;transition:opacity var(--asset-reveal) cubic-bezier(.22,1,.36,1)}.zl-asset__viewport{opacity:0;transition:opacity var(--asset-reveal) cubic-bezier(.22,1,.36,1)}.zl-asset__viewport canvas{display:block;width:100%;height:100%;pointer-events:none}.zl-asset[data-asset-state=ready] .zl-asset__poster{opacity:0}.zl-asset[data-asset-state=ready] .zl-asset__viewport,.zl-asset[data-asset-state=loading] .zl-asset__poster{opacity:1}@media(prefers-reduced-motion:reduce){.zl-asset__poster,.zl-asset__viewport{transition:none!important}.zl-asset__poster{opacity:1!important}.zl-asset__viewport{display:none}}.zl-asset:is([data-asset-state=poster],[data-asset-state=error]) .zl-asset__poster{transition:none}
241</style>
242<link rel="stylesheet" href="/_astro/ad-studio.DfA2HF4N.css">
243<link rel="stylesheet" href="/_astro/ad-studio.C-xODMFC.css">
244<link rel="stylesheet" href="/_astro/index.Ck2eErT7.css">
245<link rel="stylesheet" href="/_astro/ad-studio.DqiM3BlB.css">
246<link rel="stylesheet" href="/_astro/about.C0Bp1Vt1.css">
247<style>.pd{display:grid;grid-template-columns:minmax(230px,300px) minmax(0,1fr);gap:clamp(32px,4vw,72px);align-items:start;width:100%}.pd__big{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.pd__big a{display:flex;align-items:baseline;justify-content:space-between;gap:14px;min-height:46px;padding:6px 0;border-bottom:1px solid var(--hl-line, #d9d5d0);font-size:clamp(24px,2.1vw,33px);font-weight:650;line-height:1.05;letter-spacing:-.045em;color:var(--hl-black, #0d0b0a);text-decoration:none}.pd__big a:hover,.pd__big a:focus-visible{color:var(--hl-accent-text, #ae3d0c)}.pd__big small{font-size:12px;font-weight:500;letter-spacing:0;color:var(--hl-muted, #55524e)}.pd__feature{display:grid;gap:6px;margin-top:clamp(22px,3vh,34px);padding:18px 20px 16px;border-radius:14px;background:var(--hl-black, #0d0b0a);color:var(--hl-white, #f5f2ee);text-decoration:none;transition:transform .18s ease}.pd__feature:hover{transform:translateY(-2px)}.pd__feature-kicker{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hl-accent, #ff5a1f)}.pd__feature-title{font-size:20px;font-weight:650;letter-spacing:-.03em;line-height:1.1}.pd__feature-body{font-size:13.5px;line-height:1.5;color:#ffffffb8}.pd__feature-go{margin-top:4px;font-size:13px;font-weight:650;color:var(--hl-accent, #ff5a1f)}.pd__cols{columns:3;column-gap:clamp(24px,3vw,56px)}.pd__group{break-inside:avoid;-webkit-column-break-inside:avoid;margin-bottom:clamp(20px,2.6vh,32px)}.pd__group-title{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hl-accent-text, #ae3d0c)}.pd__list{list-style:none;margin:0;padding:0}.pd__list a{display:block;padding:5px 0;font-size:14.5px;font-weight:550;line-height:1.3;letter-spacing:-.012em;color:var(--hl-black, #0d0b0a);text-decoration:none}.pd__list a:hover,.pd__list a:focus-visible{color:var(--hl-accent-text, #ae3d0c)}@media(max-width:1200px){.pd__cols{columns:2}}@media(max-width:900px){.pd{grid-template-columns:1fr;gap:30px}.pd__big a{font-size:25px;min-height:42px}.pd__cols{columns:2}}@media(max-width:620px){.pd__cols{columns:1}.pd__list a{padding:7px 0;font-size:15px}}@media(prefers-reduced-motion:reduce){.pd__feature{transition:none}}
248</style>
249<link rel="stylesheet" href="/_astro/index.CEiV-cIo.css"></head> <body class="hl-body hl-page hl-inner"> <a class="skip-link" href="#main-content">Skip to main content</a>   <header class="hl-header" data-hl-header data-hl-shared-motion> <a class="hl-brand" href="/" aria-label="ZipLyne, home"> <img class="hl-brand__mark hl-brand__mark--dark" src="/brand/wordmark-dark.webp" alt="ZipLyne" width="2400" height="546" decoding="async" fetchpriority="high"> <img class="hl-brand__mark hl-brand__mark--light" src="/brand/wordmark-light.webp" alt="" width="2400" height="546" aria-hidden="true" decoding="async" fetchpriority="low"> </a> <nav class="hl-nav" aria-label="Primary"> <a href="/case-studies">Work</a><a href="/services">Solutions</a><a class="active" href="/about" aria-current="page">About</a><a href="/blog">Blog</a> </nav> <form class="hl-go" role="search" aria-label="Go to a page" data-ttm data-hl-go> <div class="hl-go__pill"> <input type="text" name="query" maxlength="200" autocomplete="off" enterkeyhint="go" placeholder="Where to? Try “SEO work”" aria-label="Where do you want to go?" tabindex="-1"> <button class="hl-go__toggle" type="submit" aria-label="Search pages" aria-expanded="false" data-hl-go-toggle> <svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5" fill="none" stroke="currentColor" stroke-width="2.2"></circle><path d="m15.5 15.5 5 5" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"></path></svg> </button> </div> <p class="hl-go__hint" aria-live="polite" data-ttm-hint></p> </form> <div class="zl-film zl-film--pill hl-header__film" data-brand-film data-playback-id="emj5QyPzLpLzUtbD
249hIZDJhfXjHcbzfC9VvMKQNCVmFw"> <button class="zl-film__launch" type="button" aria-haspopup="dialog" aria-label="Watch the ZipLyne film, 56 seconds"> <span class="zl-film__disc" aria-hidden="true"> <svg viewBox="0 0 24 24" focusable="false"><path d="M8 5.5 19 12 8 18.5Z" fill="currentColor"></path></svg> </span> <span class="zl-film__label"><strong>Watch The Film</strong><small>56 Sec</small></span> </button> <dialog class="zl-film__dialog" aria-label="Watch the ZipLyne film"> <button class="zl-film__close" type="button" aria-label="Close video"> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"></path></svg> </button> <div class="zl-film__player" data-brand-film-player></div> </dialog> </div>  
249<script type="module" src="/_astro/BrandFilmLauncher.astro_astro_type_script_index_0_lang.Bfhn8rcG.js"></script>
249 <a class="hl-talk hl-talk--desktop" href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer">Book A Call</a> <button class="hl-menu-button hl-menu-button--desktop" type="button" aria-haspopup="dialog" aria-expanded="false" data-hl-menu-open> <span>All Pages</span><i aria-hidden="true">+</i> </button> </header> <div class="hl-drawer hl-drawer--mega" role="dialog" aria-modal="true" aria-label="Navigation menu" data-hl-drawer inert> <div class="hl-drawer__top"> <a class="hl-brand" href="/" aria-label="ZipLyne, home"> <img class="hl-brand__mark" src="/brand/wordmark-dark.webp" alt="ZipLyne" width="2400" height="546"> </a> <div class="hl-drawer__top-right"> <div class="zl-film zl-film--pill hl-drawer__film" data-brand-film data-playback-id="emj5QyPzLpLzUtbDhIZDJhfXjHcbzfC9VvMKQNCVmFw"> <button class="zl-film__launch" type="button" aria-haspopup="dialog" aria-label="Watch the ZipLyne film, 56 seconds"> <span class="zl-film__disc" aria-hidden="true"> <svg viewBox="0 0 24 24" focusable="false"><path d="M8 5.5 19 12 8 18.5Z" fill="currentColor"></path></svg> </span> <span class="zl-film__label"><strong>Watch The Film</strong><small>56 Sec</small></span> </button> <dialog class="zl-film__dialog" aria-label="Watch the ZipLyne film"> <button class="zl-film__close" type="button" aria-label="Close video"> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"></path></svg> </button> <div class="zl-film__player" data-brand-film-player></div> </dialog> </div>   <button class="hl-menu-close" type="button" aria-label="Close menu" data-hl-menu-close>×</button> </div> </div> <div class="hl-drawer__body"> <div class="hl-drawer__main"> <p class="hl-drawer__kicker">Explore ZipLyne.</p> <form class="hl-drawer__go" role="search" aria-label="Go to a page" data-ttm> <div class="hl-drawer__go-row"> <input type="text" name="query" maxlength="200" autocomplete="off" enterkeyhint="go" placeholder="Or just type where you want to go" aria-label="Where do you want to go?"> <button type="submit" aria-label="Go">→</button> </div> <p class="hl-go__hint" aria-live="polite" data-ttm-hint></p> </form> <nav class="pd" aria-label="All ZipLyne pages"> <div class="pd__rail"> <ul class="pd__big"> <li> <a href="/"> <span>Home</span>  </a> </li><li> <a href="/about"> <span>About</span>  </a> </li><li> <a href="/case-studies"> <span>Work</span>  </a> </li><li> <a href="/reel"> <span>Reel</span> <small>Ads and films</small> </a> </li><li> <a href="/blog"> <span>Blog</span>  </a> </li><li> <a href="/contact"> <span>Contact</span>  </a> </li> </ul> <a class="pd__feature" href="/services/ai-music-and-original-songs"> <span class="pd__feature-kicker">New</span> <strong class="pd__feature-title">We make the music too.</strong> <span class="pd__feature-body">
250Original songs on Spotify, and eight episodes we scored end to end.
251</span> <span class="pd__feature-go" aria-hidden="true">Hear it &rarr;</span> </a> </div> <div class="pd__cols"> <section class="pd__group"> <h3 class="pd__group-title">Solutions</h3> <ul class="pd__list"> <li><a href="/services">All Solutions</a></li><li><a href="/services/ai-forward-deployed-engineering">AI Engineering</a></li><li><a href="/services/ai-consulting">AI Consulting</a></li><li><a href="/services/build">Build A Product</a></li><li><a href="/services/transform">Business Automation</a></li><li><a href="/services/crm">Custom CRM</a></li><li><a href="/services/retainer">Ongoing Product Care</a></li><li><a href="/services/custom-software-development">Custom Software Development</a></li><li><a href="/services/web-app-development">Web App Development</a></li><li><a href="/services/mobile-app-development">Mobile App Development</a></li><li><a href="/services/ai-agents">AI Agents</a></li><li><a href="/services/ai-voice-agents">AI Voice Agents</a></li><li><a href="/services/document-ai-and-extraction">Document AI and Extraction</a></li><li><a href="/services/ai-workflow-automation">AI Workflow Automation</a></li><li><a href="/services/ai-image-generation">AI Image Generation</a></li><li><a href="/services/ai-product-photography">AI Product Photography</a></li><li>
251<a href="/services/ai-video-production">AI Video Production</a></li><li><a href="/services/ai-music-and-original-songs">AI Music and Original Songs</a></li><li><a href="/services/ai-jingles-and-brand-sound">AI Jingles and Brand Sound</a></li><li><a href="/services/seo">SEO</a></li> </ul> </section><section class="pd__group"> <h3 class="pd__group-title">Industries</h3> <ul class="pd__list"> <li><a href="/industries">All Industries</a></li><li><a href="/industries/law-firms">Law Firms</a></li><li><a href="/industries/loan-businesses">Loan Businesses</a></li><li><a href="/industries/merchant-cash-advance">Merchant Cash Advance</a></li><li><a href="/industries/accountants-and-cpa-firms">Accountants and CPA Firms</a></li><li><a href="/industries/construction-contractors">Construction Contractors</a></li><li><a href="/industries/logistics-and-freight">Logistics and Freight</a></li><li><a href="/industries/casinos-and-igaming">Casinos and iGaming</a></li><li><a href="/industries/wholesale-distribution">Wholesale Distribution</a></li><li><a href="/industries/import-and-export">Import and Export</a></li><li><a href="/industries/photography-studios">Photography Studios</a></li> </ul> </section><section class="pd__group"> <h3 class="pd__group-title">CRM By Industry</h3> <ul class="pd__list"> <li><a href="/services/crm/law-firms">Law Firms</a></li><li><a href="/services/crm/loan-businesses">Loan Businesses</a></li><li><a href="/services/crm/accountants">Accountants &amp; CPA Firms</a></li><li><a href="/services/crm/insurance-agencies">Insurance Agencies</a></li><li><a href="/services/crm/real-estate-brokerages">Real Estate Brokerages</a></li><li><a href="/services/crm/property-management">Property Management</a></li><li><a href="/services/crm/construction-contractors">Construction &amp; Contractors</a></li><li><a href="/services/crm/logistics-freight">Logistics &amp; Freight</a></li><li><a href="/services/crm/medical-practices">Medical Practices</a></li><li><a href="/services/crm/staffing-agencies">Staffing &amp; Recruiting Agencies</a></li><li><a href="/services/crm/wholesale-distribution">Wholesale &amp; Distribution</a></li><li><a href="/services/crm/manufacturers">Manufacturers</a></li> </ul> </section><section class="pd__group"> <h3 class="pd__group-title">More</h3> <ul class="pd__list"> <li><a href="/privacy">Privacy</a></li><li><a href="/terms">Terms</a></li><li><a href="/presentation">The Presentation</a></li> </ul> </section> </div> </nav> </div> </div> <div class="hl-drawer__foot"> <div class="hl-drawer__foot-left"> <p>Make systems that matter.</p> <div><a href="mailto:[email protected]">[email protected]</a><span>New York · Tel Aviv · Remote</span></div> </div> <div class="hl-drawer__foot-right"> <div class="clutch-mount clutch-mount--badge hl-drawer__clutch" dir="ltr" data-review-mount="clutch"><div class="review-live"><div class="clutch-widget" data-url="https://widget.clutch.co" data-widget-type="2" data-height="45" data-nofollow="true" data-clutchcompany-id="2688963"></div></div><a href="https://clutch.co/profile/ziplyne-0" class="clutch-badge" target="_blank" rel="nofollow noopener noreferrer" data-review-fallback aria-label="Read verified ZipLyne client reviews on Clutch"><svg class="clutch-badge__logo" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"><circle cx="16" cy="16" r="16" fill="#17313b"></circle><path fill="#fff" d="M22.2 11.4c-1.1-1.1-2.6-1.7-4.2-1.7-3.3 0-6 2.7-6 6s2.7 6 6 6c1.6 0 3.1-.6 4.2-1.7l-1.4-1.4c-.7.7-1.7 1.1-2.8 1.1-2.2 0-4-1.8-4-4s1.8-4 4-4c1.1 0 2.1.4 2.8 1.1l1.4-1.4z"></path></svg><span class="clutch-badge__text">Reviews on Clutch</span></a></div>
251<script type="module" src="/_astro/ClutchWidget.astro_astro_type_script_index_0_lang.Dl6kuzA6.js"></script>
251 <a class="hl-drawer__talk" href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer">Book A Call <span aria-hidden="true">↗</span></a> </div> </div> </div> <noscript><nav class="hl-nojs-nav" aria-label="Mobile navigation"> <a href="/case-studies">Work</a><a href="/services">Solutions</a><a href="/about">About</a><a href="/blog">Blog</a> <a href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer">Book A Call</a> </nav></noscript> <main id="main-content" tabindex="-1">  <section class="ab-hero" id="isaac-horowitz" data-hl-surface="light" data-astro-cid-kh7btl4r> <div class="ab-hero__copy" data-astro-cid-kh7btl4r> <h1 data-astro-cid-kh7btl4r>We walk in.<br data-astro-cid-kh7btl4r>Find the problem.<br data-astro-cid-kh7btl4r><em data-astro-cid-kh7btl4r>Ship the fix.</em></h1> <p data-astro-cid-kh7btl4r>ZipLyne maps how a business actually runs and solves the expensive problems with custom software. Led by Isaac Horowitz. You own the systems.</p> <div class="zl-film ab-hero__film" data-brand-film data-playback-id="emj5QyPzLpLzUtbDhIZDJhfXjHcbzfC9VvMKQNCVmFw"> <button class="zl-film__launch" type="button" aria-haspopup="dialog" aria-label="Watch the ZipLyne film, 56 seconds"> <span class="zl-film__thumb" aria-hidden="true"> <img src="https://image.mux.com/emj5QyPzLpLzUtbDhIZDJhfXjHcbzfC9VvMKQNCVmFw/thumbnail.webp?time=51&width=480" alt="" width="480" height="270" loading="lazy" decoding="async"> <svg viewBox="0 0 24 24" focusable="false"><path d="M8 5.5 19 12 8 18.5Z" fill="currentColor"></path></svg> </span> <span class="zl-film__label"><strong>Watch The Film</strong><small>56 Sec</small></span> </button> <dialog class="zl-film__dialog" aria-label="Watch the ZipLyne film"> <button class="zl-film__close" type="button" aria-label="Close video"> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"></path></svg> </button> <div class="zl-film__player" data-brand-film-player></div> </dialog> </div>   </div> <figure class="ab-hero__photo" data-astro-cid-kh7btl4r> <img src="/isaac.webp" srcset="/isaac-600.webp 600w, /isaac.webp 1200w" sizes="(max-width: 900px) 92vw, 44vw" alt="Isaac Horowitz, founder of ZipLyne Agency" width="1200" height="1381" fetchpriority="high" decoding="async" data-astro-cid-kh7btl4r> <figcaption data-astro-cid-kh7btl4r><b data-astro-cid-kh7btl4r>Isaac Horowitz</b><span data-astro-cid-kh7btl4r>Founder and lead builder · Tel Aviv, working worldwide</span></figcaption> </figure> </section> <section class="ab-how" data-hl-surface="light" data-astro-cid-kh7btl4r> <h2 data-zl-drift="90" data-astro-cid-kh7btl4r>Direct access to the builder.<br data-astro-cid-kh7btl4r>Systems you own.</h2> <div class="ab-how__grid" data-astro-cid-kh7btl4r> <div class="ab-how__prose" data-astro-cid-kh7btl4r> <p data-astro-cid-kh7btl4r>Isaac works directly with founders and operators who need someone to walk the business, name the real bottleneck, and ship the software that removes it. No discovery deck, no agency layer, no six-week onboarding before anything is built.</p> <p data-astro-cid-kh7btl4r>The delivery edge is an agentic development workflow: human product judgment, architecture, review and launch ownership, with AI agents running the research, implementation, QA, documentation and iteration loops underneath. AI compresses the grind. Humans own the decisions, and every output is checked before it ships.</p> <p data-astro-cid-kh7btl4r>Engagements start by understanding the problem and agreeing on the outcome. Clients own the repository, deployment accounts, secrets, documentation and the running systems, during the build and after it.</p> </div> <dl class="ab-how__facts" data-astro-cid-kh7btl4r> <div data-astro-cid-kh7btl4r><dt data-astro-cid-kh7btl4r>Based</dt><dd data-astro-cid-kh7btl4r>Tel Aviv, working worldwide</dd></div> <div data-astro-cid-kh7btl4r><dt data-astro-cid-kh7btl4r>Works with</dt><dd data-astro-cid-kh7btl4r>Founders and operators, direct</dd></div> <div data-astro-cid-kh7btl4r><dt data-astro-cid-kh7btl4r>Ownership</dt><dd data-astro-cid-kh7btl4r>Yours, from the first commit</dd></div> <div data-astro-cid-kh7btl4r><dt data-astro-cid-kh7btl4r>Say hello</dt><dd data-astro-cid-kh7btl4r><a href="mailto:[email protected]" data-astro-cid-kh7btl4r>[email protected]</a></dd></div> </dl> </div> </section> <section class="hl-solutions ab-rules" id="approach" aria-labelledby="ab-rules-title" data-hl-surface="dark" data-astro-cid-kh7btl4r> <div class="hl-solutions__pin" data-hl-solutions-pin data-astro-cid-kh7btl4r> <header class="hl-solutions__head" data-zl-drift="110" data-astro-cid-kh7btl4r> <h2 id="ab-rules-title" data-astro-cid-kh7btl4r>Four rules.</h2> <p data-astro-cid-kh7btl4r>They do not bend, whatever the brief says.</p> </header> <ol class="hl-solution-stack" data-hl-surface="light" role="list" data-astro-cid-kh7btl4r> <li class="hl-solution-card" style="--stack-index: 0" data-astro-cid-kh7btl4r> <a href="/services/transform" data-astro-cid-kh7btl4r> <span class="hl-solution-card__number" data-astro-cid-kh7btl4r>01</span> <h3 data-astro-cid-kh7btl4r>Diagnosis before code.</h3> <p data-astro-cid-kh7btl4r>Walk the business first. Sit with the people doing the work, watch where the hours go, and pin the expensive friction. Only then scope the softw
251are that removes it.</p> <div class="hl-solution-card__art" aria-hidden="true" data-astro-cid-kh7btl4r><figure class="zl-asset" aria-hidden="true" data-zl-asset="16-diagnostic-map" data-model="/3d/ziplyne/16-diagnostic-map.glb" data-tone="light" data-asset-motion="still" data-priority="normal" data-asset-state="poster"> <img class="zl-asset__poster" src="/3d/ziplyne/16-diagnostic-map.webp" alt="" width="800" height="800" loading="lazy" fetchpriority="auto" decoding="async"> <span class="zl-asset__viewport" data-asset-viewport></span> </figure></div> <span class="hl-solution-card__arrow" aria-hidden="true" data-astro-cid-kh7btl4r>↗</span> </a> </li><li class="hl-solution-card" style="--stack-index: 1" data-astro-cid-kh7btl4r> <a href="/contact" data-astro-cid-kh7btl4r> <span class="hl-solution-card__number" data-astro-cid-kh7btl4r>02</span> <h3 data-astro-cid-kh7btl4r>You talk to the builder.</h3> <p data-astro-cid-kh7btl4r>No account manager translating your brief into tickets. The person answering your email is the person writing the code, and the one who is there when something breaks at eleven at night.</p> <div class="hl-solution-card__art" aria-hidden="true" data-astro-cid-kh7btl4r><figure class="zl-asset" aria-hidden="true" data-zl-asset="22-voice-instrument" data-model="/3d/ziplyne/22-voice-instrument.glb" data-tone="light" data-asset-motion="still" data-priority="normal" data-asset-state="poster"> <img class="zl-asset__poster" src="/3d/ziplyne/22-voice-instrument.webp" alt="" width="800" height="800" loading="lazy" fetchpriority="auto" decoding="async"> <span class="zl-asset__viewport" data-asset-viewport></span> </figure></div> <span class="hl-solution-card__arrow" aria-hidden="true" data-astro-cid-kh7btl4r>↗</span> </a> </li><li class="hl-solution-card" style="--stack-index: 2" data-astro-cid-kh7btl4r> <a href="/services/build" data-astro-cid-kh7btl4r> <span class="hl-solution-card__number" data-astro-cid-kh7btl4r>03</span> <h3 data-astro-cid-kh7btl4r>The system is yours on day one.</h3> <p data-astro-cid-kh7btl4r>Repository, deployment accounts, database, domain, secrets and documentation live in your accounts from the first commit. If you want to hire someone else tomorrow, nothing stops you.</p> <div class="hl-solution-card__art" aria-hidden="true" data-astro-cid-kh7btl4r><figure class="zl-asset" aria-hidden="true" data-zl-asset="15-ownership-key" data-model="/3d/ziplyne/15-ownership-key.glb" data-tone="light" data-asset-motion="still" data-priority="normal" data-asset-state="poster"> <img class="zl-asset__poster" src="/3d/ziplyne/15-ownership-key.webp" alt="" width="800" height="800" loading="lazy" fetchpriority="auto" decoding="async"> <span class="zl-asset__viewport" data-asset-viewport></span> </figure></div> <span class="hl-solution-card__arrow" aria-hidden="true" data-astro-cid-kh7btl4r>↗</span> </a> </li><li class="hl-solution-card" style="--stack-index: 3" data-astro-cid-kh7btl4r> <a href="/services" data-astro-cid-kh7btl4r> <span class="hl-solution-card__number" data-astro-cid-kh7btl4r>04</span> <h3 data-astro-cid-kh7btl4r>Production, or it does not count.</h3> <p data-astro-cid-kh7btl4r>A demo is a promise. The target is deployed, usable software with real users on it, documentation a new developer can follow, and no lock-in of any kind.</p> <div class="hl-solution-card__art" aria-hidden="true" data-astro-cid-kh7btl4r><figure class="zl-asset" aria-hidden="true" data-zl-asset="17-production-stamp" data-model="/3d/ziplyne/17-production-stamp.glb" data-tone="light" data-asset-motion="still" data-priority="normal" data-asset-state="poster"> <img class="zl-asset__poster" src="/3d/ziplyne/17-production-stamp.webp" alt="" width="800" height="800" loading="lazy" fetchpriority="auto" decoding="async"> <span class="zl-asset__viewport" data-asset-viewport></span> </figure></div> <span class="hl-solution-card__arrow" aria-hidden="true" data-astro-cid-kh7btl4r>↗</span> </a> </li> </ol> </div> </section> <section class="ab-model" data-hl-surface="light" data-astro-cid-kh7btl4r> <h2 data-zl-drift="90" data-astro-cid-kh7btl4r>One conversation.<br data-astro-cid-kh7btl4r><em data-astro-cid-kh7btl4r>One accountable team.</em></h2> <ol class="ab-model__steps" role="list" data-astro-cid-kh7btl4r> <li data-astro-cid-kh7btl4r><span data-astro-cid-kh7btl4r>01</span><b data-astro-cid-kh7btl4r>Walk the operation</b></li><li data-astro-cid-kh7btl4r><span data-astro-cid-kh7btl4r>02</span><b data-astro-cid-kh7btl4r>Name the expensive friction</b></li><li data-astro-cid-kh7btl4r><span data-astro-cid-kh7btl4r>03</span><b data-astro-cid-kh7btl4r>Ship the working system</b></li><li data-astro-cid-kh7btl4r><span data-astro-cid-kh7btl4r>04</span><b data-astro-cid-kh7btl4r>Measure it and improve it</b></li> </ol> </section> <section class="ab-close" data-hl-surface="dark" data-astro-cid-kh7btl4r> <h2 data-zl-drift="90" data-astro-cid-kh7btl4r>Tell me what is broken.</h2> <p data-astro-cid-kh7btl4r>One paragraph is enough. Isaac reads every message himself and answers within a day, even when the answer is that ZipLyne is the wrong shop for it.</p> <a class="ab-close__mail" href="mailto:[email protected]" data-astro-cid-kh7btl4r>[email protected]</a> <div class="ab-close__actions" data-astro-cid-kh7btl4r> <a href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer" class="ab-btn ab-btn--accent" data-astro-cid-kh7btl4r>Book A Call <span aria-hidden="true" data-astro-cid-kh7btl4r>↗</span></a> <a href="tel:+14783121714" class="ab-btn" data-astro-cid-kh7btl4r>Call Our Agent</a> <a href="/contact" class="ab-btn" data-astro-cid-kh7btl4r>Send A Brief <span aria-hidden="true" data-astro-cid-kh7btl4r>→</span></a> </div> </section>  </main> <footer class="hl-footer" data-hl-surface="dark"> <div class="hl-footer__top"> <p class="hl-footer__bye">What Should<br>Work Better?</p> <div class="hl-footer__intro"> <p>Tell us what you want to build, improve or bring to more people. We will work through the next step together.</p> <div class="zl-film hl-footer__film" data-brand-film data-playback-id="emj5QyPzLpLzUtbD
251hIZDJhfXjHcbzfC9VvMKQNCVmFw"> <button class="zl-film__launch" type="button" aria-haspopup="dialog" aria-label="Watch the ZipLyne film, 56 seconds"> <span class="zl-film__thumb" aria-hidden="true"> <img src="https://image.mux.com/emj5QyPzLpLzUtbDhIZDJhfXjHcbzfC9VvMKQNCVmFw/thumbnail.webp?time=51&width=480" alt="" width="480" height="270" loading="lazy" decoding="async"> <svg viewBox="0 0 24 24" focusable="false"><path d="M8 5.5 19 12 8 18.5Z" fill="currentColor"></path></svg> </span> <span class="zl-film__label"><strong>Watch The Film</strong><small>56 Sec</small></span> </button> <dialog class="zl-film__dialog" aria-label="Watch the ZipLyne film"> <button class="zl-film__close" type="button" aria-label="Close video"> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"></path></svg> </button> <div class="zl-film__player" data-brand-film-player></div> </dialog> </div>   <div class="hl-footer__actions"> <a class="hl-footer__primary" href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer">Book A Call <span aria-hidden="true">↗</span></a> <a href="tel:+14783121714">Call Our Agent · +1 (478) 312-1714 <span aria-hidden="true">↗</span></a> <a href="/contact" data-contact-open>Send A Brief <span aria-hidden="true">→</span></a> </div> </div> </div> <div class="hl-footer__grid"> <div class="hl-footer__signup"> <p>Useful Ideas In Your Inbox.</p> <form data-hl-newsletter toolname="newsletter_signup" tooldescription="Subscribes a work email to the ZipLyne Agency newsletter"> <label class="hl-sr-only" for="hl-email">Work email</label> <div class="hl-footer__field"> <input id="hl-email" name="email" type="email" placeholder="Work email" autocomplete="email" required toolparamdescription="Work email for the ZipLyne newsletter"> <button type="submit" aria-label="Subscribe to the ZipLyne newsletter">→</button> </div> <p class="hl-form-status" role="status" aria-live="polite"></p>  </form> </div> <nav class="hl-footer__nav" aria-label="Footer"> <div><a href="/">Home</a><a href="/case-studies">Work</a><a href="/reel">Reel</a><a href="/services">Solutions</a><a href="/about">About</a><a href="/blog">Blog</a></div> <div><a href="/careers">Careers</a><a href="/presentation">Presentation</a><a href="/contact">Contact</a></div> <div><a href="mailto:[email protected]">Email</a><a href="https://x.com/iowitz" target="_blank" rel="me noopener noreferrer">@iowitz</a><a href="/play">Play The Game</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></div> </nav> <div class="hl-footer__proof"> <p>Independent client reviews</p> <div class="clutch-mount clutch-mount--award hl-footer__clutch" dir="ltr"><a href="https://clutch.co/profile/ziplyne-0" class="clutch-award" target="_blank" rel="nofollow noopener noreferrer" aria-label="ZipLyne named Top AI Consulting Company, Florida 2026 by Clutch. Read the reviews behind it."><img class="clutch-award__img" src="/brand/clutch-award-2026.webp" srcset="/brand/clutch-award-2026-320.webp 320w, /brand/clutch-award-2026.webp 640w" sizes="160px" width="640" height="691" alt="Clutch badge: Top AI Consulting Company, Florida 2026" loading="lazy" decoding="async"></a></div> <div class="clutch-mount clutch-mount--badge hl-footer__clutch" dir="ltr" data-review-mount="clutch"><div class="review-live"><div class="clutch-widget" data-url="https://widget.clutch.co" data-widget-type="2" data-height="45" data-nofollow="true" data-clutchcompany-id="2688963"></div></div><a href="https://clutch.co/profile/ziplyne-0" class="clutch-badge" target="_blank" rel="nofollow noopener noreferrer" data-review-fallback aria-label="Read verified ZipLyne client reviews on Clutch"><svg class="clutch-badge__logo" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"><circle cx="16" cy="16" r="16" fill="#17313b"></circle><path fill="#fff" d="M22.2 11.4c-1.1-1.1-2.6-1.7-4.2-1.7-3.3 0-6 2.7-6 6s2.7 6 6 6c1.6 0 3.1-.6 4.2-1.7l-1.4-1.4c-.7.7-1.7 1.1-2.8 1.1-2.2 0-4-1.8-4-4s1.8-4 4-4c1.1 0 2.1.4 2.8 1.1l1.4-1.4z"></path></svg><span class="clutch-badge__text">Reviews on Clutch</span></a></div> <div class="gf-mount hl-footer__clutch" dir="ltr" data-review-mount="goodfirms"> <div class="review-live"> <div class="goodfirm-widget" data-widget-type="goodfirms-widget-t9" data-widget-pattern="horizontal-inline" data-height="61" data-company-id="218174"></div> </div>
251 <a href="https://www.goodfirms.co/company/ziplyne" class="gf-badge" target="_blank" rel="nofollow noopener noreferrer" data-review-fallback aria-label="Read verified ZipLyne client reviews on GoodFirms"> <svg class="gf-badge__logo" width="20" height="20" viewBox="0 0 24 24" aria-hidden="true"> <path fill="#f5a623" d="M12 1.6 3.4 4.9v6.3c0 5 3.6 9.7 8.6 11.2 5-1.5 8.6-6.2 8.6-11.2V4.9L12 1.6z"></path> <path fill="#fff" d="M16.3 9.1c-.8-1.1-2.1-1.8-3.6-1.8-2.4 0-4.4 2-4.4 4.4s2 4.4 4.4 4.4c2.3 0 4.1-1.7 4.3-3.9h-4.3v-1.6h6v.8c0 3.5-2.7 6.3-6 6.3-3.4 0-6.1-2.7-6.1-6s2.7-6 6.1-6c2 0 3.8 1 4.9 2.5l-1.3.9z"></path> </svg> <span class="gf-badge__text">Reviews on GoodFirms</span> </a> </div> 
251<script type="module" src="/_astro/GoodFirmsWidget.astro_astro_type_script_index_0_lang.CVPuJBC-.js"></script>
251 </div> </div> <div class="hl-footer__legal"> <span>Copyright © 2026 ZipLyne LLC.</span> <a href="/">Back To The Start</a> </div> </footer> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style>
251<script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();</script>
251<script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
251<astro-island uid="6qj7i" prefix="r3" component-url="/_astro/ContactCta.PT05PBR0.js" component-export="default" renderer-url="/_astro/client.B8feUfe4.js" props="{}" ssr client="idle" opts="{&quot;name&quot;:&quot;ContactCta&quot;,&quot;value&quot;:true}"></astro-island> <div class="hl-conversion-rail" aria-label="Talk with ZipLyne"> <astro-island uid="Z1dBEE" prefix="r4" component-url="/_astro/VoiceNoteLauncher.CktArRYu.js" component-export="default" renderer-url="/_astro/client.B8feUfe4.js" props="{&quot;variant&quot;:[0,&quot;floating&quot;],&quot;label&quot;:[0,&quot;Leave A Voice Note&quot;]}" ssr client="idle" opts="{&quot;name&quot;:&quot;VoiceNoteLauncher&quot;,&quot;value&quot;:true}" await-children><button type="button" class="vnl vnl--floating" aria-label="Leave A Voice Note"><span class="vnl-bars" aria-hidden="true"><span class="vnl-bar" style="animation-delay:0s"></span><span class="vnl-bar" style="animation-delay:0.12s"></span><span class="vnl-bar" style="animation-delay:0.24s"></span><span class="vnl-bar" style="animation-delay:0.36s"></span><span class="vnl-bar" style="animation-delay:0.48s"></span></span><span class="vnl-label vnl-label--long">Leave A Voice Note</span><span class="vnl-label vnl-label--short">Voice Note</span><span class="vnl-arrow" aria-hidden="true">→</span></button><!--astro:end--></astro-island> </div> <astro-island uid="Z1xG9GH" prefix="r5" component-url="/_astro/AskZippy.fcRbgbg6.js" component-export="default" renderer-url="/_astro/client.B8feUfe4.js" props="{}" ssr client="idle" opts="{&quot;name&quot;:&quot;AskZippy&quot;,&quot;value&quot;:true}" await-children><div class="dock"><button type="button" class="dock-pill" aria-expanded="false" aria-controls="dock-panel"><span class="dock-dot" aria-hidden="true"></span><span class="dock-label-long">Chat With Zippy</span><span class="dock-label-short">Chat</span> <span class="dock-shortcut" style="font-size:10px" aria-hidden="true">⌘K</span></button></div><!--astro:end--></astro-island> <div class="zl-rv" data-zl-rv hidden aria-live="polite"> <div class="zl-rv__card" role="status"> <span class="zl-rv__edge" aria-hidden="true"></span> <button class="zl-rv__x" type="button" data-zl-rv-close aria-label="Dismiss"> <svg viewBox="0 0 14 14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"> <path d="M1 1l12 12M13 1L1 13"></path> </svg> </button> <p class="zl-rv__title" data-zl-rv-title></p> <p class="zl-rv__body" data-zl-rv-body></p> <div class="zl-rv__actions"> <a class="zl-rv__cta" href="https://cal.com/iowitz/ziplyne" target="_blank" rel="noopener noreferrer">
252Let's talk <span aria-hidden="true">&rarr;</span> </a> <a class="zl-rv__resume" data-zl-rv-resume hidden></a> </div> </div> </div>  
252<script type="module">(function(){const e=window.__zlVisit;if(!e||e.n<2)return;try{if(sessionStorage.getItem("zl:rv")==="seen")return}catch{}const t=document.querySelector("[data-zl-rv]"),a=document.querySelector("[data-zl-rv-title]"),i=document.querySelector("[data-zl-rv-body]"),s=document.querySelector("[data-zl-rv-resume]"),r=document.querySelector("[data-zl-rv-close]");if(!t||!a||!i||!s||!r)return;const c=e.n===2?{head:"Hey, you came back.",line:"Second time here. Whatever brought you back, it is probably worth a conversation."}:e.n<5?{head:"You are back again.",line:"That usually means something is worth building. Want to skip ahead and just talk?"}:{head:"Alright, you keep coming back.",line:"We should stop meeting like this and put it on a call."};a.replaceChildren(...c.head.split(" ").flatMap((n,d)=>{const o=document.createElement("span");return o.className="zl-rv__w",o.style.setProperty("--i",String(d)),o.textContent=n,[o,document.createTextNode(" ")]})),i.textContent=c.line,e.previousPath&&e.previousTitle&&e.previousPath!==location.pathname&&(s.href=e.previousPath,s.textContent=`Back to ${e.previousTitle}`,s.hidden=!1);const l=()=>{t.classList.remove("is-in"),t.classList.add("is-out");try{sessionStorage.setItem("zl:rv","seen")}catch{}setTimeout(()=>{t.hidden=!0},260)};r.addEventListener("click",l),setTimeout(()=>{t.hidden=!1,requestAnimationFrame(()=>t.classList.add("is-in"));try{sessionStorage.setItem("zl:rv","seen")}catch{}},1100)})();</script>
252 
252<script type="application/json" id="ttm-pages">[{"label":"Home","href":"/"},{"label":"About","href":"/about"},{"label":"Work","href":"/case-studies"},{"label":"SEO Work","href":"/case-studies/seth-dive"},{"label":"Blog","href":"/blog"},{"label":"Contact","href":"/contact"},{"label":"Careers","href":"/careers"},{"label":"Open Source","href":"/open-source"},{"label":"All Solutions","href":"/services"},{"label":"AI Engineering","href":"/services/ai-forward-deployed-engineering"},{"label":"AI Consulting","href":"/services/ai-consulting"},{"label":"Build A Product","href":"/services/build"},{"label":"Business Automation","href":"/services/transform"},{"label":"Custom CRM","href":"/services/crm"},{"label":"Ongoing Product Care","href":"/services/retainer"},{"label":"All Industries","href":"/industries"},{"label":"Privacy","href":"/privacy"},{"label":"Terms","href":"/terms"},{"label":"The Presentation","href":"/presentation"},{"label":"Custom Software Development","href":"/services/custom-software-development"},{"label":"Web App Development","href":"/services/web-app-development"},{"label":"Mobile App Development","href":"/services/mobile-app-development"},{"label":"AI Agents","href":"/services/ai-agents"},{"label":"AI Voice Agents","href":"/services/ai-voice-agents"},{"label":"Document AI and Extraction","href":"/services/document-ai-and-extraction"},{"label":"AI Workflow Automation","href":"/services/ai-workflow-automation"},{"label":"AI Image Generation","href":"/services/ai-image-generation"},{"label":"AI Product Photography","href":"/services/ai-product-photography"},{"label":"AI Video Production","href":"/services/ai-video-production"},{"label":"AI Music and Original Songs","href":"/services/ai-music-and-original-songs"},{"label":"AI Jingles and Brand Sound","href":"/services/ai-jingles-and-brand-sound"},{"label":"SEO","href":"/services/seo"},{"label":"Law Firms","href":"/industries/law-firms"},{"label":"Loan Businesses","href":"/industries/loan-businesses"},{"label":"Merchant Cash Advance","href":"/industries/merchant-cash-advance"},{"label":"Accountants and CPA Firms","href":"/industries/accountants-and-cpa-firms"},{"label":"Construction Contractors","href":"/industries/construction-contractors"},{"label":"Logistics and Freight","href":"/industries/logistics-and-freight"},{"label":"Casinos and iGaming","href":"/industries/casinos-and-igaming"},{"label":"Wholesale Distribution","href":"/industries/wholesale-distribution"},{"label":"Import and Export","href":"/industries/import-and-export"},{"label":"Photography Studios","href":"/industries/photography-studios"},{"label":"CRM for Law Firms","href":"/services/crm/law-firms"},{"label":"CRM for Loan Businesses","href":"/services/crm/loan-businesses"},{"label":"CRM for Accountants & CPA Firms","href":"/services/crm/accountants"},{"label":"CRM for Insurance Agencies","href":"/services/crm/insurance-agencies"},{"label":"CRM for Real Estate Brokerages","href":"/services/crm/real-estate-brokerages"},{"label":"CRM for Property Management","href":"/services/crm/property-management"},{"label":"CRM for Construction & Contractors","href":"/services/crm/construction-contractors"},{"label":"CRM for Logistics & Freight","href":"/services/crm/logistics-freight"},{"label":"CRM for Medical Practices","href":"/services/crm/medical-practices"},{"label":"CRM for Staffing & Recruiting Agencies","href":"/services/crm/staffing-agencies"},{"label":"CRM for Wholesale & Distribution","href":"/services/crm/wholesale-distribution"},{"label":"CRM for Manufacturers","href":"/services/crm/manufacturers"},{"label":"baba","href":"/case-studies/baba"},{"label":"Seth Dive","href":"/case-studies/seth-dive"},{"label":"PatientPartner","href":"/case-studies/patientpartner"},{"label":"Shehebar Law","href":"/case-studies/shehebar"},{"label":"ReplyMagic","href":"/case-studies/replymagic"},{"label":"Ringwell","href":"/case-studies/ringwell"},{"label":"Product QR Guides","href":"/case-studies/product-qr-guides"},{"label":"House of Challah","href":"/case-studies/house-of-challah"},{"label":"MentionWell","href":"/case-studies/mentionwell"},{"label":"BAX","href":"/case-studies/bax"},{"label":"Ascend","href":"/case-studies/ascend"},{"label":"Witz Agents","href":"/case-studies/witz-agents"},{"label":"Witz Trade","href":"/case-studies/trend-pulse"},{"label":"Ad Studio","href":"/case-studies/ad-studio"},{"label":"Zippy CDN","href":"/case-studies/zippy-cdn"},{"label":"Build My Program","href":"/case-studies/program-presenter-pro"},{"label":"CodeGrid","href":"/case-studies/codegrid"},{"label":"WitzLyte","href":"/case-studies/witzlyte"},{"label":"Asteroid Map","href":"/case-studies/asteroid-map"},{"label":"Shelter Now","href":"/case-studies/shelter-now"},{"label":"Onda","href":"/case-studies/onda"},{"label":"To Lose A Dog","href":"/case-studies/toloseadog"},{"label":"H Equities","href":"/case-studies/h-equities"},{"label":"Drabinsky Realty","href":"/case-studies/drabinsky"},{"label":"BlockBeat","href":"/case-studies/blockbeat"}]</script>
252 
252<script type="module" src="/_astro/HugeLabFrame.astro_astro_type_script_index_0_lang.D4yNXKgx.js"></script>
252  <div class="zl-ei" id="zl-ei" data-invalid="Enter a valid email address." data-fail="Something went wrong. Please try again." data-sending="Signing you up…" data-cta="Sign me up" hidden data-astro-cid-qdal5lsa> <div class="zl-ei-backdrop" data-ei-close data-astro-cid-qdal5lsa></div> <div class="zl-ei-card" role="dialog" aria-modal="true" aria-labelledby="zl-ei-title" aria-describedby="zl-ei-lede" data-astro-cid-qdal5lsa> <button type="button" class="zl-ei-x" data-ei-close aria-label="Close" data-astro-cid-qdal5lsa> <svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" data-astro-cid-qdal5lsa> <path d="M1 1l12 12M13 1L1 13" stroke-linecap="round" data-astro-cid-qdal5lsa></path> </svg> </button> <div class="zl-ei-kicker" data-astro-cid-qdal5lsa><span class="zl-ei-dot" data-astro-cid-qdal5lsa></span>The Zip Newsletter</div> <h2 class="zl-ei-title" id="zl-ei-title" data-astro-cid-qdal5lsa>One email a week. The moves that matter.</h2> <p class="zl-ei-lede" id="zl-ei-lede" data-astro-cid-qdal5lsa>Practical notes on AI-native building, automation, and the products we ship. Plain English, no hype.</p> <ul class="zl-ei-chips" data-astro-cid-qdal5lsa> <li class="zl-ei-chip" data-astro-cid-qdal5lsa>AI moves that matter</li><li class="zl-ei-chip" data-astro-cid-qdal5lsa>What we&#39;re shipping</li><li class="zl-ei-chip" data-astro-cid-qdal5lsa>Unsubscribe anytime</li> </ul> <form class="zl-ei-form" id="zl-ei-form" novalidate data-astro-cid-qdal5lsa> <div class="zl-ei-field" data-astro-cid-qdal5lsa> <input type="email" name="email" id="zl-ei-email" required autocomplete="email" inputmode="email" spellcheck="false" placeholder="[email protected]" class="zl-ei-input" aria-label="[email protected]" data-astro-cid-qdal5lsa> <button type="submit" class="zl-ei-btn" id="zl-ei-btn" data-astro-cid-qdal5lsa>Sign me up</button> </div> <p class="zl-ei-msg" id="zl-ei-msg" role="status" aria-live="polite" data-astro-cid-qdal5lsa></p> <p class="zl-ei-fine" data-astro-cid-qdal5lsa>No spam. Unsubscribe in one click.</p> </form> <div class="zl-ei-done" id="zl-ei-done" hidden data-astro-cid-qdal5lsa> <div class="zl-ei-done-mark" aria-hidden="true" data-astro-cid-qdal5lsa> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-qdal5lsa> <path d="M4 11.5l4.5 4.5L18 6.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-qdal5lsa></path> </svg> </div> <div class="zl-ei-done-title" data-astro-cid-qdal5lsa>Request received.</div> <div class="zl-ei-done-sub" data-astro-cid-qdal5lsa>Thanks. Your signup request was received.</div> </div> <button type="button" class="zl-ei-dismiss" data-ei-close data-astro-cid-qdal5lsa>No thanks, maybe later</button> </div> </div>  
252<script>
253  (function () {
254    var root = document.getElementById('zl-ei');
255    if (!root) return;
256    if (document.querySelector('[data-shredder-game]')) return;
257
258    // ── Suppression rules ─────────────────────────────────────────────
259    var SNOOZE_DAYS = 30;
260    var EXCLUDED = ['/contact', '/thanks', '/yes', '/play', '/404', '/careers'];
261    var path = location.pathname.replace(/\/$/, '') || '/';
262    for (var i = 0; i < EXCLUDED.length; i++) {
263      if (path === EXCLUDED[i] || path === '/he' + EXCLUDED[i]) return;
264    }
265
266    function ls(key) { try { return window.localStorage.getItem(key); } catch (e) { return null; } }
267    function lsSet(key, val) { try { window.localStorage.setItem(key, val); } catch (e) {} }
268    function ss(key) { try { return window.sessionStorage.getItem(key); } catch (e) { return null; } }
269    function ssSet(key, val) { try { window.sessionStorage.setItem(key, val); } catch (e) {} }
270
271    if (ls('zl_nl_sub') || ls('zl_nl_request')) return; // prior signup/request — never nag
272    if (ss('zl_ei_shown')) return;               // one shot per session
273    var seen = parseInt(ls('zl_ei_seen') || '0', 10);
274    if (seen && (Date.now() - seen) < SNOOZE_DAYS * 864e5) return; // snoozed
275
276    // ── Dialog wiring ─────────────────────────────────────────────────
277    var card = root.querySelector('.zl-ei-card');
278    var form = document.getElementById('zl-ei-form');
279    var input = document.getElementById('zl-ei-email');
280    var btn = document.getElementById('zl-ei-btn');
281    var msg = document.getElementById('zl-ei-msg');
282    var done = document.getElementById('zl-ei-done');
283    var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
284    var opened = false;
285    var lastFocus = null;
286    var previousDocumentOverflow = '';
287    var isolated = [];
288
289    function track(event, extra) {
290      if (!window.gtag) return;
291      var payload = { cta_location: 'exit_intent', section: 'exit_intent' };
292      if (extra) for (var k in extra) payload[k] = extra[k];
293      window.gtag('event', event, payload);
294    }
295
296    function focusables() {
297      return card.querySelectorAll('button:not([disabled]), input, a[href], [tabindex]:not([tabindex="-1"])');
298    }
299
300    function onKey(e) {
301      if (e.key === 'Escape') { close('dismiss'); return; }
302      if (e.key !== 'Tab') return;
303      var f = focusables();
304      if (!f.length) return;
305      var first = f[0], last = f[f.length - 1];
306      if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
307      else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
308    }
309
310    function open() {
311      if (opened || document.querySelector('dialog[open], .zcta-scrim, .vnl-modal') || document.body.matches('.hl-menu-open, .zl-ask-modal-open') || ls('zl_nl_request')) return;
312      window.dispatchEvent(new CustomEvent('zl:modal-open', { detail: { source: 'exit-intent' } }));
313      opened = true;
314      teardownTriggers();
315      ssSet('zl_ei_shown', '1');
316      lastFocus = document.activeElement;
317      root.hidden = false;
318      document.body.classList.add('zl-newsletter-open');
319      var branch = root;
320      while (branch.parentElement && branch !== document.body) {
321        Array.from(branch.parentElement.children).forEach(function (el) {
322          if (el !== branch && el instanceof HTMLElement) { isolated.push([el, el.inert]); el.inert = true; }
323        });
324        branch = branch.parentElement;
325      }
326      previousDocumentOverflow = document.documentElement.style.overflow;
327      document.documentElement.style.overflow = 'hidden';
328      document.addEventListener('keydown', onKey, true);
329      // focus after the entrance frame so screen readers announce the dialog
330      requestAnimationFrame(function () { try { input.focus({ preventScroll: true }); } catch (e) {} });
331      track('newsletter_modal_view');
332    }
333
334    function close(reason) {
335      if (!opened) return;
336      opened = false;
337      root.hidden = true;
338      document.body.classList.remove('zl-newsletter-open');
339      isolated.forEach(function (entry) { entry[0].inert = entry[1]; });
340      isolated = [];
341      document.documentElement.style.overflow = previousDocumentOverflow;
342      document.removeEventListener('keydown', onKey, true);
343      if (reason === 'dismiss') { lsSet('zl_ei_seen', String(Date.now())); track('newsletter_modal_dismiss'); }
344      if (lastFocus && lastFocus.focus) { try { lastFocus.focus(); } catch (e) {} }
345    }
346
347    root.addEventListener('click', function (e) {
348      if (e.target.closest('[data-ei-close]')) close('dismiss');
349    });
350    window.addEventListener('zl:modal-open', function (e) {
351      var detail = e instanceof CustomEvent ? e.detail : null;
352      if (detail && detail.source !== 'exit-intent') close('superseded');
353    });
354
355    function show(text, kind) {
356      msg.textContent = text;
357      msg.className = 'zl-ei-msg' + (kind ? ' ' + kind : '');
358    }
359
360    form.addEventListener('submit', async function (e) {
361      e.preventDefault();
362      if (btn.disabled) return;
363      var value = (input.value || '').trim();
364      if (!EMAIL_RE.test(value)) { show(root.dataset.invalid, 'err'); input.focus(); return; }
365
366      btn.disabled = true;
367      btn.textContent = '…';
368      show(root.dataset.sending, '');
369
370      var controller = new AbortController();
371      var timeout = setTimeout(function () { controller.abort(); }, 15000);
372      try {
373        var res = await fetch('/api/subscribe', {
374          signal: controller.signal,
375          method: 'POST',
376          headers: { 'Content-Type': 'application/json' },
377          body: JSON.stringify({ email: value }),
378        });
379        var data = await res.json().catch(function () { return {}; });
380        if (res.ok && data.ok) {
381          lsSet('zl_nl_request', '1');
382          form.hidden = true;
383          done.hidden = false;
384          if (window.gtag) { window.gtag('set', 'user_properties', { signup_source: 'exit_intent' }); }
385          track('newsletter_signup_request');
386          setTimeout(function () { close('requested'); }, 2600);
387          return;
388        }
389        show(data.error || root.dataset.fail, 'err');
390      } catch (_) {
391        show(root.dataset.fail, 'err');
392      } finally { clearTimeout(timeout); }
393      btn.disabled = false;
394      btn.textContent = root.dataset.cta;
395    });
396
397    // ── Triggers ──────────────────────────────────────────────────────
398    var armed = false;
399    var timers = [];
400    var listeners = [];
401
402    function on(target, type, fn, opts) {
403      target.addEventListener(type, fn, opts);
404      listeners.push([target, type, fn, opts]);
405    }
406
407    function teardownTriggers() {
408      for (var i = 0; i < timers.length; i++) clearTimeout(timers[i]);
409      for (var j = 0; j < listeners.length; j++) {
410        var l = listeners[j];
411        l[0].removeEventListener(l[1], l[2], l[3]);
412      }
413      timers = [];
414      listeners = [];
415    }
416
417    // Arm the desktop exit-intent only after 5s so instant bounces are spared.
418    timers.push(setTimeout(function () { armed = true; }, 5000));
419
420    var finePointer = window.matchMedia && window.matchMedia('(pointer: fine)').matches;
421
422    if (finePointer) {
423      // Mouse leaves through the top edge → heading for the tab/address bar/close.
424      on(document, 'mouseout', function (e) {
425        if (armed && e.clientY <= 0 && !e.relatedTarget) open();
426      });
427    } else {
428      // Touch: no cursor to read. Use a fast scroll-up after real engagement,
429      // plus a timed fallback for anyone who lingers.
430      var maxScroll = 0;
431      var lastY = window.scrollY;
432      var engaged = false;
433      on(window, 'scroll', function () {
434        var y = window.scrollY;
435        var doc = document.documentElement;
436        var depth = (y + window.innerHeight) / (doc.scrollHeight || 1);
437        if (depth > 0.5) engaged = true;
438        if (y > maxScroll) maxScroll = y;
439        // fast upward fling after they've been deep in the page
440        if (armed && engaged && lastY - y > 60 && y < maxScroll - 240) open();
441        lastY = y;
442      }, { passive: true });
443      // Dwell fallback: 35s in, only if they actually engaged with the page.
444      timers.push(setTimeout(function () { if (engaged) open(); }, 35000));
445    }
446  })();
447</script>
447 <div class="zl-reading-progress" aria-hidden="true"><span data-reading-progress></span></div> 
447<script type="module" src="/_astro/Experience.astro_astro_type_script_index_0_lang.CSU7pQze.js"></script>
447 
447<script type="module">const r={tap:8,light:5,medium:12,heavy:20,success:[10,30,10],warning:[15,50,15],error:[20,60,20,60,20],selection:4};function c(o="tap"){if(!(typeof window>"u"))try{if(!window.matchMedia?.("(hover: none) and (pointer: coarse)").matches)return;const t=navigator.vibrate?.bind(navigator);typeof t=="function"&&t(r[o]),window.dispatchEvent(new CustomEvent("ziplyne:haptic",{detail:{pattern:o}}))}catch{}}function s(){if(typeof window>"u"||window.__zlHapticsInstalled||(window.__zlHapticsInstalled=!0,!window.matchMedia?.("(hover: none) and (pointer: coarse)").matches))return;const a=[".btn",".filter-btn",".chip",".toggle-btn",".faq-question",".dock-pill",".dock-send",".dock-chip",".pkg-card",".path-card",".work-tile",".page-btn",".mobile-menu-toggle",".mobile-menu-sheet a",".site-nav a",".brand-link",'button[type="submit"]'].join(",");document.addEventListener("touchstart",t=>{const e=t.target;if(!e)return;const n=e.closest(a);if(!n)return;let i="light";n.matches('.btn:not(.ghost), button[type="submit"]')&&(i="medium"),n.matches(".dock-send, .pkg-card")&&(i="medium"),n.matches(".path-card, .work-tile")&&(i="tap"),c(i)},{passive:!0,capture:!0}),document.addEventListener("input",t=>{const e=t.target;e&&e.type==="range"&&c("selection")},{passive:!0,capture:!0})}s();</script>
447 
447<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"df70696f837f49c59795c8d3b6194078","r":1,"spa":2}' crossorigin="anonymous"></script>
447
448</body> </html> 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.