Skip to content

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.txtPROBE 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/skillsDagster 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/skillsDagster 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/schedulesSchedules enable automated execution of jobs at specified intervals.
  • [claimed-docs] https://docs.dagster.io/guides/automate/sensorsSensors 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/dockerA 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/installationuvx create-dagster@latest project my-project
  • [probe] https://docs.dagster.io/api/clis/dg-cli/dg-cli-configurationofficial CLI documented at https://docs.dagster.io/api/clis/dg-cli/dg-cli-configuration
  • [community] https://hn.algolia.com/api/v1/items/24123289Dagster 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-mcpThe 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/skillsDagster 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/skillsDagster 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-mcpofficial 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-mcpThe 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/skillsDagster 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/skillsDagster 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-mcpofficial 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/installationyou 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-definitionsYou 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/installationuvx create-dagster@latest project my-project
  • [claimed-docs] https://docs.dagster.io/guides/build/components/building-pipelines-with-components/adding-component-definitionsTo 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/skillsDagster 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-mcpThe 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-configurationofficial 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-mcpThe 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/skillsDagster 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-definitionsYou can scaffold Dagster Component definitions in your project from the command line with the dg scaffold defs command
  • [claimed-docs] https://docs.dagster.ioimport dagster as dg@dg.assetdef hello(context: dg.AssetExecutionContext): context.log.info("Hello!")@dg.asset(deps=[hello])
  • [probe] https://docs.dagster.io/openapi.jsonPROBE 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-mcpofficial 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-configurationofficial 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-mcpThe 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-mcpofficial 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/skillsDagster 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-mcpThe 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/skillsDagster 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-mcpofficial MCP server documented at https://docs.dagster.io/getting-started/ai-tools/dagster-mcp
  • [claimed-docs] https://docs.dagster.ioimport 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/sensorsSensors 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/alertsDagster+ 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/alertsDagster+ 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.jsonPROBE 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.txtPROBE 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.ioimport 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.jsonPROBE 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.txtPROBE 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/24123289Dagster 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-checksEnsure 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-checksAsset 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/changelogAutomation 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/changelogwiping 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/changelogIn 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.jsonPROBE 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-definitionsYou 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-definitionsyou must either create a components-ready Dagster project or migrate an existing project to dg
  • [claimed-docs] https://docs.dagster.ioimport 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-mcpThe 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.jsonPROBE 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-mcpofficial 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-configurationofficial 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/assetsAn 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/dockerA 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/installationuvx create-dagster@latest project my-project
  • [claimed-docs] https://dagster.io/pricingSolo 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.mdWith 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/dockerA 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/38610892I'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/skillsDagster 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-mcpThe 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/skillsDagster 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-mcpofficial 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/schedulesSchedules enable automated execution of jobs at specified intervals.
  • [claimed-docs] https://docs.dagster.io/guides/automate/sensorsSensors 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-automationDeclarative 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/dockerA 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/alertsDagster+ 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/changelogAutomation 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/skillsDagster 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-mcpThe 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/skillsDagster 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-mcpofficial 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/skillsDagster 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-mcpThe 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/skillsDagster 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-mcpofficial 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/dbtUse Dagster's UI or APIs to run subsets of your dbt models, seeds, and snapshots.
  • [claimed-docs] https://docs.dagster.io/about/changelogwiping 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-mcpofficial 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-mcpThe 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/sensorsSensors 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-automationDeclarative 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/schedulesSchedules enable automated execution of jobs at specified intervals.
  • [claimed-docs] https://docs.dagster.io/about/changelogAutomation 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/schedulesSchedules 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/schedulesSchedules enable automated execution of jobs at specified intervals.
  • [claimed-docs] https://docs.dagster.io/guides/automate/schedulesSchedules 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/sensorsSensors 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-automationDeclarative 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-mcpThe 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/skillsDagster 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/assetsAn 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/changelogAutomation 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/32839147I 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