1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 6 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" /> 7 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 8 <link rel="manifest" href="/site.webmanifest" /> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 10 <meta name="theme-color" content="#ffffff" /> 11 12 <!-- SEO defaults (home). The prerender (scripts/prerender.mjs) overrides 13 title / description / canonical / OG per route from src/seo/meta.js. --> 14 <title>Platform · Dooap Studio</title> 15 <meta name="description" content="The Dooap Studio platform: typed steps, governed Apps and models, confidence gates on every AI agent, full execution traces, and dataset-driven evaluation." /> 16 <link rel="canonical" href="https://dooapstudio.ai/features" /> 17 18 <meta property="og:type" content="website" /> 19 <meta property="og:site_name" content="Dooap Studio" /> 20 <meta property="og:url" content="https://dooapstudio.ai/features" /> 21 <meta property="og:title" content="Platform · Dooap Studio" /> 22 <meta property="og:description" content="The Dooap Studio platform: typed steps, governed Apps and models, confidence gates on every AI agent, full execution traces, and dataset-driven evaluation." /> 23 <meta property="og:image" content="https://dooapstudio.ai/media/og-card-v3.png" /> 24 <meta property="og:image:width" content="1200" /> 25 <meta property="og:image:height" content="630" /> 26 <meta name="twitter:card" content="summary_large_image" /> 27 <meta name="twitter:title" content="Platform · Dooap Studio" /> 28 <meta name="twitter:description" content="The Dooap Studio platform: typed steps, governed Apps and models, confidence gates on every AI agent, full execution traces, and dataset-driven evaluation." /> 29 <meta name="twitter:image" content="https://dooapstudio.ai/media/og-card-v3.png" /> 30 31 <!-- Privacy-friendly analytics by Plausible --> 32
32<script async src="https://plausible.io/js/pa-va9IGh9Hn6EPlnojlRzMJ.js"></script>
32 33
33<script> 34 window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}}; 35 plausible.init() 36 </script>
36 37
37<script type="module" crossorigin src="/assets/index-DLK_VF_H.js"></script>
37 38 <link rel="stylesheet" crossorigin href="/assets/index-YT_iPikf.css"> 39
39<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Dooap Studio","applicationCategory":"BusinessApplication","operatingSystem":"Web","url":"https://dooapstudio.ai","description":"The AI trust layer for accounts payable and finance automation: confidence gates, human review, and a full audit trail â AI never posts a wrong invoice.","publisher":{"@id":"https://dooapstudio.ai/#org"}}</script>
39<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://dooapstudio.ai/"},{"@type":"ListItem","position":2,"name":"Platform","item":"https://dooapstudio.ai/features"}]}</script>
39</head> 40 <body class="bg-dooap-ink text-dooap-cream antialiased"> 41 <div id="root"><link rel="preload" as="image" href="/dooap_studio.svg"/><div class="flex min-h-screen flex-col bg-white text-dooap-ink"><a href="#main" class="sr-only focus:not-sr-only focus:absolute focus:left-4 focus:top-4 focus:z-50 focus:rounded-md focus:bg-dooap-ink focus:px-4 focus:py-2 focus:text-sm focus:font-semibold focus:text-white">Skip to main content</a><header class="sticky top-0 z-40 border-b border-white/10 bg-dooap-ink/80 backdrop-blur"><div class="mx-auto flex max-w-7xl items-center justify-between px-4 py-4 sm:px-6 lg:px-8"><div class="flex items-center gap-10"><a class="flex items-center" aria-label="Dooap Studio home" href="/" data-discover="true"><span class="inline-flex items-end gap-1.5 font-display font-bold tracking-tight text-white "><img src="/dooap_studio.svg" alt="Dooap Studio" class="h-7 w-auto -translate-y-px"/></span></a><nav class="hidden items-center gap-8 lg:flex" aria-label="Primary"><a aria-current="page" class="text-sm font-semibold text-white/90 hover:text-white transition-colors text-white" href="/features" data-discover="true">Platform</a><a class="text-sm font-semibold text-white/90 hover:text-white transition-colors " href="/shepherd" data-discover="true">Dooap Shepherd</a><a class="text-sm font-semibold text-white/90 hover:text-white transition-colors " href="/use-cases" data-discover="true">Use cases</a><a class="text-sm font-semibold text-white/90 hover:text-white transition-colors " href="/security" data-discover="true">Security</a><a class="text-sm font-semibold text-white/90 hover:text-white transition-colors " href="/docs" data-discover="true">Docs</a><a class="text-sm font-semibold text-white/90 hover:text-white transition-colors " href="/why" data-discover="true">Why Dooap Studio</a></nav></div><div class="hidden lg:block"><a class="inline-flex items-center bg-white px-5 py-2 text-sm font-semibold text-dooap-ink transition-colors hover:bg-dooap-fog" href="/contact" data-discover="true">Book a demo</a></div><button type="button" class="inline-flex items-center justify-center p-2 text-white lg:hidden" aria-label="Toggle menu" aria-expanded="false"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3 6.75A.75.75 0 0 1 3.75 6h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 6.75ZM3 12a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 12Zm0 5.25a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75a.75.75 0 0 1-.75-.75Z" clip-rule="evenodd"></path></svg></button></div></header><main id="main" class="flex-1"><section class="relative isolate overflow-hidden bg-white"><div aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 opacity-[0.05] [background-image:linear-gradient(115deg,transparent_49.5%,#241773_49.5%,#241773_50.5%,transparent_50.5%),linear-gradient(65deg,transparent_49.5%,#241773_49.5%,#241773_50.5%,transparent_50.5%)] [background-size:64px_64px] "></div><div class="relative mx-auto grid max-w-7xl items-center gap-x-12 gap-y-12 px-4 py-20 sm:px-6 sm:py-24 lg:grid-cols-[0.9fr_1.1fr] lg:px-8 lg:py-28"><div class="relative z-10 max-w-2xl lg:pr-4" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">The platform</p><h1 class="mt-6 font-display text-4xl font-bold tracking-tight text-balance text-dooap-ink sm:text-5xl lg:text-6xl">Everything you need to build, run, and<!-- --> <span class="text-dooap-purple">trust</span> AI Actions.</h1><p class="mt-8 max-w-xl text-lg text-pretty text-dooap-grey-dark">A workspace for composing and operating AI Actions: typed steps, governed Apps and models, confidence gates on every AI agent, full execution traceability, and dataset-driven evaluation. Built so finance people can author the logic themselves, in plain language.</p><div class="mt-10 flex flex-wrap items-center gap-4"><a class="inline-flex items-center gap-2 bg-dooap-ink px-6 py-3 text-sm font-semibold text-white transition-colors hover:bg-dooap-grey-dark" href="/contact" data-discover="true">Book a demo <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12.97 3.97a.75.75 0 0 1 1.06 0l7.5 7.5a.75.75 0 0 1 0 1.06l-7.5 7.5a.75.75 0 1 1-1.06-1.06l6.22-6.22H3a.75.75 0 0 1 0-1.5h16.19l-6.22-6.22a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path></svg></a><a class="inline-flex items-center gap-2 border border-black/20 px-6 py-3 text-sm font-semibold text-dooap-ink transition-colors hover:border-dooap-ink" href="/how-it-works" data-discover="true">See how it works</a></div></div><div class="min-w-0" style="opacity:0;transform:translateY(16px)">
41<div class="iso-stage iso-stage--diagram lg:-mr-8 lg:ml-8"><div class="iso-plane iso-plane--hover iso-plane--3d" style="--iso-scale:1.34;--iso-scale-hover:1.16"><div class="iso-diagram-shadow" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-2px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-4px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-6px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-8px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-10px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-12px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-14px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-16px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-18px)" aria-hidden="true"><svg viewBox="0 0 760 450" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="14" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="202" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="390" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="578" y="90" width="158" height="68" fill="#d7d7de"></rect><rect x="14" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="96" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="178" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="268" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="350" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="432" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="522" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="604" y="344" width="58" height="36" fill="#d7d7de"></rect><rect x="686" y="344" width="58" height="36" fill="#d7d7de"></rect></svg></div><svg viewBox="0 0 760 450" class="h-auto w-full " aria-hidden="true" style="overflow:visible"><defs>
41<marker id="fl-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="5.5" markerHeight="5.5" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="rgb(10 10 10 / 0.5)"></path></marker></defs><text x="14" y="34" font-size="10" letter-spacing="2" fill="rgb(10 10 10 / 0.45)" opacity="0">VENDOR ONBOARDING · FOUR ACTIONS · ONE WORK UNIT</text><g opacity="0"><rect x="6" y="64" width="744" height="112" rx="10" fill="none" stroke="rgb(10 10 10 / 0.14)" stroke-width="1" stroke-dasharray="4 4"></rect></g><g opacity="0"><rect x="14" y="90" width="158" height="68" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="14" y="90" width="3" height="68" fill="rgb(0 152 195 / 0.9)"></rect><text x="26" y="107" font-size="8.5" letter-spacing="1.2" fill="rgb(10 10 10 / 0.5)">ACTION 1 · HUMAN TRIGGER</text><text x="26" y="127" font-size="14" fill="rgb(10 10 10 / 0.88)">Intake & OCR</text><text x="26" y="145" font-size="9.5" fill="rgb(10 10 10 / 0.5)">form + invoice PDF</text></g><g opacity="0"><rect x="202" y="90" width="158" height="68" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="202" y="90" width="3" height="68" fill="rgb(240 171 0 / 0.95)"></rect><text x="214" y="107" font-size="8.5" letter-spacing="1.2" fill="rgb(10 10 10 / 0.5)">ACTION 2 · HUMAN TASK</text><text x="214" y="127" font-size="14" fill="rgb(10 10 10 / 0.88)">Vendor completes</text><text x="214" y="145" font-size="9.5" fill="rgb(10 10 10 / 0.5)">email + one-time code · W-9</text></g><g opacity="0"><rect x="390" y="90" width="158" height="68" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="390" y="90" width="3" height="68" fill="rgb(240 171 0 / 0.95)"></rect><text x="402" y="107" font-size="8.5" letter-spacing="1.2" fill="rgb(10 10 10 / 0.5)">ACTION 3 · HUMAN TASK</text><text x="402" y="127" font-size="14" fill="rgb(10 10 10 / 0.88)">Review & approve</text><text x="402" y="145" font-size="9.5" fill="rgb(10 10 10 / 0.5)">validated by your team</text></g><g opacity="0"><rect x="578" y="90" width="158" height="68" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="578" y="90" width="3" height="68" fill="rgb(105 190 40 / 0.95)"></rect><text x="590" y="107" font-size="8.5" letter-spacing="1.2" fill="rgb(10 10 10 / 0.5)">ACTION 4 · TOOL CALLS</text><text x="590" y="127" font-size="14" fill="rgb(10 10 10 / 0.88)">Create in ERP</text><text x="590" y="145" font-size="9.5" fill="rgb(10 10 10 / 0.5)">vendor created · requestor notified</text></g><path d="M172,124 H198" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.75" fill="none" marker-end="url(#fl-arrow)" opacity="0"></path><path d="M360,124 H386" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.75" fill="none" marker-end="url(#fl-arrow)" opacity="0"></path><path d="M548,124 H574" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.75" fill="none" marker-end="url(#fl-arrow)" opacity="0"></path><text x="742" y="194" font-size="10.5" fill="rgb(10 10 10 / 0.5)" text-anchor="end" opacity="0">chained runs, tracked together â configured in Studio, no code</text><text x="14" y="282" font-size="10" letter-spacing="2" fill="rgb(10 10 10 / 0.45)" opacity="0">MEANWHILE · MORE LIVE ACTIONS, RUNNING CONCURRENTLY</text><g opacity="0"><g><circle cx="19" cy="311" r="4" fill="rgb(105 190 40 / 0.95)"></circle><text x="30" y="316" font-size="15.5" font-weight="600" fill="rgb(10 10 10 / 0.88)">Invoice intake</text><g><rect x="14" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="14" y="344" width="2.5" height="36" fill="rgb(0 152 195 / 0.9)"></rect></g><g><rect x="96" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="96" y="344" width="2.5" height="36" fill="rgb(240 171 0 / 0.95)"></rect></g><g><rect x="178" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="178" y="344" width="2.5" height="36" fill="rgb(114 62 148 / 0.95)"></rect></g><path d="M72,362 H93" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M154,362 H175" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M207,380 V412 H198" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none"></path><circle cx="188" cy="412" r="8" fill="rgb(105 190 40 / 0.12)" stroke="rgb(105 190 40 / 0.95)" stroke-width="1"></circle><text x="188" y="415.5" font-size="9" fill="#3f7a19" text-anchor="middle">â</text></g></g><g opacity="0"><g><circle cx="273" cy="311" r="4" fill="rgb(105 190 40 / 0.95)"></circle><text x="284" y="316" font-size="15.5" font-weight="600" fill="rgb(10 10 10 / 0.88)">3-way match</text><g><rect x="268" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="268" y="344" width="2.5" height="36" fill="rgb(0 152 195 / 0.9)"></rect></g><g><rect x="350" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="350" y="344" width="2.5" height="36" fill="rgb(114 62 148 / 0.95)"></rect></g><g><rect x="432" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="432" y="344" width="2.5" height="36" fill="rgb(105 190 40 / 0.95)"></rect></g><path d="M326,362 H347" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M408,362 H429" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M461,380 V412 H452" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none"></path><circle cx="442" cy="412" r="8" fill="rgb(105 190 40 / 0.12)" stroke="rgb(105 190 40 / 0.95)" stroke-width="1"></circle><text x="442" y="415.5" font-size="9" fill="#3f7a19" text-anchor="middle">â</text></g></g><g opacity="0"><g><circle cx="527" cy="311" r="4" fill="rgb(105 190 40 / 0.95)"></circle><text x="538" y="316" font-size="15.5" font-weight="600" fill="rgb(10 10 10 / 0.88)">Accruals</text><g><rect x="640" y="300" width="92" height="21" rx="10.5" fill="#ffffff" stroke="rgb(240 171 0 / 0.95)" stroke-width="1" stroke-dasharray="4 3"></rect><text x="652" y="314.5" font-size="10.5" fill="#9a6a00">v13 · draft</text></g><g><rect x="522" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="522" y="344" width="2.5" height="36" fill="rgb(0 152 195 / 0.9)"></rect></g><g><rect x="604" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="604" y="344" width="2.5" height="36" fill="rgb(114 62 148 / 0.95)"></rect></g><g><rect x="686" y="344" width="58" height="36" fill="#ffffff" stroke="rgb(10 10 10 / 0.16)" stroke-width="1.25"></rect><rect x="686" y="344" width="2.5" height="36" fill="rgb(105 190 40 / 0.95)"></rect></g><path d="M580,362 H601" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M662,362 H683" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none" marker-end="url(#fl-arrow)"></path><path d="M715,380 V412 H706" stroke="rgb(10 10 10 / 0.4)" stroke-width="1.5" fill="none"></path><circle cx="696" cy="412" r="8" fill="rgb(105 190 40 / 0.12)" stroke="rgb(105 190 40 / 0.95)" stroke-width="1"></circle><text x="696" y="415.5" font-size="9" fill="#3f7a19" text-anchor="middle">â</text></g></g><g aria-hidden="true"><circle r="8" fill="rgb(114 62 148 / 0.3)">
41<animateMotion dur="9s" repeatCount="indefinite" path="M16,124 H732"></animateMotion></circle><circle r="3" fill="rgb(114 62 148 / 0.95)"><animateMotion dur="9s" repeatCount="indefinite" path="M16,124 H732"></animateMotion></circle><g><circle r="8" fill="rgb(114 62 148 / 0.3)"><animateMotion dur="4.2s" repeatCount="indefinite" path="M16,362 H232"></animateMotion></circle><circle r="3" fill="rgb(114 62 148 / 0.95)"><animateMotion dur="4.2s" repeatCount="indefinite" path="M16,362 H232"></animateMotion></circle></g></g></svg></div></div></div></div></section><section class="border-t border-black/[0.07] bg-dooap-grey-light py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="max-w-3xl" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Step types</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">Eight building blocks. Any finance process.</h2><p class="mt-6 max-w-2xl text-base text-pretty text-dooap-grey-dark">Each step does one thing well. Outputs flow forward, while branching, iteration and errors get their own dedicated types. Pick a step to see what it looks like on the canvas, and what you control on it.</p></div><div class="" style="opacity:0;transform:translateY(16px)"><div class="grid gap-x-12 gap-y-10 lg:grid-cols-[0.78fr_1.22fr] mt-12"><div role="tablist" aria-label="Step types" class="grid grid-cols-2 gap-2 lg:grid-cols-1"><button type="button" role="tab" id="step-tab-agent" aria-selected="true" aria-controls="step-panel-agent" tabindex="0" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-dooap-ink/30 bg-black/[0.04] text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(114 62 148 / 0.95)"></span>Agent</button><button type="button" role="tab" id="step-tab-code" aria-selected="false" aria-controls="step-panel-code" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(0 152 195 / 0.9)"></span>Code</button><button type="button" role="tab" id="step-tab-switch" aria-selected="false" aria-controls="step-panel-switch" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(10 10 10 / 0.35)"></span>Switch</button><button type="button" role="tab" id="step-tab-ocr" aria-selected="false" aria-controls="step-panel-ocr" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(240 171 0 / 0.95)"></span>OCR</button><button type="button" role="tab" id="step-tab-tool" aria-selected="false" aria-controls="step-panel-tool" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(105 190 40 / 0.95)"></span>Tool Call</button><button type="button" role="tab" id="step-tab-loop" aria-selected="false" aria-controls="step-panel-loop" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(10 10 10 / 0.35)"></span>Loop Over</button><button type="button" role="tab" id="step-tab-metadata" aria-selected="false" aria-controls="step-panel-metadata" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(10 10 10 / 0.35)"></span>Metadata</button><button type="button" role="tab" id="step-tab-triggeraction" aria-selected="false" aria-controls="step-panel-tr
41iggeraction" tabindex="-1" class="flex w-full items-center gap-3 border px-4 py-3 text-left font-display text-base font-semibold transition-colors sm:text-lg border-black/10 bg-white text-dooap-grey-dark hover:border-dooap-ink/30 hover:text-dooap-ink"><span aria-hidden="true" class="h-2 w-2 shrink-0 rounded-full" style="background-color:rgb(202 0 93 / 0.9)"></span>Trigger Action</button></div><div class="relative min-h-[38rem] sm:min-h-[36rem] lg:min-h-[34rem]"><div id="step-panel-agent" role="tabpanel" aria-labelledby="step-tab-agent" tabindex="0" style="opacity:1;transform:none"><div class="iso-stage iso-stage--diagram max-w-2xl"><div class="iso-plane iso-plane--hover iso-plane--3d" style="--iso-scale:1.06"><div class="iso-diagram-shadow" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-2px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-4px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-6px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-8px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-10px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-12px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-14px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-16px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-18px)" aria-hidden="true"><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="10" y="48" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="10" y="84" width="112" height="22" rx="11" fill="#d7d7de"></rect><rect x="156" y="56" width="164" height="58" fill="#d7d7de"></rect><rect x="338" y="52" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="338" y="82" width="100" height="22" rx="11" fill="#d7d7de"></rect><rect x="158" y="154" width="160" height="24" rx="12" fill="#d7d7de"></rect></svg></div><svg viewBox="0 0 440 210" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><marker id="vg-agent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
41<path d="M0,0 L10,5 L0,10 z" fill="rgb(10 10 10 / 0.55)"></path></marker><text x="10" y="38" font-size="10" letter-spacing="2" fill="rgb(10 10 10 / 0.5)">INPUTS</text><g><rect x="10" y="48" width="112" height="22" rx="11" fill="#ffffff" stroke="rgb(10 10 10 / 0.2)" stroke-width="1"></rect><text x="22" y="62.5" font-size="11" fill="rgb(10 10 10 / 0.65)">Invoice PDF</text></g><g><rect x="10" y="84" width="112" height="22" rx="11" fill="#ffffff" stroke="rgb(10 10 10 / 0.2)" stroke-width="1"></rect><text x="22" y="98.5" font-size="11" fill="rgb(10 10 10 / 0.65)">Vendor list</text></g><path d="M122,59 H150" stroke="rgb(10 10 10 / 0.48)" stroke-width="1.5" fill="none" marker-end="url(#vg-agent)"></path><path d="M122,95 H150" stroke="rgb(10 10 10 / 0.48)" stroke-width="1.5" fill="none" marker-end="url(#vg-agent)"></path><g><rect x="156" y="56" width="164" height="58" fill="#ffffff" stroke="rgb(10 10 10 / 0.22)" stroke-width="1.5"></rect><rect x="156" y="56" width="3" height="58" fill="rgb(114 62 148 / 0.95)"></rect><text x="169" y="74" font-size="10" letter-spacing="1.5" fill="rgb(10 10 10 / 0.58)">AGENT STEP</text><text x="169" y="91" font-size="13" fill="rgb(10 10 10 / 0.82)">Extract & code invoice</text><text x="169" y="104" font-size="10" fill="rgb(10 10 10 / 0.58)">gpt-5-mini</text></g><text x="342" y="44" font-size="10" letter-spacing="2" fill="rgb(10 10 10 / 0.5)">TOOLS</text><path d="M320,85 H334" stroke="rgb(10 10 10 / 0.2)" stroke-width="1.5" fill="none"></path><g><rect x="338" y="52" width="100" height="22" rx="11" fill="#ffffff" stroke="rgb(10 10 10 / 0.2)" stroke-width="1"></rect><circle cx="349" cy="63" r="2.5" fill="rgb(105 190 40 / 0.95)"></circle><text x="358" y="66.5" font-size="11" fill="rgb(10 10 10 / 0.65)">Get PO data</text></g><g><rect x="338" y="82" width="100" height="22" rx="11" fill="#ffffff" stroke="rgb(10 10 10 / 0.2)" stroke-width="1"></rect><circle cx="349" cy="93" r="2.5" fill="rgb(105 190 40 / 0.95)"></circle><text x="358" y="96.5" font-size="11" fill="rgb(10 10 10 / 0.65)">Search history</text></g><path d="M238,114 V148" stroke="rgb(10 10 10 / 0.48)" stroke-width="1.5" fill="none" marker-end="url(#vg-agent)"></path><rect x="158" y="154" width="160" height="24" rx="12" fill="rgb(114 62 148 / 0.12)" stroke="rgb(114 62 148 / 0.95)" stroke-width="1"></rect><circle cx="174" cy="166" r="2.5" fill="rgb(114 62 148 / 0.95)"></circle><text x="184" y="170" font-size="11" fill="rgb(114 62 148 / 0.95)">confidence gate · HIGH</text><text x="238" y="198" font-size="11" fill="rgb(10 10 10 / 0.58)" text-anchor="middle">below the bar, the run halts or escalates</text></svg></div></div><p class="mt-7 max-w-xl text-base leading-relaxed text-dooap-grey-dark">LLM reasoning with optional multi-turn tool use. Each step has a model, an agent role (versioned system prompt), assigned inputs, a whitelist of tools, a max-iteration cap, a confidence gate, and optionally structured JSON output validated against a schema.</p><p class="mt-7 text-[10px] font-medium tracking-[0.1em] text-dooap-grey-dark/80 uppercase">You control</p><ul class="mt-3 flex max-w-xl flex-wrap gap-2"><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Model per step</li><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Versioned agent role</li><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Tool whitelist</li><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Confidence gate</li><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Max iterations</li><li class="rounded-full border border-black/15 px-3 py-1 text-xs text-dooap-grey-dark">Structured output</li></ul></div></div></div></div></div></section><section class="border-b border-black/[0.07] bg-white py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="mx-auto max-w-3xl text-center" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Apps & tools</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">Approved endpoints. <span class="sm:whitespace-nowrap">Reusable everywhere.</span> <span class="sm:whitespace-nowrap">Nothing else gets out.</span></h2><p class="mx-auto mt-6 max-w-2xl text-base text-pretty text-dooap-grey-dark">Standard apps ship in the box; bring any OpenAPI in minutes, or connect a remote MCP server and use the tools it exposes. Endpoints become inputs and tools usable from Agent, Code and Tool Call steps, and from nowhere admins havenât authorized. Sequence them with Loop Over for batch work, or fan them out with parallel Trigger Action calls; chained runs are tracked together as a cohesive work unit.</p></div><ol class="mt-12 grid gap-10 sm:grid-cols-2 lg:gap-x-14 lg:gap-y-12"><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Standard apps in the box</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Dooap, Microsoft Exchange, Azure Storage, Azure Communication Services: pre-built and admin-authorized, covering invoices, mailboxes, files, and outbound email & SMS out of the box.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Any OpenAPI as an App</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Drop a spec, choose which endpoints become inputs and tools, and store credentials in the secret vault. Each App gets a toggleable inbound webhook.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Any remote MCP server</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Connect a remote Model Context Protocol server and every tool it exposes becomes a governed Dooap Studio tool. The open MCP ecosystem, admin-authorized like everything else.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Tools shared across step types</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">The same endpoint works for an Agent step as a tool, for a Code step as a callable, or as a direct Tool Call. Wire once, use everywhere: deterministic and agentic side by side.</p></li></ol></div></section><section class="border-t border-black/[0.07] bg-dooap-grey-light py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="grid gap-14 lg:grid-cols-[1fr_2fr] lg:gap-24"><div class="" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Pick the right model</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">The right model for each task.</h2><p class="mt-6 max-w-md text-base text-pretty text-dooap-grey-dark">Dooap Studio doesnât lock you to one LLM. Each step picks its own model, and a specialist when determinism beats reasoning.</p><div class="mt-8 iso-stage iso-stage--diagram"><div class="iso-plane iso-plane--hover iso-plane--3d"><div class="iso-diagram-shadow" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-2px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-4px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-6px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-8px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-10px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-12px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-14px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-16px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><div class="iso-diagram-body" style="transform:translateZ(-18px)" aria-hidden="true"><svg viewBox="0 0 250 212" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="0" y="0" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="76" width="250" height="60" fill="#d7d7de"></rect><rect x="0" y="152" width="250" height="60" fill="#d7d7de"></rect></svg></div><svg viewBox="0 0 250 212" class="h-auto w-full " aria-hidden="true" style="overflow:visible"><g opacity="0"><rect x="0" y="0" width="250" height="60" fill="#ffffff" stroke="rgb(10 10 10 / 0.12)" stroke-width="1.5"></rect><rect x="0" y="0" width="3.5" height="60" fill="rgb(240 171 0 / 0.95)"></rect><text x="16" y="21" font-size="11" letter-spacing="1.8" fill="rgb(10 10 10 / 0.45)">OCR STEP</text><text x="16" y="39" font-size="15" fill="rgb(10 10 10 / 0.88)">Read document</text><text x="16" y="53" font-size="12" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" fill="rgb(10 10 10 / 0.55)">azure-document</text></g><g opacity="0"><rect x="0" y="76" width="250" height="60" fill="#ffffff" stroke="rgb(10 10 10 / 0.12)" stroke-width="1.5"></rect><rect x="0" y="76" width="3.5" height="60" fill="rgb(114 62 148 / 0.95)"></rect><text x="16" y="97" font-size="11" letter-spacing="1.8" fill="rgb(10 10 10 / 0.45)">AGENT STEP</text><text x="16" y="115" font-size="15" fill="rgb(10 10 10 / 0.88)">Extract & code invoice</text><text x="16" y="129" font-size="12" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" fill="rgb(10 10 10 / 0.55)">gpt-5-mini</text></g><g opacity="0"><rect x="0" y="152" width="250" height="60" fill="#ffffff" stroke="rgb(10 10 10 / 0.12)" stroke-width="1.5"></rect><rect x="0" y="152" width="3.5" height="60" fill="rgb(114 62 148 / 0.95)"></rect><text x="16" y="173" font-size="11" letter-spacing="1.8" fill="rgb(10 10 10 / 0.45)">AGENT STEP</text><text x="16" y="191" font-size="15" fill="rgb(10 10 10 / 0.88)">Match PO lines</text><text x="16" y="205" font-size="12" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" fill="rgb(10 10 10 / 0.55)">claude-opus</text></g></svg></div></div></div><ol class="space-y-12"><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Multi-model per step</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">Pick OpenAI, Anthropic, or any configured model, independently for each agent step. Optimize cost or capability per task; switch in seconds.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Specialist models for specific jobs</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">An OCR model reads documents. Dense embeddings find similar invoices. Use the right tool, not just a bigger LLM, and stay deterministic where you need to be.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Output filters trim tokens</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">A JSONPath-like filter on every input and tool result keeps the prompt small. Faster answers, lower cost, less noise in execution logs.</p></li></ol></div></div></section><section class="border-t border-black/[0.07] bg-white py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="mx-auto max-w-3xl text-center" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Dooap Studioâs own data</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">Bring your data into <span class="whitespace-nowrap">Dooap Studio</span>.</h2><p class="mx-auto mt-6 max-w-2xl text-base text-pretty text-dooap-grey-dark">Sometimes the right place to keep state isnât another system. Itâs Dooap Studio itself. Two building blocks give Actions their own file system and typed tables.</p></div><div class="mt-12 grid gap-x-10 gap-y-12 lg:grid-cols-2"><div class="min-w-0" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Data Files</h3><p class="mt-2 max-w-md text-base leading-relaxed text-dooap-grey-dark">A per-tenant file system Actions can read from and write to. Drop a CSV, a JSON dataset, an exported document; reference it from any step.</p><div class="iso-stage iso-stage--diagram mt-2 w-fit max-w-full"><div class="iso-plane iso-plane--hover iso-plane--3d"><div class="iso-diagram-shadow" aria-hidden="true"><div class="h-full w-full bg-[#d7d7de] rounded-lg"></div></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-2px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-4px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-6px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-8px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-10px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-12px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-14px)">
41</div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-16px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-18px)"></div><div class="relative"><pre class="overflow-hidden rounded-lg border border-black/10 bg-white p-4 font-mono text-xs leading-relaxed text-dooap-grey-dark">data/ 42ââ vendor-aliases.csv 43ââ price-lists/ 44â ââ 2026-Q2.json 45ââ exports/ 46 ââ coding-report.md</pre></div></div></div></div><div class="min-w-0" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Data Tables</h3><p class="mt-2 max-w-md text-base leading-relaxed text-dooap-grey-dark">Tables with typed columns Actions can search, write, and read. Keep reference data, lookups, or working state inside Dooap Studio, with no extra system to wire up.</p><div class="iso-stage iso-stage--diagram mt-10 w-fit max-w-full"><div class="iso-plane iso-plane--hover iso-plane--3d"><div class="iso-diagram-shadow" aria-hidden="true"><div class="h-full w-full bg-[#d7d7de] rounded-lg"></div></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-2px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-4px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-6px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-8px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-10px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-12px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-14px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-16px)"></div><div aria-hidden="true" class="absolute inset-0 bg-[#d7d7de] rounded-lg" style="transform:translateZ(-18px)"></div><div class="relative"><div class="overflow-hidden rounded-lg border border-black/10 bg-white"><table class="w-full font-mono text-xs"><thead><tr class="border-b border-black/10 text-left text-dooap-grey-dark/80"><th class="px-4 py-2.5 font-normal">vendor<!-- --> <span class="text-[10px] tracking-[0.1em] text-dooap-grey-dark/50 uppercase">text</span></th><th class="px-4 py-2.5 font-normal">gl_account<!-- --> <span class="text-[10px] tracking-[0.1em] text-dooap-grey-dark/50 uppercase">text</span></th><th class="px-4 py-2.5 font-normal">credit_limit<!-- --> <span class="text-[10px] tracking-[0.1em] text-dooap-grey-dark/50 uppercase">number</span></th><th class="px-4 py-2.5 font-normal">updated<!-- --> <span class="text-[10px] tracking-[0.1em] text-dooap-grey-dark/50 uppercase">date</span></th></tr></thead><tbody class="text-dooap-grey-dark"><tr class="border-b border-black/[0.06] last:border-0"><td class="px-4 py-2.5 whitespace-nowrap">Nordic Freight Oy</td><td class="px-4 py-2.5 whitespace-nowrap">6210</td><td class="px-4 py-2.5 whitespace-nowrap">40 000</td><td class="px-4 py-2.5 whitespace-nowrap">2026-05-28</td></tr><tr class="border-b border-black/[0.06] last:border-0"><td class="px-4 py-2.5 whitespace-nowrap">Acme Industrial</td><td class="px-4 py-2.5 whitespace-nowrap">4010</td><td class="px-4 py-2.5 whitespace-nowrap">125 000</td><td class="px-4 py-2.5 whitespace-nowrap">2026-06-02</td></tr><tr class="border-b border-black/[0.06] last:border-0"><td class="px-4 py-2.5 whitespace-nowrap">Brightline Media</td><td class="px-4 py-2.5 whitespace-nowrap">4530</td><td class="px-4 py-2.5 whitespace-nowrap">18 500</td><td class="px-4 py-2.5 whitespace-nowrap">2026-06-09</td></tr></tbody></table></div></div></div></div></div></div></div></section><section class="border-t border-black/[0.07] bg-dooap-grey-light py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="grid gap-14 lg:grid-cols-[1fr_2fr] lg:gap-24"><div class="" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">The library</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">Start from a <span class="whitespace-nowrap">known-good pattern.</span></h2><p class="mt-6 max-w-md text-base text-pretty text-dooap-grey-dark">Donât begin from a blank canvas. The Dooap Studio Library ships pre-made Actions, Apps, and Skills you can drop in and tailor.</p></div><ol class="space-y-12"><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Action templates</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">Common workflows like invoice intake, vendor matching, approval routing, and fraud checks, ready to clone, rename, and tailor to your data.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">App templates</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">Pre-configured Apps with their endpoints already mapped as inputs and tools. Skip the wire-up; jump straight to composing.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Reusable Skills</h3><p class="mt-2 max-w-xl text-base leading-relaxed text-dooap-grey-dark">Versioned instruction packs agents load by context. Write down how your team handles a job once, and every Action that needs it behaves consistently. Audit-logged like everything else.</p></li></ol></div></div></section><section class="border-t border-black/[0.07] bg-white py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="grid gap-x-10 gap-y-10 lg:grid-cols-[0.78fr_1.22fr] lg:items-center"><div class="" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Trust & safe rollout</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">The controls shipped software has â on your finance logic.</h2><p class="mt-6 max-w-md text-base text-pretty text-dooap-grey-dark">Versioning, dry-run on real data, dataset evaluations, and one-click rollback wrap every Action. Improve a live one, prove the change against captured runs, promote it â and roll back instantly if it misbehaves.</p></div><div class="" style="opacity:0;transform:translateY(16px)"><div class="iso-stage iso-stage--diagram"><div class="iso-plane iso-plane--hover iso-plane--3d"><div class="iso-diagram-shadow" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-2px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-4px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-6px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-8px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-10px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-12px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-14px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-16px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><div class="iso-diagram-body" style="transform:translateZ(-18px)" aria-hidden="true"><svg viewBox="0 0 760 190" class="h-auto w-full " style="overflow:visible" aria-hidden="true"><rect x="424" y="50" width="152" height="40" fill="#d7d7de"></rect><rect x="596" y="50" width="120" height="40" fill="#d7d7de"></rect><rect x="168" y="26" width="64" height="24" rx="12" fill="#d7d7de"></rect><rect x="322" y="26" width="76" height="24" rx="12" fill="#d7d7de"></rect><circle cx="60" cy="70" r="7" fill="#d7d7de"></circle><circle cx="200" cy="70" r="9" fill="#d7d7de"></circle><circle cx="360" cy="70" r="9" fill="#d7d7de"></circle></svg></div><svg viewBox="0 0 760 190" class="h-auto w-full " aria-hidden="true"><defs>
46<marker id="vr-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="rgb(10 10 10 / 0.6)"></path></marker><marker id="vr-arrow-gold" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="rgb(240 171 0 / 0.95)"></path></marker></defs><path d="M30,70 H170" stroke="rgb(10 10 10 / 0.4)" stroke-width="2" fill="none" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></path><path d="M230,70 H330" stroke="rgb(10 10 10 / 0.4)" stroke-width="2" fill="none" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></path><g opacity="0"><circle cx="60" cy="70" r="7" fill="rgb(10 10 10 / 0.9)" stroke="rgb(10 10 10 / 0.3)" stroke-width="1.5"></circle><text x="60" y="100" font-size="13" fill="rgb(10 10 10 / 0.6)" text-anchor="middle">v11</text></g><g opacity="0"><circle cx="200" cy="70" r="9" fill="rgb(10 10 10 / 0.9)" stroke="rgb(105 190 40 / 0.95)" stroke-width="2"></circle><rect x="168" y="26" width="64" height="24" rx="12" fill="rgb(105 190 40 / 0.12)" stroke="rgb(105 190 40 / 0.95)" stroke-width="1"></rect><text x="200" y="42.5" font-size="12.5" letter-spacing="1.5" fill="#3f7a19" text-anchor="middle">LIVE</text><text x="200" y="100" font-size="13" fill="rgb(10 10 10 / 0.78)" text-anchor="middle">v12</text></g><g opacity="0"><circle cx="360" cy="70" r="9" fill="rgb(10 10 10 / 0.9)" stroke="rgb(240 171 0 / 0.95)" stroke-width="2" stroke-dasharray="3 2.5"></circle><rect x="322" y="26" width="76" height="24" rx="12" fill="rgb(240 171 0 / 0.1)" stroke="rgb(240 171 0 / 0.95)" stroke-width="1" stroke-dasharray="3 2.5"></rect><text x="360" y="42.5" font-size="12.5" letter-spacing="1.5" fill="#9a6a00" text-anchor="middle">DRAFT</text><text x="360" y="100" font-size="13" fill="rgb(10 10 10 / 0.78)" text-anchor="middle">v13</text></g><path d="M375,70 H420" stroke="rgb(10 10 10 / 0.4)" stroke-width="2" fill="none" marker-end="url(#vr-arrow)" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></path><g opacity="0"><rect x="424" y="50" width="152" height="40" fill="#ffffff" stroke="rgb(10 10 10 / 0.22)" stroke-width="1"></rect><text x="438" y="67" font-size="12" fill="rgb(10 10 10 / 0.82)">Dry-run on live data</text><text x="438" y="82" font-size="10.5" fill="rgb(10 10 10 / 0.58)">write tools stubbed</text><text x="558" y="75" font-size="14" fill="#3f7a19">â</text></g><path d="M576,70 H592" stroke="rgb(10 10 10 / 0.4)" stroke-width="2" fill="none" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></path><g opacity="0"><rect x="596" y="50" width="120" height="40" fill="#ffffff" stroke="rgb(10 10 10 / 0.22)" stroke-width="1"></rect><text x="610" y="67" font-size="12" fill="rgb(10 10 10 / 0.82)">Evals 24 / 24</text><text x="610" y="82" font-size="10.5" fill="rgb(10 10 10 / 0.58)">against datasets</text><text x="698" y="75" font-size="14" fill="#3f7a19">â</text></g><path d="M650,50 V24 H388" stroke="rgb(105 190 40 / 0.95)" stroke-width="1.5" fill="none" marker-end="url(#vr-arrow)" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></path><text x="508" y="16" font-size="12" letter-spacing="2" fill="#3f7a19" text-anchor="middle" opacity="0">PROMOTE â ONE CLICK</text><path d="M352,84 C320,130 240,130 209,84" stroke="rgb(240 171 0 / 0.95)" stroke-width="1.5" stroke-dasharray="0 1" fill="none" marker-end="url(#vr-arrow-gold)" opacity="0" pathLength="1" stroke-dashoffset="0"></path><text x="281" y="141" font-size="12" letter-spacing="2" fill="#9a6a00" text-anchor="middle" opacity="0">INSTANT ROLLBACK</text><text x="380" y="177" font-size="13.5" fill="rgb(10 10 10 / 0.58)" text-anchor="middle" opacity="0">One live version at a time â every save is a version you can return to.</text></svg></div></div></div></div><ol class="mt-14 grid grid-cols-1 gap-x-10 gap-y-10 sm:grid-cols-2 lg:grid-cols-3"><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Confidence gates</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Required Confidence Level per agent step â MED â¥60%, HIGH â¥85%. Below the bar the step is logged as confidence-not-met and fires its error Action: a human task, a fallback, or a stop. Pair it with a structured-output schema and a Code or Switch validation step so a deterministic check, not the modelâs own score, gates the post.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Error Actions</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Configure a dedicated Action to fire on failure. Recovery logic stays out of the happy path.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Versioning, end to end</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Actions, Agent Roles, and Tools each carry their own auto-versioned history. One live version at a time; pin a step to a specific version when you need repeatable production behavior.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Promote and roll back</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Make a draft live with one click. Roll back to any prior version instantly when something goes sideways.<
46/p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Dry-run on live data</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Execute the draft against real data with write tools stubbed, and see results before they commit.</p></li><li class="" style="opacity:0;transform:translateY(16px)"><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Sandboxed code</h3><p class="mt-2 text-sm leading-relaxed text-dooap-grey-dark">Custom Code steps run with strict resource and throttling limits. No surprise side-effects.</p></li></ol><div class="mx-auto mt-12 max-w-3xl" style="opacity:0;transform:translateY(16px)"><div class="iso-stage "><div class="iso-tile iso-tile--hover " style="--iso-rz:-42deg"><div class="iso-tile__shadow" aria-hidden="true"></div><div class="iso-tile__edge" aria-hidden="true"></div><div class="iso-tile__face "><video autoPlay="" muted="" loop="" playsInline="" preload="metadata" poster="/media/evals-run-poster.jpg"><source src="/media/evals-run.mp4" type="video/mp4"/></video></div></div></div><p class="-mt-2 text-center text-sm text-dooap-grey-dark">Recorded live: a draft replayed against a test dataset of captured runs â three cases, field-level pass criteria, 100% before promotion.</p></div></div></section><section id="human-tasks" class="scroll-mt-24 border-y border-black/[0.07] bg-white py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="grid gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center"><div class="" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Human in the loop</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">When AI canât decide alone, it asks a human.</h2><p class="mt-6 max-w-xl text-base text-pretty text-dooap-grey-dark">When a step lands below its confidence gate â or fails a validation check â the run pauses and the agent drafts a focused task for the right person: a colleague in Dooap Studio, or a vendor outside it via email and a one-time code. It cannot continue until the answer lands. It works the other way too: a human can kick off an Action through an agent-authored form.</p><ol class="mt-10 space-y-8"><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Agent â human</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">The form is generated for this case: the exact field that matters, helper text, the document context, and validation. Not a template from a library.</p></li><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Human â agent</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">People initiate Actions through agent-authored UIs; their answers arrive as structured inputs, and the agent validates and follows up live.</p></li><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Anyone, anywhere</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Dooap Studio users see their tasks in a Human Tasks tab. Outsiders get an email link with a one-time code, no account needed. Same audit trail either way.</p></li></ol></div><div class="" style="opacity:0;transform:translateY(16px)"><div class="iso-stage "><div class="iso-tile iso-tile--hover " style="--iso-rz:-42deg"><div class="iso-tile__shadow" aria-hidden="true"></div><div class="iso-tile__edge" aria-hidden="true"></div><div class="iso-tile__face "><button type="button" aria-label="Play video" class="group relative block w-full cursor-pointer"><img src="/media/human-tasks-poster.jpg" alt="A human task drafted by the agent, awaiting a person's answer" loading="lazy" class="block w-full"/><span class="pointer-events-none absolute inset-0 flex items-center justify-center"><span class="flex h-16 w-16 items-center justify-center rounded-full bg-white/90 shadow-lg ring-1 ring-black/10 transition-transform duration-300 group-hover:scale-110"><svg viewBox="0 0 24 24" aria-hidden="true" class="ml-1 h-7 w-7 fill-dooap-ink"><path d="M8 5v14l11-7z"></path></svg></span></span></button></div></div></div><p class="-mt-2 text-center text-sm text-dooap-grey-dark">Click to play the walkthrough â this clip has sound</p></div></div></div></section><section class="border-t border-black/[0.07] bg-dooap-grey-light py-16 sm:py-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div class="grid gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center"><div class="order-last lg:order-first" style="opacity:0;transform:translateY(16px)"><div class="iso-stage "><div class="iso-tile iso-tile--hover " style="--iso-rz:-42deg"><div class="iso-tile__shadow" aria-hidden="true"></div><div class="iso-tile__edge" aria-hidden="true"></div><div class="iso-tile__face ">
46<video autoPlay="" muted="" loop="" playsInline="" preload="metadata" poster="/media/execution-drilldown-poster.jpg"><source src="/media/execution-drilldown.mp4" type="video/mp4"/></video></div></div></div><p class="-mt-2 text-center text-sm text-dooap-grey-dark">A real execution, opened: resolved prompt, inputs, tool calls, confidence, step by step.</p></div><div class="" style="opacity:0;transform:translateY(16px)"><p class="text-[15px] font-semibold uppercase text-dooap-violet [text-indent:2.5px]">Observability & evaluation</p><h2 class="mt-6 font-display text-3xl font-bold tracking-tight text-balance text-dooap-ink sm:text-4xl">See everything that ran. Improve what you saw.</h2><ol class="mt-10 space-y-8"><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Live Trigger Stream</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">A searchable feed of incoming triggers (source, context label, payload size, status), so you know what fired and where it went.</p></li><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Per-run inspection</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">For every execution: the resolved prompt, inputs, reasoning, confidence, token usage, every tool call with its parameters and result, plus full provenance through chained Actions.</p></li><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Searchable metadata</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Metadata steps promote values into execution metadata so you can filter runs by invoice number, vendor, or any identifier you care about.</p></li><li><h3 class="font-display text-xl font-semibold text-dooap-ink sm:text-2xl">Evaluations & datasets</h3><p class="mt-2 text-base leading-relaxed text-dooap-grey-dark">Promote real executions into reusable test cases. Run datasets to validate a prompt, tool, or model change before promotion.</p></li></ol></div></div></div></section><section class="bg-dooap-ink"><div class="mx-auto max-w-5xl px-4 py-24 text-center sm:px-6 lg:px-8"><div class="" style="opacity:0;transform:translateY(16px)"><h2 class="font-display text-3xl font-bold tracking-tight text-balance text-white sm:text-4xl">Want a tour of the platform?</h2><p class="mx-auto mt-4 max-w-2xl text-lg text-white/70">Weâll show it on your own scenarios.</p><div class="mt-8 flex flex-wrap items-center justify-center gap-4"><a class="inline-flex items-center bg-white px-6 py-3 text-sm font-semibold text-dooap-ink transition-colors hover:bg-dooap-fog" href="/contact" data-discover="true">Book a demo</a><a class="inline-flex items-center border border-white/40 px-6 py-3 text-sm font-semibold text-white transition-colors hover:border-white" href="/how-it-works" data-discover="true">See how it works</a></div></div></div></section></main><footer class="border-t border-white/10 bg-dooap-ink text-white"><div class="mx-auto grid max-w-7xl gap-10 px-4 py-12 sm:px-6 lg:grid-cols-4 lg:px-8"><div class="lg:col-span-1"><span class="inline-flex items-end gap-1.5 font-display font-bold tracking-tight text-white "><img src="/dooap_studio.svg" alt="Dooap Studio" class="h-7 w-auto -translate-y-px"/></span><p class="mt-4 max-w-xs text-sm text-white/75">The AI safety and trust layer for financial processes. Powerful automation that stays gated, logged, and reversible.</p></div><div><h3 class="text-sm font-semibold tracking-[0.1em] text-white uppercase">Product</h3><ul class="mt-4 space-y-2 text-sm"><li><a class="text-white/80 hover:text-white" href="/features" data-discover="true">Platform</a></li><li><a class="text-white/80 hover:text-white" href="/shepherd" data-discover="true">Dooap Shepherd</a></li><li><a class="text-white/80 hover:text-white" href="/features#human-tasks" data-discover="true">Human in the loop</a></li><li><a class="text-white/80 hover:text-white" href="/how-it-works" data-discover="true">How it works</a></li><li><a class="text-white/80 hover:text-white" href="/use-cases" data-discover="true">Use cases</a></li><li><a class="text-white/80 hover:text-white" href="/why" data-discover="true">Why Dooap Studio</a></li></ul></div><div><h3 class="text-sm font-semibold tracking-[0.1em] text-white uppercase">Resources</h3><ul class="mt-4 space-y-2 text-sm"><li><a class="text-white/80 hover:text-white" href="/docs" data-discover="true">Documentation</a></li><li><a class="text-white/80 hover:text-white" href="/resources" data-discover="true">Articles & guides</a></li><li><a class="text-white/80 hover:text-white" href="/whats-new" data-discover="true">What's new</a></li><li><a class="text-white/80 hover:text-white" href="/docs/build-first-action" data-discover="true">Build your first Action</a></li><li><a class="text-white/80 hover:text-white" href="/docs/dooap-shepherd" data-discover="true">
46Dooap Shepherd guide</a></li></ul></div><div><h3 class="text-sm font-semibold tracking-[0.1em] text-white uppercase">Company</h3><ul class="mt-4 space-y-2 text-sm"><li><a class="text-white/80 hover:text-white" href="/about" data-discover="true">About us</a></li><li><a class="text-white/80 hover:text-white" href="/contact" data-discover="true">Contact</a></li><li><a class="text-white/80 hover:text-white" href="/security" data-discover="true">Security & compliance</a></li><li><a href="https://www.dooap.com/privacy-policy" target="_blank" rel="noreferrer" class="text-white/80 hover:text-white">Privacy Policy</a></li><li><a href="https://www.dooap.com" target="_blank" rel="noreferrer" class="text-white/80 hover:text-white">Dooap.com</a></li></ul></div></div><div class="border-t border-white/10 bg-black/40"><div class="mx-auto flex max-w-7xl flex-col items-start justify-between gap-4 px-4 py-6 text-sm text-white/70 sm:flex-row sm:items-center sm:px-6 lg:px-8"><p>(c) <!-- -->2026<!-- --> Dooap. All rights reserved.</p><div class="flex items-center gap-4"><a href="https://www.linkedin.com/company/dooap" aria-label="LinkedIn" class="hover:text-white"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a><a href="https://x.com/DooapAX" aria-label="X / Twitter" class="hover:text-white"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg></a><a href="https://www.youtube.com/@dooap" aria-label="YouTube" class="hover:text-white"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg></a></div></div></div></footer></div></div> 47 </body> 48</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.