1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/__l5e/assets-v1/6a9f4190-25a7-4c83-a011-e888bbe908a7/deploytoday-white-horizontal.svg"/><link rel="preload" as="image" href="/assets/cover-apps-C9nagonS.jpg"/><link rel="preload" as="image" href="/__l5e/assets-v1/1f7c27b2-f4cc-4f98-a586-d1180943ec47/killcount-site-top.png"/><link rel="stylesheet" href="/assets/styles-Bz-qI6fo.css" data-precedence="default"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Sora:wght@600;700;800&family=Manrope:wght@400;500;600;700&display=swap" data-precedence="default"/>
vendor: 66 bytes, line 1
1<script async="" src="https://www.googletagmanager.com/gtag/js?id=
1G-NVJEQVFC0V
vendor: 11 bytes, line 1
1"></script>
1<title>Custom apps | DeployToday.AI</title><meta name="google-site-verification" content="pnBKY3tFj6Hk6bN4Z-TiWtS41WSCC3dV7sK3oX1iBXM"/><meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"/><meta property="og:site_name" content="DeployToday.AI"/><meta name="description" content="The internal tool your spreadsheet has outgrown â built around how your business actually runs."/><meta property="og:title" content="Custom apps | DeployToday.AI"/><meta property="og:description" content="The internal tool your spreadsheet has outgrown â built around how your business actually runs."/><meta property="og:url" content="https://deploytoday.ai/services/apps"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Custom apps | DeployToday.AI"/><meta name="twitter:description" content="The internal tool your spreadsheet has outgrown â built around how your business actually runs."/><link rel="modulepreload" href="/assets/index-Cp5Lq3sb.js"/><link rel="modulepreload" href="/assets/services--h81ONY1.js"/><link rel="modulepreload" href="/assets/services._id-Of--Qm3f.js"/><link rel="modulepreload" href="/assets/Footer-y77Lh5_W.js"/><link rel="modulepreload" href="/assets/use-reveal-GaE5mVkz.js"/><link rel="modulepreload" href="/assets/caseStudies-Dp4j6gzm.js"/><link rel="modulepreload" href="/assets/target-DlK_DymU.js"/><link rel="modulepreload" href="/assets/check-_A7tGaEJ.js"/><link rel="modulepreload" href="/assets/arrow-up-right-CaTVKur3.js"/><link rel="modulepreload" href="/assets/createLucideIcon-C3ZUCjhC.js"/><link rel="modulepreload" href="/assets/CountryFields-DE-1bflZ.js"/><link rel="modulepreload" href="/assets/input-oaMiVHaW.js"/><link rel="modulepreload" href="/assets/label-7FS__yZl.js"/><link rel="modulepreload" href="/assets/button-DJ87GykR.js"/><link rel="modulepreload" href="/assets/select-B4aNc2DD.js"/><link rel="modulepreload" href="/assets/dialog-QKriVJbN.js"/><link rel="modulepreload" href="/assets/arrow-left-Chk0h3hn.js"/><link rel="modulepreload" href="/assets/HealthCheckTester-CYqHNTZZ.js"/><link rel="modulepreload" href="/assets/portfolioMeta-DMlx1bjG.js"/><link rel="modulepreload" href="/assets/HealthCheckMagnet-DC-G-OJx.js"/><link rel="modulepreload" href="/assets/NextSteps-Bu5-F22S.js"/><link rel="modulepreload" href="/assets/map-pin-ByCvZ9YR.js"/><link rel="modulepreload" href="/assets/sheet-CzGlmB7h.js"/><link rel="modulepreload" href="/assets/index-CSnZMJGf.js"/><link rel="modulepreload" href="/assets/index-BurcvciG.js"/><link rel="modulepreload" href="/assets/utils-DnlhuuIG.js"/><link rel="modulepreload" href="/assets/index-fTqgCA2r.js"/><link rel="modulepreload" href="/assets/index-CXqOUb0-.js"/><link rel="modulepreload" href="/assets/x-CfvDAWGX.js"/><link rel="modulepreload" href="/assets/index-BFqQJ5hy.js"/><link rel="modulepreload" href="/assets/index-CF_Bf861.js"/><link rel="modulepreload" href="/assets/index-BEb0Ezix.js"/><link rel="modulepreload" href="/assets/chevron-down-BgJ2dSxN.js"/><link rel="modulepreload" href="/assets/deploytoday-logo-horizontal.svg.asset-C8cCPwyu.js"/><link rel="modulepreload" href="/assets/deploytoday-white-horizontal.svg.asset-CHlQvMNT.js"/><link rel="modulepreload" href="/assets/mail-DOu9ljPX.js"/><link rel="modulepreload" href="/assets/menu-D1t07THb.js"/><link rel="modulepreload" href="/assets/instagram-CPpOVrSF.js"/><link rel="modulepreload" href="/assets/search-DJt7lZsH.js"/><link rel="modulepreload" href="/assets/countries-C9J-cCNn.js"/><link rel="modulepreload" href="/assets/index-CKLuklXP.js"/><link rel="modulepreload" href="/assets/file-text-DtwSKOZS.js"/><link rel="modulepreload" href="/assets/gauge-C5v_yPgx.js"/><link rel="modulepreload" href="/assets/services._id-0C1F-c1A.js"/><link rel="icon" type="image/svg+xml" href="/__l5e/assets-v1/7b835424-05f9-4832-bc00-b3fb633bec01/favicon.svg"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="canonical" href="https://deploytoday.ai/services/apps"/>
1<script>
vendor: 323 bytes, line 1
1(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
1GTM-W7V5KRX2
vendor: 3 bytes, line 1
1');
1</script>
1<script>if(!location.pathname.startsWith('/admin')){
vendor: 323 bytes, line 1
1(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
1GTM-KTMVVZ96
vendor: 3 bytes, line 1
1');
1}</script>
1<script>
vendor: 127 bytes, line 1
1window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '
1G-NVJEQVFC0V
vendor: 3 bytes, line 1
1');
1</script>
1<script>if(!location.pathname.startsWith('/admin')){function loadScript(a){var b=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.src="https://tracker.metricool.com/resources/be.js",c.onreadystatechange=a,c.onload=a,b.appendChild(c)}loadScript(function(){beTracker.t({hash:"8a9d439d77aa2db8f3a14437b22a48e6"})});}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"DeployToday.AI","url":"https://deploytoday.ai","email":"[email protected]","description":"DeployToday.AI builds and deploys websites, CRM systems, custom apps and AI automation for owner-led businesses."}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Service","name":"Custom apps","description":"The internal tool your spreadsheet has outgrown â built around how your business actually runs.","url":"https://deploytoday.ai/services/apps","provider":{"@type":"Organization","name":"DeployToday.AI","url":"https://deploytoday.ai"}}</script>
1<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
1<meta property="og:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/faf6479c-c79d-4b45-8db8-82b7049e1236/id-preview-367d7d31--a5b2a2a6-253b-4f69-9271-7846a2c5b127.lovable.app-1779048093418.png"><meta name="twitter:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/faf6479c-c79d-4b45-8db8-82b7049e1236/id-preview-367d7d31--a5b2a2a6-253b-4f69-9271-7846a2c5b127.lovable.app-1779048093418.png"></head><body>
vendor: 67 bytes, line 1
1<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1GTM-W7V5KRX2
vendor: 82 bytes, line 1
1" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1<!--$--><div class="min-h-screen bg-background"><header class="fixed inset-x-0 top-0 z-50 pt-3 md:pt-4"><div class="container-x"><div class="relative flex items-center justify-between rounded-full pl-4 pr-2 transition-all duration-300 md:pl-6 md:pr-3 h-16 md:h-[4.75rem] border border-white/20 bg-white/[0.08] shadow-[0_8px_32px_-16px_rgba(0,0,0,0.6),0_1px_2px_rgba(0,0,0,0.2)] ring-1 ring-white/10 backdrop-blur-xl"><div class="pointer-events-none absolute inset-x-0 top-0 h-1/2 rounded-t-full border-t border-white/70"></div><a class="flex items-center" aria-label="DeployToday.AI home" href="/"><img src="/__l5e/assets-v1/6a9f4190-25a7-4c83-a011-e888bbe908a7/deploytoday-white-horizontal.svg" alt="DeployToday.AI â Practical AI Implementation for Businesses" class="w-auto transition-all duration-300 h-7 md:h-8"/></a><nav class="hidden lg:flex items-center gap-1"><button type="button" class="group relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm transition-all duration-200 outline-none hover:text-white hover:bg-white/10 data-[state=open]:bg-white/15 data-[state=open]:text-white font-semibold text-white" id="radix-_R_mlba_" aria-haspopup="menu" aria-expanded="false" data-state="closed">Services<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3.5 w-3.5 transition-transform duration-200 group-data-[state=open]:rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="group relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm font-medium transition-all duration-200 outline-none text-white/85 hover:text-white hover:bg-white/10 data-[state=open]:bg-white/15 data-[state=open]:text-white" id="radix-_R_16lba_" aria-haspopup="menu" aria-expanded="false" data-state="closed">Our Work<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3.5 w-3.5 transition-transform duration-200 group-data-[state=open]:rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><a class="rounded-full px-4 py-1.5 text-sm font-medium outline-none transition-colors focus:bg-transparent focus-visible:ring-2 focus-visible:ring-primary/50 text-white/85 hover:bg-white/10 hover:text-white" href="/how-we-work">How We Work</a><button type="button" class="group relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm font-medium transition-all duration-200 outline-none text-white/85 hover:text-white hover:bg-white/10 data-[state=open]:bg-white/15 data-[state=open]:text-white" id="radix-_R_26lba_" aria-haspopup="menu" aria-expanded="false" data-state="closed">Resources<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3.5 w-3.5 transition-transform duration-200 group-data-[state=open]:rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="group relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm font-medium transition-all duration-200 outline-none text-white/85 hover:text-white hover:bg-white/10 data-[state=open]:bg-white/15 data-[state=open]:text-white" id="radix-_R_2mlba_" aria-haspopup="menu" aria-expanded="false" data-state="closed">About<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3.5 w-3.5 transition-transform duration-200 group-data-[state=open]:rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></nav><div class="flex items-center gap-2"><div class="hidden md:block"><a class="group relative inline-flex items-center justify-center gap-1.5 overflow-hidden rounded-full bg-blue-pop px-6 py-2.5 text-sm font-semibold text-blue-pop-foreground shadow-blue-pop transition-all duration-200 hover:bg-blue-pop-hover hover:-translate-y-0.5" href="/contact"><span class="relative z-10">Meet with us</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right relative z-10 h-4 w-4 transition-transform duration-200 group-hover:translate-x-0.5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 h-9 w-9 rounded-full lg:hidden text-white hover:bg-white/10 hover:text-white" aria-label="Open menu" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-_R_18lba_" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></div></header><main>
1<section class="relative overflow-hidden bg-primary pt-32 pb-16 md:pt-40 md:pb-20"><div aria-hidden="true" class="pointer-events-none absolute inset-0"><img src="/assets/cover-apps-C9nagonS.jpg" alt="" class="h-full w-full object-cover opacity-25" loading="eager"/><div class="absolute inset-0 bg-gradient-to-t from-primary via-primary/85 to-primary/60"></div></div><div class="container-x relative"><div><a class="inline-flex items-center gap-2 text-sm font-semibold text-white/70 transition-colors hover:text-white active" href="/services" data-status="active" aria-current="page"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-4 w-4" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg>All services</a></div><span class="eyebrow mt-6 block text-[color:var(--color-accent-2)]">2 builds published</span><h1 class="reveal mt-3 max-w-3xl font-heading text-4xl font-bold leading-[1.05] tracking-tight text-white md:text-5xl">Custom apps</h1><p class="reveal mt-5 max-w-2xl text-base leading-relaxed text-white/80 md:text-lg">The internal tool your spreadsheet has outgrown â built around how your business actually runs.</p><div class="mt-8 flex flex-wrap items-center gap-3"><a href="#apply" class="inline-flex items-center gap-2 rounded-full bg-[color:var(--color-accent)] px-7 py-3.5 text-sm font-semibold text-[color:var(--color-accent-foreground)] shadow-[var(--shadow-cta)] transition-transform hover:-translate-y-0.5">Apply for this service<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></div></div></section><section id="apps" aria-label="Custom apps" class="scroll-mt-24 py-14 md:py-20 bg-background"><div class="container-x"><div class="reveal grid gap-10 lg:grid-cols-12 lg:gap-12"><div class="lg:col-span-5"><div class="mt-6 rounded-xl border-l-2 border-[color:var(--color-accent-2)] bg-card/60 p-4"><p class="text-sm leading-relaxed text-muted-foreground"><span class="font-semibold text-foreground">Where most owners are: </span>A workbook that started as a quick tracker is now the system the business depends on, and only one person understands it.</p></div><div class="mt-8"><h3 class="flex items-center gap-2 font-heading text-sm font-bold uppercase tracking-widest text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-target h-4 w-4 text-[color:var(--color-accent-text)]" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg>Who it's for</h3><ul class="mt-3 space-y-2"><li class="text-sm leading-relaxed text-muted-foreground">Your critical process runs on one shared spreadsheet.</li><li class="text-sm leading-relaxed text-muted-foreground">Clients keep emailing to ask for a status update.</li><li class="text-sm leading-relaxed text-muted-foreground">You are paying for software that does 20% of what you need.</li></ul></div></div><div class="lg:col-span-7"><h3 class="font-heading text-xl font-bold text-foreground">This is exactly what we can do for you</h3><ul class="mt-5 grid gap-3 sm:grid-cols-2"><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We build client and staff portals so each person sees only what belongs to them.</span></li><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground
1/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We replace the weekly manual report with a dashboard that is always current.</span></li><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We turn booking, intake and approval steps into a workflow with a clear status.</span></li><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We move your spreadsheet logic into a proper database that two people can use at once.</span></li><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We add role-based access and an audit trail, so you know who changed what.</span></li><li class="flex gap-3 rounded-xl border border-border bg-card/70 px-4 py-3.5 text-sm leading-relaxed text-foreground/80"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 h-4 w-4 shrink-0 text-[color:var(--color-accent-text)]" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>We design it for your process rather than bending your process to fit software.</span></li></ul></div><div class="lg:col-span-12"><div class="rounded-2xl border border-border bg-card p-6 "><h3 class="font-heading text-sm font-bold uppercase tracking-widest text-foreground">What you get on day one</h3><ul class="mt-4 grid gap-2.5 sm:grid-cols-2"><li class="flex gap-2.5 text-sm leading-relaxed text-muted-foreground"><span aria-hidden="true" class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--color-accent-2)]"></span><span>The tool live with your real data migrated in.</span></li><li class="flex gap-2.5 text-sm leading-relaxed text-muted-foreground"><span aria-hidden="true" class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--color-accent-2)]"></span><span>Accounts created for your team with the right permissions.</span></li><li class="flex gap-2.5 text-sm leading-relaxed text-muted-foreground"><span aria-hidden="true" class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--color-accent-2)]"></span><span>A short walkthrough recording your staff can rewatch.</span></li><li class="flex gap-2.5 text-sm leading-relaxed text-muted-foreground"><span aria-hidden="true" class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--color-accent-2)]"></span><span>Documented handover of how the data is structured.</span></li></ul></div></div></div><div class="mt-12"><div class="reveal"><div role="group" aria-roledescription="carousel" aria-label="Custom apps project carousel" tabindex="0" class="relative mx-auto mt-8 h-[240px] w-full max-w-6xl outline-none sm:mt-12 sm:h-[380px] lg:h-[460px]" style="perspective:1600px"><button type="button" aria-label="KillCountAI (current)" aria-current="true" class="absolute left-1/2 top-1/2 w-[88%] max-w-3xl overflow-hidden rounded-2xl border bg-background text-left shadow-lg transition-all duration-700 ease-[
1cubic-bezier(0.16,1,0.3,1)] sm:w-[62%] cursor-default border-[color:var(--color-accent-2)]/60 shadow-[0_40px_90px_-40px_oklch(0_0_0/0.25),0_0_0_1px_oklch(0.85_0.15_195/0.25)]" style="transform:translate(-50%, -50%) translateX(0%) translateZ(0px) rotateY(0deg) scale(1);opacity:1;z-index:20;filter:none;pointer-events:auto"><div class="relative aspect-[1600/975] bg-primary/60"><img src="/__l5e/assets-v1/1f7c27b2-f4cc-4f98-a586-d1180943ec47/killcount-site-top.png" alt="KillCountAI scoring and performance intelligence web app" loading="eager" class="h-full w-full object-cover object-top"/><div aria-hidden="true" class="absolute inset-0 bg-gradient-to-t from-[oklch(0.2_0.09_268/0.95)] via-[oklch(0.2_0.09_268/0.35)] to-transparent"></div><span class="absolute right-3 top-3 inline-flex items-center rounded-full bg-white/15 px-2.5 py-1 text-[11px] font-semibold text-white backdrop-blur-sm">Client build</span><div class="absolute inset-x-0 bottom-0 p-4 sm:p-6"><span class="text-[10px] font-bold uppercase tracking-widest text-[color:var(--color-accent-2)]">Sports technology and performance analytics</span><h3 class="mt-1 font-heading text-base font-bold leading-snug text-white sm:text-2xl">KillCountAI</h3></div></div></button><button type="button" aria-label="Show KillCoachAI" aria-current="false" class="absolute left-1/2 top-1/2 w-[88%] max-w-3xl overflow-hidden rounded-2xl border bg-background text-left shadow-lg transition-all duration-700 ease-[cubic-bezier(0.16,1,0.3,1)] sm:w-[62%] cursor-pointer border-primary/10" style="transform:translate(-50%, -50%) translateX(33%) translateZ(-180px) rotateY(-8deg) scale(0.78);opacity:0.55;z-index:19;filter:saturate(0.55) brightness(0.7) blur(1.2px);pointer-events:auto"><div class="relative aspect-[1600/975] bg-primary/60"><img src="/__l5e/assets-v1/850a8b28-f4e5-4c17-9697-484d93cbd057/killcoach-site-top.png" alt="KillCoachAI athlete development and coaching web app" loading="lazy" class="h-full w-full object-cover object-top"/><div aria-hidden="true" class="absolute inset-0 bg-gradient-to-t from-[oklch(0.2_0.09_268/0.95)] via-[oklch(0.2_0.09_268/0.35)] to-transparent"></div><span class="absolute right-3 top-3 inline-flex items-center rounded-full bg-white/15 px-2.5 py-1 text-[11px] font-semibold text-white backdrop-blur-sm">Client build</span><div class="absolute inset-x-0 bottom-0 p-4 sm:p-6"><span class="text-[10px] font-bold uppercase tracking-widest text-[color:var(--color-accent-2)]">Sports coaching and athlete development</span><h3 class="mt-1 font-heading text-base font-bold leading-snug text-white sm:text-2xl">KillCoachAI</h3></div></div></button></div><div class="mx-auto mt-10 flex max-w-3xl flex-col items-center gap-6 text-center"><p class="animate-fade-in text-sm leading-relaxed text-muted-foreground sm:text-base">An offline-first scoring and performance intelligence app that turns every clay, station and round into evidence a shooter can act on.</p><div class="flex flex-wrap items-center justify-center gap-3"><a class="inline-flex items-center gap-2 rounded-md bg-[color:var(--color-accent)] px-6 py-3 text-sm font-semibold text-[color:var(--color-accent-foreground)] shadow-[var(--shadow-cta)] transition-transform hover:-translate-y-0.5" href="/portfolio/killcount-ai">See the screens<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div><div class="flex items-center gap-4"><button type="button" aria-label="Previous project" class="inline-flex h-10 w-10 items-center justify-center rounded-full border border-primary/20 text-foreground transition-colors hover:border-[color:var(--color-accent-2)]/60 hover:text-[color:var(--color-accent-2)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left h-5 w-5" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg></button><div class="flex items-center gap-2"><button type="button" aria-label="Go to KillCountAI" aria-current="true" class="h-1.5 rounded-full transition-all duration-500 w-8 bg-[color:var(--color-accent)]"></button><button type="button" aria-label="Go to KillCoachAI" aria-current="false" class="h-1.5 rounded-full transition-all duration-500 w-3 bg-primary/25 hover:bg-primary/50"></button></div><button type="button" aria-label="Next project" class="inline-flex h-10 w-10 items-center justify-center rounded-full border border-primary/20 text-foreground transition-colors hover:border-[color:var(--color-accent-2)]/60 hover:text-[color:var(--color-accent-2)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right h-5 w-5" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div></div><div class="mt-14 grid grid-cols-1 gap-6 lg:grid-cols-12 lg:gap-8"><a class="reveal group relative flex flex-col overflow-hidden rounded-[var(--radius)] border border-border bg-card shadow-[var(--shadow-card)] transition-all duration-500 hover:-translate-y-1.5 hover:border-[color:var(--color-accent)]/40 lg:col-span-7" href="/portfolio/killcount-ai"><div class="relative aspect-[1600/975] overflow-hidden bg-muted"><img src="/__l5e/assets-v1/1f7c27b2-f4cc-4f98-a586-d1180943ec47/killcount-site-top.png" alt="KillCountAI scoring and performance intelligence web app" loading="lazy" class="h-full w-full object-cover object-top transition-transform duration-[900ms] ease-[cubic-bezier(0.16,1,0.3,1)] group-hover:scale-[1.05]"/><div aria-hidden="true" class="absolute inset-0 bg-gradient-to-t from-[oklch(0.2_0.09_268/0.85)] via-[oklch(0.2_0.09_268/0.1)] to-transparent opacity-90"></div><span class="absolute left-5 top-5 font-heading text-xs font-bold tracking-widest text-white/70">01</span><div class="absolute inset-x-0 bottom-0 p-6 md:p-8"><span class="text-[10px] font-bold uppercase tracking-widest text-[color:var(--color-accent-2)]">Sports technology and performance analytics</span>
1<h3 class="mt-1.5 font-heading text-xl font-bold leading-tight text-white md:text-2xl">KillCountAI</h3></div></div><div class="flex flex-1 flex-col p-6 md:p-8"><p class="flex items-center gap-1.5 text-xs text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin h-3.5 w-3.5" aria-hidden="true"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg>Global</p><p class="mt-3 text-sm leading-relaxed text-foreground/75">An offline-first scoring and performance intelligence app that turns every clay, station and round into evidence a shooter can act on.</p><ul class="mt-5 flex flex-wrap gap-2"><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Offline-first scoring for Compak Sporting, Sporting Clays and English Sporting Doubles.</li><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Round history, shareable recaps and clay-by-clay review in one product.</li><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Station heatmaps, weakness charts and AI-assisted miss diagnosis for deeper analysis.</li></ul><span class="mt-auto inline-flex items-center gap-2 pt-6 text-sm font-semibold text-[color:var(--color-accent-text)]">See the screens and the story<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4 transition-transform duration-300 group-hover:translate-x-1 group-hover:-translate-y-1" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></span></div></a><a class="reveal group relative flex flex-col overflow-hidden rounded-[var(--radius)] border border-border bg-card shadow-[var(--shadow-card)] transition-all duration-500 hover:-translate-y-1.5 hover:border-[color:var(--color-accent)]/40 lg:col-span-5" href="/portfolio/killcoach-ai"><div class="relative aspect-[1600/975] overflow-hidden bg-muted"><img src="/__l5e/assets-v1/850a8b28-f4e5-4c17-9697-484d93cbd057/killcoach-site-top.png" alt="KillCoachAI athlete development and coaching web app" loading="lazy" class="h-full w-full object-cover object-top transition-transform duration-[900ms] ease-[cubic-bezier(0.16,1,0.3,1)] group-hover:scale-[1.05]"/><div aria-hidden="true" class="absolute inset-0 bg-gradient-to-t from-[oklch(0.2_0.09_268/0.85)] via-[oklch(0.2_0.09_268/0.1)] to-transparent opacity-90"></div><span class="absolute left-5 top-5 font-heading text-xs font-bold tracking-widest text-white/70">02</span><div class="absolute inset-x-0 bottom-0 p-6 md:p-8"><span class="text-[10px] font-bold uppercase tracking-widest text-[color:var(--color-accent-2)]">Sports coaching and athlete development</span><h3 class="mt-1.5 font-heading text-xl font-bold leading-tight text-white md:text-2xl">KillCoachAI</h3></div></div><div class="flex flex-1 flex-col p-6 md:p-8"><p class="flex items-center gap-1.5 text-xs text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin h-3.5 w-3.5" aria-hidden="true"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg>Global</p><p class="mt-3 text-sm leading-relaxed text-foreground/75">A connected coaching workspace that turns athlete evidence into structured sessions, purposeful drills and visible progress.</p><ul class="mt-5 flex flex-wrap gap-2"><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Athlete rosters with individual profiles, performance history and weakness analysis.</li><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Structured coaching sessions and a reusable drill library with notes and video attachments.</li><li class="rounded-full border border-border bg-muted/50 px-3 py-1 text-[11px] font-semibold text-primary">Live KillCountAI scoring data connected directly to each athlete's coaching record.</li></ul><span class="mt-auto inline-flex items-center gap-2 pt-6 text-sm font-semibold text-[color:var(--color-accent-text)]">See the screens and the story<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4 transition-transform duration-300 group-hover:translate-x-1 group-hover:-translate-y-1" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></span></div></a></div></div></div><div class="reveal mt-10 flex flex-wrap items-center gap-4"><a href="/#contact" class="inline-flex items-center gap-2 rounded-full bg-[color:var(--color-accent)] px-6 py-3 text-sm font-semibold text-[color:var(--color-accent-foreground)] shadow-[var(--shadow-cta)] transition-transform hover:-translate-y-0.5">Talk to us about <!-- -->Custom apps<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a><span class="text-sm text-muted-foreground">One conversation, no obligation.</span></div></div></section><section id="apply" class="scroll-mt-28 border-t border-border bg-muted/40 py-14 md:py-20"><div class="container-x"><div class="mx-auto max-w-3xl"><div class="rounded-2xl border border-border bg-card p-7 shadow-[var(--shadow-card)] md:p-10"><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full border text-sm font-bold border-[color:var(--color-accent)] bg-[
1color:var(--color-accent)] text-[color:var(--color-accent-foreground)]">1</span><span class="h-px flex-1 bg-border"></span><span class="inline-flex h-8 w-8 items-center justify-center rounded-full border text-sm font-bold border-border bg-background text-muted-foreground">2</span></div><h3 class="mt-6 font-heading text-2xl font-bold text-primary md:text-3xl">Apply for a custom app build</h3><p class="mt-2 text-sm leading-relaxed text-foreground/70">Tell us what your spreadsheet or manual process does today. We come back with how we would rebuild it properly.</p><form class="mt-7 space-y-5" noValidate=""><div class="grid grid-cols-1 gap-5 md:grid-cols-2"><div><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary" for="apply_first_name">First Name<span class="text-[color:var(--color-accent-text)]"> *</span></label><input class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm" id="apply_first_name" autoComplete="given-name" name="first_name"/></div><div><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary" for="apply_last_name">Surname<span class="text-[color:var(--color-accent-text)]"> *</span></label><input class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm" id="apply_last_name" autoComplete="family-name" name="last_name"/></div><div class="md:col-span-2"><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary" for="apply_company">Company Name<span class="text-[color:var(--color-accent-text)]"> *</span></label><input class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm" id="apply_company" autoComplete="organization" name="company_name"/></div><div class="md:col-span-2"><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary" for="apply_email">Work Email<span class="text-[color:var(--color-accent-text)]"> *</span></label><input type="email" class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm" id="apply_email" autoComplete="email" placeholder="[email protected]" name="email"/></div><div class="md:col-span-2"><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary">Phone Number<span class="text-[color:var(--color-accent-text)]"> *</span></label><div class="flex gap-2"><button type="button" role="combobox" aria-expanded="false" aria-label="Country code" class="flex h-10 w-[112px] shrink-0 items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2" aria-haspopup="dialog" aria-controls="radix-_R_qm95ba_" data-state="closed"><span class="flex items-center gap-1.5"><span aria-hidden="true">ð¿ð¦</span><span class="font-medium">+<!-- -->27</span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down h-3.5 w-3.5 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><input type="tel" class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm flex-1" id="apply_phone" inputMode="tel" autoComplete="tel-national" placeholder="555 123 4567" name="phone"/></div></div><div class="md:col-span-2"><label class="peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block text-sm font-semibold text-primary">Country<span class="text-[color:var(--color-accent-text)]"> *</span></label><button type="button" role="combobox" aria-expanded="false" class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2" aria-haspopup="dialog" aria-controls="radix-_R_b695ba_" data-state="closed"><span class="text-muted-foreground">Select countryâ¦</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down h-4 w-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button></div></div><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary text-primary-foreground shadow hover:bg-primary/90 h-10 rounded-md px-8 w-full gap-2" type="button">Continue<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button><p class="text-center text-xs text-muted-foreground">Two short steps. No obligation, no sales sequence.</p></form></div></div></div></section><section class="border-t border-border py-14 md:py-20"><div class="container-x"><h2 class="font-heading text-xl font-bold text-foreground md:text-2xl">What else we build</h2><div class="mt-6 grid gap-4 sm:grid-cols-3"><a class="group rounded-[var(--radius)] border border-border bg-card p-5 transition-all hover:-translate-y-1 hover:border-[color:var(--color-accent)]/45" href="/services/websites"><h3 class="font-heading text-base font-bold text-foreground">Websites</h3><p class="mt-2 text-sm leading-relaxed text-muted-foreground">Sites rebuilt around what your customer needs to decide.</p><span class="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-[color:var(--color-accent-text)]">Explore<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4 transition-transform group-hover:translate-x-1 group-hover:-translate-y-1" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></span></a><a class="group rounded-[var(--radius)] border border-border bg-card p-5 transition-all hover:-translate-y-1 hover:border-[color:var(--color-accent)]/45" href="/services/crm"><h3 class="font-heading text-base font-bold text-foreground">CRM systems</h3><p class="mt-2 text-sm leading-relaxed text-muted-foreground">One place where every enquiry lives, with an owner and a next step.</p><span class="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-[color:var(--color-accent-text)]">Explore<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4 transition-transform group-hover:translate-x-1 group-hover:-translate-y-1" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></span></a><a class="group rounded-[var(--radius)] border border-border bg-card p-5 transition-all hover:-translate-y-1 hover:border-[color:var(--color-accent)]/45" href="/services/ai"><h3 class="font-heading text-base font-bold text-foreground">AI automation</h3><p class="mt-2 text-sm leading-relaxed text-muted-foreground">The admin nobody wants to do, handled â with a human in the loop.</p><span class="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-[color:var(--color-accent-text)]">Explore<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right h-4 w-4 transition-transform group-hover:translate-x-1 group-hover:-translate-y-1" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></span></a></div><section class="border-t border-border pt-8 mt-12" aria-labelledby="next-steps-heading"><p class="text-xs font-bold uppercase tracking-widest text-muted-foreground">Your next step</p><h2 id="next-steps-heading" class="mt-2 font-heading text-2xl font-bold text-primary">Choose what is most useful now</h2><div class="mt-5 grid gap-3 sm:grid-cols-3"><a class="group flex min-w-0 flex-col rounded-lg border border-border bg-card p-5 transition-all hover:-translate-y-0.5 hover:border-[color:var(--color-accent)]/45" href="/website-health-check"><span class="mt-2 inline-flex items-start gap-1.5 font-heading text-sm font-bold text-primary">Test your website free<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right mt-0.5 h-3.5 w-3.5 shrink-0 transition-transform group-hover:translate-x-0.5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="mt-1.5 text-xs leading-relaxed text-muted-foreground">Get a score and a short improvement report in about a minute.</span></a><a class="group flex min-w-0 flex-col rounded-lg border border-border bg-card p-5 transition-all hover:-translate-y-0.5 hover:border-[color:var(--color-accent)]/45" href="/ai-readiness"><span class="mt-2 inline-flex items-start gap-1.5 font-heading text-sm font-bold text-primary">Check your AI readiness<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right mt-0.5 h-3.5 w-3.5 shrink-0 transition-transform group-hover:translate-x-0.5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="mt-1.5 text-xs leading-relaxed text-muted-foreground">See where AI could save time or improve follow-up in your business.</span></a><a class="group flex min-w-0 flex-col rounded-lg border border-border bg-card p-5 transition-all hover:-translate-y-0.5 hover:border-[color:var(--color-accent)]/45" href="/portfolio"><span class="mt-2 inline-flex items-start gap-1.5 font-heading text-sm font-bold text-primary">See what we have built<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right mt-0.5 h-3.5 w-3.5 shrink-0 transition-transform group-hover:translate-x-0.5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="mt-1.5 text-xs leading-relaxed text-muted-foreground">Explore real websites, business systems and custom applications.</span></a></div></section></div></section></main><footer class="bg-secondary text-white/80"><div class="border-b border-white/10"><div class="container-x flex flex-col gap-4 py-8 lg:flex-row lg:items-center lg:justify-between"><div class="max-w-md"><p class="font-heading text-lg font-bold text-white">Test your website free</p><p class="mt-1 text-sm text-white/60">A score out of 100 and a short report on what to fix first.</p></div><div class="w-full lg:max-w-lg"><form class="w-full"><label for="footer-hc-url" class="sr-only">Your website address</label><div class="flex flex-col gap-3 sm:flex-row"><div class="flex flex-1 items-center overflow-hidden rounded-full border border-border bg-background text-foreground focus-within:ring-2 focus-within:ring-ring h-11"><span class="hidden items-center pl-5 text-sm text-muted-foreground sm:flex">https://</span><input class="flex w-full rounded-md border-input py-1 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm flex-1 border-0 bg-transparent px-5 text-foreground shadow-none placeholder:text-muted-foreground focus-visible:ring-0 h-11" id="footer-hc-url" placeholder="yourbusiness.co.za" autoComplete="url" inputMode="url" value=""/></div><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-full border px-8 font-bold shadow-lg transition-transform hover:-translate-y-0.5 border-amber/20 bg-amber text-amber-foreground shadow-[var(--shadow-amber)] hover:bg-amber-hover hover:shadow-[0_18px_50px_-14px_oklch(0.78_0.17_75_/0.55)] h-11" type="submit"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap h-4 w-4 fill-current" aria-hidden="true"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg> <!-- -->Test my website</button></div></form></div></div></div><div class="container-x py-14"><div class="grid grid-cols-1 gap-10 md:grid-cols-2 lg:grid-cols-[1.4fr_1fr_1fr_1fr_1fr]"><div><p class="font-heading text-xl font-bold text-white">DeployToday<span class="text-[color:var(--color-accent)]">.AI</span></p><p class="mt-3 font-heading text-sm font-bold uppercase tracking-[0.14em] text-[color:var(--color-accent)]">Run it. Build it. Launch it.</p><p class="mt-2 max-w-xs text-sm text-white/70">Stop talking about AI. Start using it.</p><div class="mt-6 space-y-1 text-sm text-white/70"><p>Email:<!-- --> <a href="mailto:[email protected]" class="text-white hover:text-[color:var(--color-accent)]">[email protected]</a></p><p>Website:<!-- --> <a href="https://deploytoday.ai" class="text-white hover:text-[color:var(--color-accent)]">deploytoday.ai</a></p><p>WhatsApp:<!-- --> <a href="https://wa.me/27829083332?text=I%20need%20help%20to%20deploy%20AI%20in%20my%20business%20today." target="_blank" rel="noopener noreferrer" class="text-white hover:text-[color:var(--color-accent)]">+27 82 908 3332</a></p><p class="pt-1">1st floor, Mushroom Farm Retail Centre, Cnr Alandale and President Drive, Kyalami, 1685</p></div><div class="mt-5 flex flex-wrap items-center gap-3"><a href="#" aria-label="Facebook" class="inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/20 text-white/70 transition-colors hover:border-[color:var(--color-accent)] hover:text-[color:var(--color-accent)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-facebook h-4 w-4" aria-hidden="true"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a><a href="https://www.instagram.com/deploytoday.ai?igsi=cjVwa2VyemxwdXl4" aria-label="Instagram" class="inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/20 text-white/70 transition-colors hover:border-[color:var(--color-accent)] hover:text-[color:var(--color-accent)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram h-4 w-4" aria-hidden="true"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a><a href="https://g.page/r/CQ5CQ1aCF-eHECE/review" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-2 rounded-full border border-white/20 px-3.5 py-2 text-xs font-semibold text-white/80 transition-colors hover:border-[color:var(--color-accent)] hover:text-[color:var(--color-accent)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star h-3.5 w-3.5" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg>Review us on Google</a></div></div><div><p class="text-xs font-bold uppercase tracking-widest text-[color:var(--color-accent)]">Services</p><ul class="mt-4 space-y-2.5 text-sm"><li><a class="hover:text-white active" href="/services" data-status="active" aria-current="page">All services</a></li><li><a class="hover:text-white" href="/services/websites">Websites</a></li><li><a class="hover:text-white" href="/services/crm">CRM systems</a></li><li><a class="hover:text-white active" href="/services/apps" data-status="active" aria-current="page">Custom apps</a></li><li><a class="hover:text-white" href="/services/ai">AI automation</a></li></ul></div><div><p class="text-xs font-bold uppercase tracking-widest text-[color:var(--color-accent)]">Work & Process</p><ul class="mt-4 space-y-2.5 text-sm"><li><a class="hover:text-white" href="/portfolio">Our work</a></li><li><a class="hover:text-white" href="/how-we-work">How we work</a></li><li><a class="hover:text-white" href="/ai-readiness">AI Readiness Assessment</a></li></ul></div><div><p class="text-xs font-bold uppercase tracking-widest text-[color:var(--color-accent)]">Resources</p><ul class="mt-4 space-y-2.5 text-sm"><li><a class="hover:text-white" href="/website-health-check">Website Health Check</a></li><li><a class="hover:text-white" href="/blog">Blog</a></li><li><a class="hover:text-white" href="/faq">FAQ</a></li><li><a class="hover:text-white" href="/ai-consulting-questions">Buyer'
1s guide</a></li><li><a class="hover:text-white" href="/guide/ai-consultant-cost">What it costs</a></li><li><a class="hover:text-white" href="/guide/ai-implementation-timeline">How long it takes</a></li></ul></div><div><p class="text-xs font-bold uppercase tracking-widest text-[color:var(--color-accent)]">Company</p><ul class="mt-4 space-y-2.5 text-sm"><li><a class="hover:text-white" href="/about">About us</a></li><li><a class="hover:text-white" href="/contact">Contact</a></li><li><a class="hover:text-white" href="/privacy-policy">Privacy Policy</a></li><li><a class="hover:text-white" href="/terms-of-use">Terms of Use</a></li><li><a class="hover:text-white" href="/cookie-policy">Cookie Policy</a></li><li><a class="hover:text-white" href="/ai-policy">AI Policy</a></li></ul></div></div><div class="mt-12 flex flex-col items-start justify-between gap-3 border-t border-white/10 pt-6 text-xs text-white/80 md:flex-row md:items-center"><p>© 2026 DeployToday.AI. All rights reserved.</p><p>Practical AI implementation for businesses that want results.</p></div><div class="mt-6 flex justify-center"><a aria-label="Internal" rel="nofollow" class="select-none px-3 py-1 text-[10px] leading-none tracking-[0.35em] text-white/15 transition hover:text-white/50" href="/dashboard">â¢â¢â¢</a></div></div></footer></div>
1<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
1<!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
1<script data-tsr-stream-part="">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-Cp5Lq3sb.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-Cp5Lq3sb.js"}}]},"/services":$R[8]={preloads:$R[9]=["/assets/services--h81ONY1.js"]},"/services/$id":$R[10]={preloads:$R[11]=["/assets/services._id-Of--Qm3f.js","/assets/Footer-y77Lh5_W.js","/assets/use-reveal-GaE5mVkz.js","/assets/caseStudies-Dp4j6gzm.js","/assets/target-DlK_DymU.js","/assets/check-_A7tGaEJ.js","/assets/arrow-up-right-CaTVKur3.js","/assets/createLucideIcon-C3ZUCjhC.js","/assets/CountryFields-DE-1bflZ.js","/assets/input-oaMiVHaW.js","/assets/label-7FS__yZl.js","/assets/button-DJ87GykR.js","/assets/select-B4aNc2DD.js","/assets/dialog-QKriVJbN.js","/assets/arrow-left-Chk0h3hn.js","/assets/HealthCheckTester-CYqHNTZZ.js","/assets/portfolioMeta-DMlx1bjG.js","/assets/HealthCheckMagnet-DC-G-OJx.js","/assets/NextSteps-Bu5-F22S.js","/assets/map-pin-ByCvZ9YR.js","/assets/sheet-CzGlmB7h.js","/assets/index-CSnZMJGf.js","/assets/index-BurcvciG.js","/assets/utils-DnlhuuIG.js","/assets/index-fTqgCA2r.js","/assets/index-CXqOUb0-.js","/assets/x-CfvDAWGX.js","/assets/index-BFqQJ5hy.js","/assets/index-CF_Bf861.js","/assets/index-BEb0Ezix.js","/assets/chevron-down-BgJ2dSxN.js","/assets/deploytoday-logo-horizontal.svg.asset-C8cCPwyu.js","/assets/deploytoday-white-horizontal.svg.asset-CHlQvMNT.js","/assets/mail-DOu9ljPX.js","/assets/menu-D1t07THb.js","/assets/instagram-CPpOVrSF.js","/assets/search-DJt7lZsH.js","/assets/countries-C9J-cCNn.js","/assets/index-CKLuklXP.js","/assets/file-text-DtwSKOZS.js","/assets/gauge-C5v_yPgx.js","/assets/services._id-0C1F-c1A.js"]}}}
1,matches:$R[12]=[$R[13]={i:"__root__�",u:1791209286051,s:"success",ssr:!0},$R[14]={i:"�services�services",u:1791209286051,s:"success",ssr:!0},$R[15]={i:"�services�$id�services�apps",u:1791209286051,s:"success",l:$R[16]={id:"apps"},ssr:!0}]})($R["tsr"]);$_TSR.e();{let s=document.currentScript,p;while((p=s.previousElementSibling)&&p.hasAttribute('data-tsr-stream-part'))p.remove();s.remove()}</script>
1<script type="module" async="" src="/assets/index-Cp5Lq3sb.js"></script>
1<script>document.currentScript.remove();/*$tsr-stream-boundary*/</script>
1</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.