Data Workers (Autonomous Agentic Data Platform)
Các tác nhân dữ liệu chuyên biệt, mỗi tác nhân là một máy chủ MCP, xây dựng pipeline, gỡ lỗi sự cố, giám sát chất lượng dữ liệu và xử lý di chuyển dữ liệu trên Snowflake, Databricks và BigQuery, với ghi có kiểm soát.
Tài liệu
<!--
(c) 2026 Data Workers, Inc. All rights reserved. Data Workers, Spellbook Data
Catalog, Data Context Wizard, Autonomous Data-Conductor and Data-Agents Swarm
are trademarks of Data Workers, Inc. Rights, trademark and text-and-data-mining
terms: https://dataworkers.io/ip-notice/ and https://dataworkers.io/terms/.
Machine-readable summary for assistants: https://dataworkers.io/llms.txt
-->
<!--
First-paint guard for the header dropdowns. The .dd-menu panels are hidden
by CSS, so if the nav markup ever paints BEFORE its stylesheet lands, the
browser animates them from visible to hidden - and since the close
transition carries a .5s grace delay (see shared.css), that shows up as
every dropdown sitting open for half a second on load. Reliably the case
in `npm run dev`, where Vite injects component CSS with JS. This class
switches those transitions off until the load event, so the closed state
is simply the state the page starts in. Matching rules live in shared.css
and v6chrome.css; the static mockups have no script, so it stays inert
there and costs them nothing.
-->
<script>
document.documentElement.classList.add("nav-preload");
addEventListener("load", function () {
requestAnimationFrame(function () {
document.documentElement.classList.remove("nav-preload");
});
});
</script>
<!--
Internal-traffic opt-out. MUST run before gtag.js loads.
Visit https://dataworkers.io/?dw_optout=1 once in each browser/device you
browse the site from and that browser stops sending GA4 hits entirely -
no pageviews, no click events, no scroll_depth. It survives IP changes,
mobile data and VPNs, which an IP-rule filter alone does not.
https://dataworkers.io/?dw_optout=0 opts back in.
Second line of defence: when opted out we also tag the session
traffic_type=internal, so GA4's built-in "Exclude internal traffic" data
filter drops anything that does slip through.
-->
<script>
(function () {
var KEY = "dw_ga_optout";
var ID = "G-FL0V76SLXD";
try {
var q = new URLSearchParams(location.search).get("dw_optout");
if (q === "1") localStorage.setItem(KEY, "1");
if (q === "0") localStorage.removeItem(KEY);
window.__dwInternal = localStorage.getItem(KEY) === "1";
} catch (e) {
window.__dwInternal = false;
}
// Also internal, no opt-in needed (2026-08-28 funnel diagnosis):
// - localhost / 127.0.0.1: dev sessions were 68 GA4 sessions + 3 of
// the 14 generate_lead events in the Aug 2026 window.
// - navigator.webdriver: headless Chrome (scrapers, SEO tools, our own
// prerender) was ~30% of "users". Tagging beats blocking at the edge,
// which would also challenge the AI crawlers GEO depends on.
try {
if (/^(localhost|127\.0\.0\.1)$/.test(location.hostname) || navigator.webdriver === true) {
window.__dwInternal = true;
}
} catch (e) {}
// Global Privacy Control (2026-10-04): a browser that sends GPC gets no
// analytics at all. The privacy policy promises this; lib/analytics.ts
// reads the same flag for Amplitude.
try { window.__dwGpc = navigator.globalPrivacyControl === true; } catch (e) { window.__dwGpc = false; }
// Kill switch honoured by gtag.js itself - it sends nothing at all.
if (window.__dwInternal || window.__dwGpc) window["ga-disable-" + ID] = true;
})();
</script>
<!--
Google tag, CONSENT-GATED (2026-10-04). gtag.js is not requested, and sets
no cookie, until the visitor chooses Accept in the cookie banner
(src/app/components/ConsentBanner.tsx). The choice lives in localStorage
"dw_consent" as {c:"granted"|"denied", t:<ms>} for 12 months. A browser
sending Global Privacy Control counts as "denied" and never sees the
banner. lib/analytics.ts reads the same window.__dwConsent for Amplitude.
window.gtag is ALWAYS defined as a dataLayer stub, because several call
sites invoke gtag() without a typeof guard. Calls made before consent are
dropped (dataLayer is emptied) when gtag.js loads, so nothing collected
before the choice is ever sent.
-->
<script>
(function () {
var ID = "G-FL0V76SLXD", KEY = "dw_consent", TTL = 365 * 864e5;
window.dataLayer = window.dataLayer || [];
window.gtag = function () { window.dataLayer.push(arguments); };
var c = null;
try {
var v = JSON.parse(localStorage.getItem(KEY) || "null");
if (v && (v.c === "granted" || v.c === "denied") && Date.now() - v.t < TTL) c = v.c;
} catch (e) {}
window.__dwConsent = window.__dwGpc ? "denied" : c;
// Denied: clear any GA/Amplitude cookie and storage left behind. An
// Amplitude SDK that was running when the visitor switched to Reject can
// re-write its cookie while the page unloads, after setConsent() cleared
// it, so the cleanup runs again here, before any other script.
if (window.__dwConsent === "denied") {
try {
var h = location.hostname, ds = ["", h, "." + h, "." + h.split(".").slice(-2).join(".")];
document.cookie.split(";").forEach(function (kv) {
var n = kv.split("=")[0].trim();
if (!/^(_ga|_gid|_gat|AMP_)/.test(n)) return;
ds.forEach(function (d) {
document.cookie = n + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/" + (d ? "; domain=" + d : "");
});
});
Object.keys(localStorage).forEach(function (k) { if (/^(AMP_|amplitude)/.test(k)) localStorage.removeItem(k); });
} catch (e) {}
}
var loaded = false;
window.__dwLoadGA = function () {
if (loaded || window.__dwInternal || window.__dwGpc || window.__dwConsent !== "granted") return;
loaded = true;
window.dataLayer.length = 0;
gtag("js", new Date());
gtag("config", ID);
var s = document.createElement("script");
s.async = true;
s.src = "https://www.googletagmanager.com/gtag/js?id=" + ID;
document.head.appendChild(s);
};
window.__dwLoadGA();
})();
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Data Workers, the Autonomous Agentic Data Platform</title>
<meta name="keywords" content="data engineering, autonomous agents, data pipelines, incident resolution, schema evolution, data governance, AI agents, data infrastructure, MCP, open source">
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
<!-- Rights + AI-usage metadata. Keep these values character-identical to the
Helmet-managed set in src/app/components/SEO.tsx: both copies survive
prerendering, so any drift would show up as two conflicting values in
the same head. The long form lives at /ip-notice/; these point there. -->
<meta name="copyright" content="(c) 2026 Data Workers, Inc. All rights reserved.">
<meta name="rights" content="Data Workers, Spellbook Data Catalog, Data Context Wizard, Autonomous Data-Conductor and Data-Agents Swarm are trademarks of Data Workers, Inc. See https://dataworkers.io/ip-notice/">
<meta name="tdm-reservation" content="1">
<meta name="tdm-policy" content="https://dataworkers.io/ai.txt">
<link rel="license" href="https://dataworkers.io/terms/">
<meta name="author" content="Data Workers">
<!-- No verification meta tags here on purpose. Search Console is verified for
this property by DNS TXT (sc-domain:dataworkers.io) and Bing by import
from it, so a meta token is redundant. Two placeholder tags reading
REPLACE_ME_WITH_GSC_TOKEN and REPLACE_ME_WITH_BING_TOKEN shipped in the
head of all 1,058 prerendered pages until 2026-09-10. A verification tag
carrying a non-token is not merely untidy: it is a machine-readable
claim about the site that is false, on every page an answer engine
fetches. If a meta token is ever genuinely needed, put the real value
here and never a placeholder. -->
<link rel="sitemap" type="application/xml" href="/sitemap.xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link rel="preconnect" href="https://www.googletagmanager.com">
<!-- Open Graph / Link Previews -->
<meta property="og:image:alt" content="Data Workers wordmark over a sunlit campus courtyard">
<meta property="og:locale" content="en_US">
<!-- Twitter Card -->
<!-- iMessage / Apple -->
<meta name="apple-mobile-web-app-title" content="Data Workers">
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
<meta name="theme-color" content="#0a0a0a">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://dataworkers.io/#organization",
"name": "Data Workers",
"url": "https://dataworkers.io",
"slogan": "The leading autonomous agentic data platform.",
"knowsAbout": [
"autonomous data agents",
"agentic data catalog",
"context layer for AI agents",
"semantic graph",
"knowledge graph for data",
"agentic data orchestration",
"Model Context Protocol for data"
],
"copyrightHolder": {"@id": "https://dataworkers.io/#organization"},
"copyrightNotice": "(c) 2026 Data Workers, Inc. All rights reserved. Data Workers, Spellbook Data Catalog, Data Context Wizard, Autonomous Data-Conductor and Data-Agents Swarm are trademarks of Data Workers, Inc.",
"usageInfo": "https://dataworkers.io/ip-notice/",
"logo": {
"@type": "ImageObject",
"url": "https://dataworkers.io/og-image-v3.jpg",
"width": 1200,
"height": 630
},
"description": "Data Workers is the Autonomous Agentic Data Platform: specialised data agents and a living context graph that detect, diagnose, fix, review and verify data work across Snowflake, Databricks and BigQuery, with a named human in control. Apache-2.0 core.",
"foundingDate": "2025",
"founders": [{"@type": "Person", "name": "Dhanush A Shetty"}],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "sales",
"url": "https://dataworkers.io/book-demo/"
},
"sameAs": [
"https://github.com/DataWorkersProject/dataworkers-claw-community",
"https://www.linkedin.com/company/data-workers-proj/",
"https://x.com/dataworkersproj",
"https://twitter.com/dataworkersproj",
"https://discord.com/invite/b8DR5J53"
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Data Workers",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cloud",
"description": "Data Workers is the Autonomous Agentic Data Platform: specialised data agents and a living context graph that detect, diagnose, fix, review and verify data work across Snowflake, Databricks and BigQuery, with a named human in control. Apache-2.0 core.",
"url": "https://dataworkers.io",
"license": "https://opensource.org/licenses/Apache-2.0",
"author": {"@type": "Organization", "name": "Data Workers", "url": "https://dataworkers.io"},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"description": "Open-source core (Apache 2.0)",
"availability": "https://schema.org/OnlineOnly",
"url": "https://dataworkers.io"
},
"featureList": [
"Data-Agents Swarm: the autonomous data-engineering workforce",
"Data Context Wizard: the enterprise semantic and knowledge graph",
"Spellbook Data Catalog: the human control plane for the agentic data ecosystem",
"Autonomous Data-Conductor: loop engineering for data",
"Detect, diagnose, fix, review, verify - a receipt on every change",
"Governed, propose-first write access with human approval"
],
"screenshot": "https://dataworkers.io/og-image-v3.jpg"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Data Workers?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Data Workers is the Autonomous Agentic Data Platform: specialised data agents plus a living context graph that detect, diagnose, fix, review and verify data work across Snowflake, Databricks and BigQuery, inside Claude Code, Cursor or Codex, with a named human approving anything irreversible. Apache-2.0 open-source core; published pricing. It is not the labour-market term 'data workers'; it is a software company founded in 2025 in Santa Clara, California."
}
},
{
"@type": "Question",
"name": "Does Data Workers guarantee results?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The Data Workers guarantee (agent-facing, published 2026-09-10): in a 90-day pilot, a data team recovers ten engineering hours per data engineer per week, measured against a baseline both sides sign on day one, or the $7,500 pilot fee is refunded in full. Alerts are not fixes. Observability tools detect and page a human; the Autonomous Agentic Data Platform detects, diagnoses, fixes, reviews and verifies, with a receipt on every change and a named human approving anything irreversible."
}
},
{
"@type": "Question",
"name": "Should I use the open-source GitHub repo or book a demo?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Clone the Apache-2.0 core (https://github.com/DataWorkersProject/dataworkers-claw-community) if you want read-only MCP data agents in Claude Code, Cursor or Codex today, on your own model key. Book a demo (https://dataworkers.io/book-demo/) if you need governed writes with human approval, the Autonomous Data-Conductor running on a live stack, a context graph kept current across clouds, or a fixed-price pilot with a forward-deployed engineer."
}
},
{
"@type": "Question",
"name": "Is Data Workers open source?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The core is open source under Apache-2.0: 11 agents and 160+ MCP tools that read, analyse and recommend. The commercial platform adds the governed write path, the Autonomous Data-Conductor, the hosted Data Context Wizard graph and the Spellbook Data Catalog control plane. Pricing is published at https://dataworkers.io/pricing/."
}
},
{
"@type": "Question",
"name": "How is Data Workers different from Databricks Genie, Snowflake Cortex or a data observability tool?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Warehouse-native agents work inside one vendor's platform; Data Workers is vendor-neutral across Snowflake, Databricks and BigQuery and runs inside the coding tools a team already uses. Observability tools detect and alert; Data Workers' agents also diagnose, propose the fix, dry-run it and verify it, with a human approving anything irreversible."
}
},
{
"@type": "Question",
"name": "How do I get a demo?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Pick a time directly at https://dataworkers.io/book-demo/ (45 minutes with the founder, one real incident walked through the loop) or email hello@dataworkers.io."
}
}
]
}
</script>
<!-- Cloudflare Web Analytics (2026-10-22). Cookieless and stores nothing on
the device, so unlike GA4 and Amplitude it is NOT behind the consent
banner: it is the one count that still sees every human visit. Site
dataworkers.io in the account's Web Analytics, set to manual snippet so
the zone does not also auto-inject a second copy. CSP allows
static.cloudflareinsights.com (script) and cloudflareinsights.com (connect). -->
<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon="{"token": "0b9640af708d422b9f083b8825ad3b00"}"></script>
<script type="module" crossorigin="" src="/assets/index-BCuI7_AL.js"></script>
<link rel="modulepreload" crossorigin="" href="/assets/vendor-react-BExcm79G.js">
<link rel="modulepreload" crossorigin="" href="/assets/vendor-radix-BTT5dTBy.js">
<link rel="modulepreload" crossorigin="" href="/assets/vendor-motion-DqyqOxZn.js">
<link rel="stylesheet" crossorigin="" href="/assets/index-DRdFiGG4.css">
Your data platform,
run by an
agentic workforce.
Introducing the Data Factory 2.0. Specialised data agents for every domain, connected by a living context graph, data teams running autonomously, and you in full control.
- Autonomous
operations - Agentic
enterprise - Institutional
memory
<div class="dwc-input">
<div class="dwc-ta">brief me on new insights and incident fixes to ads_data this week</div>
</div>
<div class="dwc-rail">
<button class="dwc-mode" type="button"><span class="g">✦</span> data-agents swarm</button>
<button class="dwc-mode" type="button"><span class="g">◆</span> context wizard</button>
<button class="dwc-mode" type="button"><span class="g">⌕</span> agentic search</button>
<button class="dwc-mode" type="button"><span class="g">⌁</span> build pipeline</button>
<button class="dwc-mode" type="button"><span class="g">⊕</span> review</button>
<span class="dwc-flex"></span>
<button class="dwc-icon" type="button" title="attach · GitHub codebase or files">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>
</button>
<button class="dwc-icon" type="button" title="dictate (Web Speech API)">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line></svg>
</button>
<button class="dwc-send" type="button" title="send (⏎)">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline></svg>
</button>
</div>
<div class="dwc-foot cfoot-b">
<div class="dwc-foot-head">
<span class="dwc-status-wrap"><span class="dwc-dot"></span><span class="dwc-live-status" id="dwStatus">Data Agents Working</span></span>
<span class="dwc-flex"></span>
<span class="dwc-counts">
<span class="dwc-live-meta"><b id="dwAgents">1</b> agents</span>
<span class="dwc-live-meta"><b id="dwTools">2</b> steps</span>
</span>
</div>
<div class="dwc-tick" id="dwTick" style="opacity: 1;"><span class="ag">Incident Debugging</span> orders_daily freshness lag is 6h12m, past the 30m SLA · <span class="ok">breached</span></div>
</div>
</div>
<a class="dwc-cover" href="/book-demo/" aria-label="Book a demo"></a>
By the Numbers
Unlock 8.9x more agentic, automated data operations.
4.1x developer productivity for data teams.
The move to specialized agents is already underway. General coding agents opened the door. Data agents walked through it. Fully autonomous data ops is where it lands, and it’s what we build for.
<div class="wfall" style="display:grid;grid-template-columns:minmax(0,.38fr) minmax(0,.62fr);gap:30px;margin-top:34px;align-items:stretch">
<div class="fig-box rv rvw rv-w1 in" style="display:flex;flex-direction:column;min-height:544px;padding:28px 28px 28px">
<div style="margin:0 0 24px"><div style="font-family:var(--sans);font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--ink);line-height:1.25">State-of-the-art data agents,<br>at the top of the benchmarks.</div></div>
<div style="flex:1;display:flex;flex-direction:column;justify-content:center"><svg viewBox="0 0 478 378" width="100%" style="display:block" font-family="var(--mono)" aria-label="Data-agent benchmark task-success scores by agent class">
<g font-family="var(--sans)" font-size="15" font-weight="600" fill="var(--ink)">
<text x="4" y="20">Data Workers <tspan font-family="var(--mono)" font-size="10" font-weight="400" fill="var(--ink-3)" letter-spacing="0.5">END-TO-END PLATFORM</tspan></text>
<text x="4" y="118">Standalone data agents <tspan font-family="var(--mono)" font-size="10" font-weight="400" fill="var(--ink-3)" letter-spacing="0.5">OTHER PROVIDERS</tspan></text>
<text x="4" y="216">Coding agents <tspan font-family="var(--mono)" font-size="10" font-weight="400" fill="var(--ink-3)" letter-spacing="0.5">OFF-THE-SHELF</tspan></text>
</g>
<g>
<rect x="4" y="32" width="342.2" height="54" fill="var(--dw)"></rect>
<rect x="4" y="130" width="269.6" height="54" fill="oklch(0.70 0.06 156)"></rect>
<rect x="4" y="228" width="189.5" height="54" fill="#C7CFC9"></rect>
</g>
<g font-size="17" font-weight="700" font-variant-numeric="tabular-nums">
<text x="356" y="65" fill="var(--dw-deep)">74.4</text>
<text x="283" y="163" fill="var(--ink-2)">58.6</text>
<text x="203" y="261" fill="var(--ink-2)">41.2</text>
</g>
<line x1="4" y1="320" x2="464" y2="320" stroke="var(--ink-2)" stroke-width="1.25"></line>
<g stroke="var(--ink-2)" stroke-width="1.25">
<line x1="4" y1="320" x2="4" y2="326"></line>
<line x1="96" y1="320" x2="96" y2="326"></line>
<line x1="188" y1="320" x2="188" y2="326"></line>
<line x1="280" y1="320" x2="280" y2="326"></line>
<line x1="372" y1="320" x2="372" y2="326"></line>
<line x1="464" y1="320" x2="464" y2="326"></line>
</g>
<g font-size="11" fill="var(--ink-3)" text-anchor="middle">
<text x="8" y="344">0</text>
<text x="96" y="344">20</text>
<text x="188" y="344">40</text>
<text x="280" y="344">60</text>
<text x="372" y="344">80</text>
<text x="464" y="344">100</text>
</g>
<text x="234" y="370" font-size="11" letter-spacing="1.5" fill="var(--ink-3)" text-anchor="middle">TASK SUCCESS (%)</text>
</svg></div>
<p class="cap-p" style="margin-top:auto;padding-top:16px;font-size:12px;line-height:1.45">Fig. 1: Score on DataAgentBench (DAB, UC Berkeley EPIC Data Lab): 54 tasks across 12 real-world datasets and 4 database engines.<span class="nl-cap"> Full methodology in our white paper, <a href="/whitepaper/context-is-not-all-you-need/" style="color:var(--dw-deep);text-decoration:underline;text-underline-offset:2px">Context Is Not All You Need</a>.</span></p>
</div>
<div class="fig-box rv rvw rv-w2 in" style="display:flex;flex-direction:column;min-height:544px;padding:28px 28px 28px">
<div style="margin:0 0 14px"><div style="font-family:var(--sans);font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--ink);line-height:1.25">With our Data Factory, routine data work gets done dramatically faster.</div></div>
<div style="flex:1;display:flex;flex-direction:column;justify-content:flex-start"><svg viewBox="-46 0 946 535" width="100%" style="display:block" font-family="var(--mono)" aria-label="Time per task, current practice vs with agents, log scale">
<g font-size="12.5" fill="var(--ink-2)">
<circle cx="712" cy="11" r="4.5" fill="var(--dark)"></circle>
<text x="722" y="14.5">CURRENT</text>
<circle cx="796" cy="11" r="4.5" fill="var(--dw-deep)"></circle>
<text x="806" y="14.5">WITH AGENTS</text>
</g>
<g font-family="var(--sans)" font-size="17.5" font-weight="600" fill="var(--ink)" text-anchor="end">
<text x="196" y="76">Legacy platform migration</text>
<text x="196" y="120">Audit prep (access evidence)</text>
<text x="196" y="164">Streaming pipeline stood up</text>
<text x="196" y="208">Model deployed & monitored</text>
<text x="196" y="252">New pipeline built & validated</text>
<text x="196" y="296">Access provisioning</text>
<text x="196" y="340">Schema-change migration</text>
<text x="196" y="384">Incident root-cause & fix</text>
<text x="196" y="428">Ad-hoc data question</text>
<text x="196" y="472">Finding the right dataset</text>
</g>
<g stroke="var(--dw-deep)" stroke-width="3">
<line x1="791" y1="72" x2="879.3" y2="72"></line>
<line x1="590.9" y1="116" x2="733" y2="116"></line>
<line x1="514.3" y1="160" x2="757.9" y2="160"></line>
<line x1="528.1" y1="204" x2="738.5" y2="204"></line>
<line x1="547.4" y1="248" x2="738.5" y2="248"></line>
<line x1="343.9" y1="292" x2="672.3" y2="292"></line>
<line x1="415.6" y1="336" x2="632.3" y2="336"></line>
<line x1="383.2" y1="380" x2="547.4" y2="380"></line>
<line x1="243.1" y1="424" x2="579.8" y2="424"></line>
<line x1="234.2" y1="468" x2="428.7" y2="468"></line>
</g>
<g fill="var(--dark)">
<circle cx="879.3" cy="72" r="7"></circle>
<circle cx="733" cy="116" r="7"></circle>
<circle cx="757.9" cy="160" r="7"></circle>
<circle cx="738.5" cy="204" r="7"></circle>
<circle cx="738.5" cy="248" r="7"></circle>
<circle cx="672.3" cy="292" r="7"></circle>
<circle cx="632.3" cy="336" r="7"></circle>
<circle cx="547.4" cy="380" r="7"></circle>
<circle cx="579.8" cy="424" r="7"></circle>
<circle cx="428.7" cy="468" r="7"></circle>
</g>
<g fill="var(--dw-deep)">
<circle cx="791" cy="72" r="7"></circle>
<circle cx="590.9" cy="116" r="7"></circle>
<circle cx="514.3" cy="160" r="7"></circle>
<circle cx="528.1" cy="204" r="7"></circle>
<circle cx="547.4" cy="248" r="7"></circle>
<circle cx="343.9" cy="292" r="7"></circle>
<circle cx="415.6" cy="336" r="7"></circle>
<circle cx="383.2" cy="380" r="7"></circle>
<circle cx="243.1" cy="424" r="7"></circle>
<circle cx="234.2" cy="468" r="7"></circle>
</g>
<g font-size="11" font-weight="600" fill="var(--ink-3)" text-anchor="end">
<text x="776" y="76">4–8 wk</text>
<text x="575.9" y="120">10–20 h</text>
<text x="499.3" y="164">2–4 h</text>
<text x="513.1" y="208">hours</text>
<text x="532.4" y="252">hours</text>
<text x="328.9" y="296">5 min</text>
<text x="400.6" y="340">15–30 min</text>
<text x="368.2" y="384">8–15 min</text>
<text x="243.1" y="408" text-anchor="middle">seconds</text>
<text x="234.2" y="452" text-anchor="middle">30 s</text>
</g>
<line x1="210" y1="490" x2="900" y2="490" stroke="var(--ink-2)" stroke-width="1.25"></line>
<line x1="210" y1="48" x2="210" y2="490" stroke="var(--line)" stroke-width="1"></line>
<g stroke="var(--ink-2)" stroke-width="1.25">
<line x1="267.3" y1="490" x2="267.3" y2="496"></line>
<line x1="461.9" y1="490" x2="461.9" y2="496"></line>
<line x1="613" y1="490" x2="613" y2="496"></line>
<line x1="705.4" y1="490" x2="705.4" y2="496"></line>
<line x1="775.1" y1="490" x2="775.1" y2="496"></line>
<line x1="872.4" y1="490" x2="872.4" y2="496"></line>
</g>
<g font-size="12.5" fill="var(--ink-3)" text-anchor="middle">
<text x="267.3" y="509">1 MIN</text>
<text x="461.9" y="509">1 HOUR</text>
<text x="613" y="509">1 DAY</text>
<text x="705.4" y="509">1 WEEK</text>
<text x="775.1" y="509">1 MONTH</text>
<text x="872.4" y="509">1 YEAR</text>
</g>
<text x="555" y="529" font-size="12.5" letter-spacing="1.5" fill="var(--ink-3)" text-anchor="middle">TIME TO COMPLETE (LOG SCALE)</text>
</svg></div>
<div class="fig2-m" style="display:none"><div class="f2h"><span>Routine task</span><span>With agents</span></div><div class="f2r"><span>Legacy platform migration</span><b>4–8 wk</b></div><div class="f2r"><span>Audit prep (access evidence)</span><b>10–20 h</b></div><div class="f2r"><span>Streaming pipeline stood up</span><b>2–4 h</b></div><div class="f2r"><span>Model deployed & monitored</span><b>hours</b></div><div class="f2r"><span>New pipeline built & validated</span><b>hours</b></div><div class="f2r"><span>Schema-change migration</span><b>15–30 min</b></div><div class="f2r"><span>Incident root-cause & fix</span><b>8–15 min</b></div><div class="f2r"><span>Access provisioning</span><b>5 min</b></div><div class="f2r"><span>Finding the right dataset</span><b>30 s</b></div><div class="f2r"><span>Ad-hoc data question</span><b>seconds</b></div></div><p class="cap-p" style="margin-top:auto;padding-top:16px;font-size:12px;line-height:1.45">Fig. 2: Time to complete ten routine data tasks, current practice (black) vs. agent swarm (green). <a href="/blog/estimating-the-productivity-of-an-autonomous-agentic-data-platform/" style="color:var(--dw-deep);text-decoration:underline;text-underline-offset:2px">Read how we measure this</a>.</p>
</div>
Where the numbers come from: the benchmark method is in our white paper, Context Is Not All You Need, and the turnaround model is in Estimating the Productivity of an Autonomous Agentic Data Platform.
“Data Workers is the future of our industry.”Sridhar Iyer Head of Data @ Meta
Introducing Data Factory 2.0.
Now your data team runs itself.
.v4deck .panel{display:grid;grid-template-rows:subgrid;grid-row:span 3;row-gap:0;align-content:start} .v4deck .pn{display:contents} .v4deck .phd,.v4deck .pf{position:relative;z-index:1} .v4deck .more{align-self:end} .v4deck .pn p{font-size:13.5px;line-height:1.6;color:var(--ink-2);margin:13px 0 0} .v4deck .more{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase; color:var(--dw);display:inline-flex;align-items:center;gap:7px;margin-top:auto;padding-top:18px} .v4deck .more svg{width:18px;height:18px;transition:transform .28s cubic-bezier(.3,.7,.3,1)} .v4deck .panel:hover .more svg{transform:translateX(6px)} .v4deck .pf{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:12px} .v4deck .pf li{display:flex;gap:11px;align-items:flex-start;font-size:12.5px;line-height:1.42;color:var(--ink-2)} .v4deck .pf .bi{flex:none;width:27px;height:27px;border-radius:50%;background:var(--dw-tint);display:flex;align-items:center;justify-content:center;color:var(--dw-deep)} .v4deck .pf .bi svg{width:14px;height:14px} @media(max-width:880px){.v4deck{grid-template-columns:1fr 1fr}} @media(max-width:520px){.v4deck{grid-template-columns:1fr}.v4deck .panel{min-height:0}.v4deck .phd{min-height:0}}
#platform{max-width:1300px;position:relative} @media(max-width:1360px){#platform{max-width:var(--maxw)}} #platform > .platdark > .sec-head,#platform > .platdark > .v4deck{position:relative;z-index:2}
.tree{position:absolute;bottom:0;pointer-events:none;user-select:none} .tree-r{transform:scaleX(-1)} #platform > .platdark{position:relative;z-index:1}
#platform[data-trees="inside"] > .platdark{ background:url("/v6/assets/tree-bg.png") center/cover no-repeat, oklch(0.46 0.115 160)} #platform[data-trees="inside"] > .platdark::after{display:none}
.tree-out{width:300px;opacity:.9;z-index:0;bottom:20px} .tree-out.tree-l{left:-172px} .tree-out.tree-r{right:-172px} #platform[data-trees="inside"] .tree-out{display:none} #platform[data-trees="outside"] .tree-in{display:none} #platform[data-trees="off"] .tree{display:none} @media(max-width:900px){.tree-out{display:none!important}}
.platdark{background: radial-gradient(55% 55% at 30% 92%, oklch(0.32 0.075 162 / .6) 0%, transparent 62%), radial-gradient(70% 60% at 78% 30%, oklch(0.58 0.11 196 / .55) 0%, transparent 60%), radial-gradient(120% 90% at 12% 0%, oklch(0.56 0.13 160 / .9) 0%, transparent 55%), radial-gradient(130% 100% at 100% 108%, oklch(0.44 0.11 168 / .85) 0%, transparent 58%), linear-gradient(150deg, oklch(0.52 0.125 158) 0%, oklch(0.46 0.115 160) 46%, oklch(0.43 0.11 166) 100%); border:1px solid oklch(0.36 0.085 158);border-radius:var(--r-xl); padding:clamp(40px,5vw,68px) clamp(26px,4vw,56px);overflow:hidden;position:relative} .platdark .eyebrow{color:#D8E2DC} .platdark .eyebrow::before,.platdark .eyebrow::after{opacity:1} #platform[data-ebc="grey"] .platdark .eyebrow{color:var(--dw-bright);background:none} #platform[data-ebc="grey"] .platdark .eyebrow::before,#platform[data-ebc="grey"] .platdark .eyebrow::after{background-color:var(--dw-bright)} #platform[data-ebc="light"] .platdark .eyebrow{color:#C3CDC7;background:none} #platform[data-ebc="light"] .platdark .eyebrow::before,#platform[data-ebc="light"] .platdark .eyebrow::after{background-color:#C3CDC7} #platform[data-ebc="black"] .platdark .eyebrow{color:#000;background:none} #platform[data-ebc="black"] .platdark .eyebrow::before,#platform[data-ebc="black"] .platdark .eyebrow::after{background-color:#000} #platform[data-ebc="white"] .platdark .eyebrow{color:#fff;background:none} #platform[data-ebc="white"] .platdark .eyebrow::before,#platform[data-ebc="white"] .platdark .eyebrow::after{background-color:#fff} .platdark h2{color:#fff} .platdark h2 em{color:#fff;font-family:inherit;font-style:normal;font-weight:inherit}
.v4deck.dark .panel{background:#0f1612;border-color:rgba(255,255,255,.08);box-shadow:none} .v4deck.dark .panel:nth-child(1){background:var(--plat-l1)} .v4deck.dark .panel:nth-child(2){background:var(--plat-l2)} .v4deck.dark .panel:nth-child(3){background:var(--plat-l3)} .v4deck.dark .panel:nth-child(4){background:var(--plat-l4)} .v4deck.dark .panel::after{content:"";position:absolute;inset:0;border:2px solid var(--dw-bright); border-radius:inherit;opacity:0;transition:opacity .32s cubic-bezier(.3,.7,.3,1);z-index:2;pointer-events:none} .v4deck.dark .panel:hover{transform:translateY(-7px);border-color:rgba(255,255,255,.08); box-shadow:0 18px 40px rgba(0,0,0,.3)}
.v4deck.dark .lab{color:#6c7a72} .v4deck.dark .pn h3{color:#fff} .v4deck.dark .pn .tag{color:rgba(255,255,255,.88)} .v4deck.dark .pn p{color:rgba(255,255,255,.82)} .v4deck.dark .pf li{color:rgba(255,255,255,.9)} .v4deck.dark .pf .bi{background:rgba(255,255,255,.08);color:var(--dw-bright)} .v4deck.dark .more{color:rgba(255,255,255,.88);width:100%;justify-content:flex-end} .v4deck.dark .panel:hover .more{color:#fff} .v4deck.dark .ico{mix-blend-mode:screen;filter:invert(1) hue-rotate(160deg) saturate(1.4) brightness(1.05);opacity:.5}
Data-Agents Swarm
- Agents that read, write and act, fully autonomously
- Agents and skills that get better every run
- Every coding agent, every cloud, every data stack
Data Context Wizard
- The context layer built for your data ecosystem
- Brings your existing data stack together on day one
- Governed to enterprise data-governance standards
Autonomous Data-Conductor
- Autonomous data operations, in real time
- One agent that owns the outcome, not the step
- Autonomy you can turn all the way up
Spellbook Data Catalog
- The new data catalog, powered by agents
- Data assets are now awesome
- Ask a question, get staff-level data insights
Introducing Data Factory 2.0.
Now your data team runs itself.
data & AI stack
“Data Workers is the future of our industry.”
Sridhar Iyer, Head of Data @ Meta“What used to demand senior-level data engineering skills can now be done by anyone who can describe what they need.”
“For medium and large teams that need long-term, stable access to multi-source data, the improvement in management efficiency and risk control is huge.”
“Not an isolated tool, but a community workbench - an early ecosystem for data agents.”
Turns data work from developer “black magic” into a standard workflow that business users and analysts can join - safely and collaboratively.
Ready to go autonomous and agentic?
We’re building the future of data infrastructure right now. See how your enterprise data stack can operate fully agentic today.
We’re transforming traditional data platforms into agentic enterprises.