How Dagster’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score35/100
Agent-ready 41.9 × 0.30 = 12.57
API quality 2.6 × 0.20 = 0.52
Openness 43.2 × 0.20 = 8.64
Built-in AI 25.8 × 0.15 = 3.87
Automation 60.5 × 0.15 = 9.07
(12.57 + 0.52 + 8.64 + 3.87 + 9.07) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 34.67 ÷ 1.00 = 34.7
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready41.9/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [probe] https://docs.dagster.io/llms.txt“PROBE llms.txt: HTTP 200 at https://docs.dagster.io/llms.txt # Dagster Docs ## Docs - [Changelog](about/changelog): Review detailed updates on Dagster software features and improv”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals.”
- [claimed-docs] https://docs.dagster.io/guides/automate/sensors“Sensors enable you to take action in response to events that occur either internally within Dagster or in external systems.”
- [claimed-docs] https://docs.dagster.io/deployment/oss/deployment-options/docker“A typical Dagster Docker deployment includes a several long-running containers: one for the webserver, one for the daemon, and one for each code location.”
- [claimed-docs] https://docs.dagster.io/getting-started/installation“uvx create-dagster@latest project my-project”
- [probe] https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration“official CLI documented at https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration”
- [community] https://hn.algolia.com/api/v1/items/24123289“Dagster team response: goals include (1) Local development - seamless end-to-end dev experience from laptop to CI to dev to prod, (2) managing complexity of hundreds of DAGs/thousands of tasks, (3) Testability - separating business logic from environmental concerns to allow mocking resources.”
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Connect an agent via an official MCP serverweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Use an official CLIweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.dagster.io/getting-started/installation“you can scaffold a new project with the create-dagster CLI (recommended)”
- [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitions“You can scaffold Dagster Component definitions in your project from the command line with the dg scaffold defs command”
- [claimed-docs] https://docs.dagster.io/getting-started/installation“uvx create-dagster@latest project my-project”
- [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitions“To see automatically generated documentation for all components in your environment, you can run `dg dev` to start the webserver and navigate to the `Docs` tab for your project's code location”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [probe] https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration“official CLI documented at https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration”
Drive the product through a documented public APIweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitions“You can scaffold Dagster Component definitions in your project from the command line with the dg scaffold defs command”
- [claimed-docs] https://docs.dagster.io“import dagster as dg@dg.assetdef hello(context: dg.AssetExecutionContext): context.log.info("Hello!")@dg.asset(deps=[hello])”
- [probe] https://docs.dagster.io/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.dagster.io/openapi.json, https://docs.dagster.io/swagger.json, https://docs.dagster.io/api/openapi.json, https://docs.dagster.io/.well-known/openapi.json)”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
- [probe] https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration“official CLI documented at https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Build against official SDKsweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
- [claimed-docs] https://docs.dagster.io“import dagster as dg@dg.assetdef hello(context: dg.AssetExecutionContext): context.log.info("Hello!")@dg.asset(deps=[hello])”
Subscribe to events via webhooksweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.dagster.io/guides/automate/sensors“Sensors enable you to take action in response to events that occur either internally within Dagster or in external systems.”
- [claimed-docs] https://docs.dagster.io/guides/monitor/alerts“Dagster+ alerts can notify you of critical events occurring in your deployment so you can catch potential issues early”
- [claimed-docs] https://docs.dagster.io/guides/monitor/alerts“Dagster+ alerts can notify you of critical events occurring in your deployment so you can catch potential issues early, helping you resolve problems before they impact your stakeholders.”
Agent-ready = 88.0 ÷ 210 × 100 = 41.9
API quality2.6/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.dagster.io/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.dagster.io/openapi.json, https://docs.dagster.io/swagger.json, https://docs.dagster.io/api/openapi.json, https://docs.dagster.io/.well-known/openapi.json)”
- [probe] https://docs.dagster.io/llms.txt“PROBE llms.txt: HTTP 200 at https://docs.dagster.io/llms.txt # Dagster Docs ## Docs - [Changelog](about/changelog): Review detailed updates on Dagster software features and improv”
- [claimed-docs] https://docs.dagster.io“import dagster as dg@dg.assetdef hello(context: dg.AssetExecutionContext): context.log.info("Hello!")@dg.asset(deps=[hello])”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.dagster.io/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.dagster.io/openapi.json, https://docs.dagster.io/swagger.json, https://docs.dagster.io/api/openapi.json, https://docs.dagster.io/.well-known/openapi.json)”
- [probe] https://docs.dagster.io/llms.txt“PROBE llms.txt: HTTP 200 at https://docs.dagster.io/llms.txt # Dagster Docs ## Docs - [Changelog](about/changelog): Review detailed updates on Dagster software features and improv”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 3 (quality) × 0.6 (partial) = 1.8 of 10 max
- [community] https://hn.algolia.com/api/v1/items/24123289“Dagster team response: goals include (1) Local development - seamless end-to-end dev experience from laptop to CI to dev to prod, (2) managing complexity of hundreds of DAGs/thousands of tasks, (3) Testability - separating business logic from environmental concerns to allow mocking resources.”
- [claimed-docs] https://docs.dagster.io/guides/test/asset-checks“Ensure a particular column doesn't contain null values * Verify that a tabular asset adheres to a specified schema * Check if an asset's data needs refreshing”
- [claimed-docs] https://docs.dagster.io/guides/test/asset-checks“Asset checks are tests that verify specific properties of your data assets, allowing you to execute data quality checks on your data.”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.dagster.io/about/changelog“Automation condition evaluations now explain history-dependent conditions (since, newly_true, newly_missing) by showing the remembered values that determined them”
- [claimed-docs] https://docs.dagster.io/about/changelog“wiping and deleting dynamic partitions in a single action now also supports multi-partitioned assets that use the dynamic partitions definition as a dimension”
- [claimed-docs] https://docs.dagster.io/about/changelog“In Dagster+, alert policies can now target deployment capacity metrics — queued runs and in-progress runs — evaluated over a rolling window with aggregations such as max.”
- [probe] https://docs.dagster.io/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.dagster.io/openapi.json, https://docs.dagster.io/swagger.json, https://docs.dagster.io/api/openapi.json, https://docs.dagster.io/.well-known/openapi.json)”
API quality = 1.8 ÷ 70 × 100 = 2.6
Openness43.2/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitions“You can scaffold Dagster Component definitions in your project from the command line with the dg scaffold defs command”
- [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitions“you must either create a components-ready Dagster project or migrate an existing project to dg”
- [claimed-docs] https://docs.dagster.io“import dagster as dg@dg.assetdef hello(context: dg.AssetExecutionContext): context.log.info("Hello!")@dg.asset(deps=[hello])”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [probe] https://docs.dagster.io/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.dagster.io/openapi.json, https://docs.dagster.io/swagger.json, https://docs.dagster.io/api/openapi.json, https://docs.dagster.io/.well-known/openapi.json)”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
- [probe] https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration“official CLI documented at https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration”
Export all of my data in open formats and leaveweight 3
3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max
- [claimed-docs] https://docs.dagster.io/guides/build/assets“An asset definition is a description, in code, of an asset that should exist and how to produce and update that asset.”
- [claimed-docs] https://docs.dagster.io/deployment/oss/deployment-options/docker“A typical Dagster Docker deployment includes a several long-running containers: one for the webserver, one for the daemon, and one for each code location.”
- [claimed-docs] https://docs.dagster.io/getting-started/installation“uvx create-dagster@latest project my-project”
- [claimed-docs] https://dagster.io/pricing“Solo Plan $10 per month Personal projects and simple pipelines ... 30-day free trial”
Read the product's source under an open licenseweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/dagster-io/dagster/HEAD/python_modules/dagster/README.md“With Dagster, you declare—as Python functions—the data assets that you want to build. Dagster then helps you run your functions at the right time and keep your assets up-to-date.”
Self-host the core productweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.dagster.io/deployment/oss/deployment-options/docker“A typical Dagster Docker deployment includes a several long-running containers: one for the webserver, one for the daemon, and one for each code location.”
- [community] https://hn.algolia.com/api/v1/items/38610892“I've been working with this stack (Dagster, dbt, DuckDB) for a few months and am super happy with how well everything plays together.”
Openness = 43.2 ÷ 100 × 100 = 43.2
Built-in AI25.8/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals.”
- [claimed-docs] https://docs.dagster.io/guides/automate/sensors“Sensors enable you to take action in response to events that occur either internally within Dagster or in external systems.”
- [claimed-docs] https://docs.dagster.io/guides/automate/declarative-automation“Declarative Automation is a framework that uses information about the status of your assets and their dependencies to launch executions of your assets.”
- [claimed-docs] https://docs.dagster.io/deployment/oss/deployment-options/docker“A typical Dagster Docker deployment includes a several long-running containers: one for the webserver, one for the daemon, and one for each code location.”
- [claimed-docs] https://docs.dagster.io/guides/monitor/alerts“Dagster+ alerts can notify you of critical events occurring in your deployment so you can catch potential issues early”
- [claimed-docs] https://docs.dagster.io/about/changelog“Automation condition evaluations now explain history-dependent conditions (since, newly_true, newly_missing) by showing the remembered values that determined them”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Operate the product with natural-language commandsweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains the `dagster-expert` skill in the dagster-io/skills repository. It provides expert guidance for building production-quality Dagster projects”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
Built-in AI = 23.2 ÷ 90 × 100 = 25.8
Automation60.5/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.dagster.io/integrations/libraries/dbt“Use Dagster's UI or APIs to run subsets of your dbt models, seeds, and snapshots.”
- [claimed-docs] https://docs.dagster.io/about/changelog“wiping and deleting dynamic partitions in a single action now also supports multi-partitioned assets that use the dynamic partitions definition as a dimension”
- [probe] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“official MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.dagster.io/guides/automate/sensors“Sensors enable you to take action in response to events that occur either internally within Dagster or in external systems.”
- [claimed-docs] https://docs.dagster.io/guides/automate/declarative-automation“Declarative Automation is a framework that uses information about the status of your assets and their dependencies to launch executions of your assets.”
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals.”
- [claimed-docs] https://docs.dagster.io/about/changelog“Automation condition evaluations now explain history-dependent conditions (since, newly_true, newly_missing) by showing the remembered values that determined them”
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals. These intervals can range from common frequencies like hourly, daily, or weekly, to more complex patterns defined using cron expressions.”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals.”
- [claimed-docs] https://docs.dagster.io/guides/automate/schedules“Schedules enable automated execution of jobs at specified intervals. These intervals can range from common frequencies like hourly, daily, or weekly, to more complex patterns defined using cron expressions.”
- [claimed-docs] https://docs.dagster.io/guides/automate/sensors“Sensors enable you to take action in response to events that occur either internally within Dagster or in external systems.”
- [claimed-docs] https://docs.dagster.io/guides/automate/declarative-automation“Declarative Automation is a framework that uses information about the status of your assets and their dependencies to launch executions of your assets.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/dagster-mcp“The Dagster+ MCP server allows you to access information and take actions in your Dagster+ deployment within an AI session.”
- [claimed-docs] https://docs.dagster.io/getting-started/ai-tools/skills“Dagster maintains an AI skill that gives coding agents better context and patterns for building Dagster projects.”
Version, review, and roll back my automationsweight 1
1 (weight) × 4 (quality) × 0.6 (partial) = 2.4 of 10 max
- [claimed-docs] https://docs.dagster.io/guides/build/assets“An asset definition is a description, in code, of an asset that should exist and how to produce and update that asset.”
- [claimed-docs] https://docs.dagster.io/about/changelog“Automation condition evaluations now explain history-dependent conditions (since, newly_true, newly_missing) by showing the remembered values that determined them”
- [community] https://hn.algolia.com/api/v1/items/32839147“I believe Dagster is hitting the right chord: they focus on the pain points in DX for Airflow and similar solutions, they have figured out how to do development branches, they are focusing on assets rather than tasks, and they are constantly improving their product.”
Automation = 48.4 ÷ 80 × 100 = 60.5