diff --git a/data/features.yml b/data/features.yml
index 14733c4d94f3e1a8aca53206503570d93c40bbbe..feb1904ad338da85b264ca3c70367ee9b664894a 100644
--- a/data/features.yml
+++ b/data/features.yml
@@ -13,6 +13,20 @@
 #    gitlab_eep:
 #
 competitors:
+  # gitlab_ce, gitlab_ees, gitlab_eep are needed for the feature comparison
+  # table under /products.
+  gitlab_ce:
+    name: 'GitLab CE'
+    short_name: 'Community Edition'
+    logo: '/images/comparison/ce-gitlab-logo.svg'
+  gitlab_ees:
+    name: 'GitLab EE Starter'
+    short_name: 'Enterprise Edition Starter'
+    logo: '/images/comparison/ees-gitlab-logo.svg'
+  gitlab_eep:
+    name: 'GitLab EE Premium'
+    short_name: 'Enterprise Edition Premium'
+    logo: '/images/comparison/eep-gitlab-logo.svg'
   gitlab_com:
     name: 'GitLab.com Silver'
     logo: '/images/comparison/gitlab-logo.svg'
@@ -28,21 +42,6 @@ competitors:
   bitbucket_server:
     name: 'Bitbucket Server'
     logo: '/images/comparison/bitbucket-logo.svg'
-  gitlab_self_hosted:
-    name: 'GitLab Self-hosted'
-    logo: '/images/comparison/gitlab-logo.svg'
-  gitlab_ce:
-    name: 'GitLab CE'
-    short_name: 'Community Edition'
-    logo: '/images/comparison/ce-gitlab-logo.svg'
-  gitlab_ees:
-    name: 'GitLab EE Starter'
-    short_name: 'Enterprise Edition Starter'
-    logo: '/images/comparison/ees-gitlab-logo.svg'
-  gitlab_eep:
-    name: 'GitLab EE Premium'
-    short_name: 'Enterprise Edition Premium'
-    logo: '/images/comparison/eep-gitlab-logo.svg'
   gitlab_ci:
     name: 'GitLab CI'
     logo: '/images/comparison/gitlab-logo.svg'
@@ -55,9 +54,6 @@ competitors:
   circle_ci:
     name: 'Circle CI'
     logo: '/images/comparison/circle-ci-logo.svg'
-  jira:
-    name: 'JIRA'
-    logo: 'null'
   svn:
     name: 'SVN'
     logo: 'null'
@@ -213,7 +209,6 @@ features:
     link: https://docs.gitlab.com/ee/user/permissions.html
     solution: efficiency
     gitlab_com: true
-    gitlab_self_hosted: true
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
@@ -255,7 +250,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     github_enterprise: false
     bitbucket_org: false
@@ -265,7 +259,7 @@ features:
     link_description: "Read more"
     link: https://gitlab.com/gitlab-com/infrastructure/issues/2373
     solution: efficiency
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
@@ -287,7 +281,6 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
   - title: "Export projects"
@@ -299,7 +292,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
   - title: "Powerful Issue Tracker"
     description: "Quickly set the status, assignee or milestone for multiple issues at the same time or easily filter them on any properties. See milestones and issues across projects."
@@ -346,7 +338,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     bitbucket_server: false
@@ -359,8 +350,6 @@ features:
     gitlab_ees: false
     gitlab_eep: false
     gitlab_com: false
-    gitlab_self_hosted: false
-    not_on_gitlab_com: true
     github_com: true
     bitbucket_org: false
   - title: "Application performance monitoring"
@@ -372,7 +361,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     gitlab_ci: true
@@ -390,7 +378,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     bitbucket_server: false
@@ -409,7 +396,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     bitbucket_server: false
@@ -424,7 +410,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: 'partially'
     bitbucket_org: false
     bitbucket_server: false
@@ -511,8 +496,6 @@ features:
     gitlab_ees: false
     gitlab_eep: false
     gitlab_com: false
-    not_on_gitlab_com: true
-    gitlab_self_hosted: false
     github_com: true
   - title: "First time contributor badge"
     description: "Highlight first-time contributors in open source projects"
@@ -523,8 +506,6 @@ features:
     gitlab_ees: false
     gitlab_eep: false
     gitlab_com: false
-    not_on_gitlab_com: true
-    gitlab_self_hosted: false
     github_com: true
   - title: "SUPPORT file link"
     description: "Link from new issues to a SUPPORT file, pointing to support resources"
@@ -535,8 +516,6 @@ features:
     gitlab_ees: false
     gitlab_eep: false
     gitlab_com: false
-    not_on_gitlab_com: true
-    gitlab_self_hosted: false
     github_com: true
   - title: "Built-in Container Registry"
     description: "GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management."
@@ -548,7 +527,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     bitbucket_server: false
@@ -568,7 +546,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     bitbucket_org: false
     bitbucket_server: false
@@ -590,7 +567,6 @@ features:
     gitlab_eep: true
     gitlab_com: true
     github_com: false
-    gitlab_self_hosted: true
     bitbucket_org: false
     bitbucket_server: false
     gitlab_ci: true
@@ -614,7 +590,6 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    gitlab_self_hosted: true
     github_com: false
     github_enterprise: false
     bitbucket_server: false
@@ -643,7 +618,7 @@ features:
     description: "You have complete control of the server/instance, so you can install additional software (intrusion detection, performance monitoring, etc.) and view log files on the server itself. GitLab's advanced log system means everything gets logged and provides you with easy access to a wealth of log file information."
     link_description: "Learn more about logging"
     link: https://docs.gitlab.com/ee/administration/logs.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: open_core
     gitlab_ce: true
     gitlab_ees: true
@@ -657,7 +632,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
   - title: "Highly Available setups"
     description: "For mission critical releases, you cannot afford downtime. Split your app servers, database, etc., into multiple instances and work in read-only mode during backups."
@@ -677,7 +652,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
   - title: "Use your configuration management software"
     description: "You can use your choice of configuration management software, from Puppet, Chef, Ansible for quick and straightforward implementation."
@@ -687,7 +662,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
   - title: "Use standard Unix tools for maintenance and monitoring"
     description: "Use the tools you know for monitoring and maintenance, whether they're standard or your own. GitLab doesn't restrict you."
@@ -697,7 +672,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
   - title: "Single package installation"
     description: "Use GitLab's official repositories or manually download the package to install GitLab in a few steps. All major Linux distributions are supported."
@@ -707,7 +682,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
   - title: "Single configuration file"
     description: "All configuration options for administering a GitLab instance are in a single file. Say no to complex setups, your admin will thank you."
@@ -717,7 +692,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Basic backup and restore mechanism without additional software"
     description: "GitLab provides a simple command line interface to backup or restore your whole installation, and is flexible enough to fit your needs."
     link_description: "Learn more about backing up and restoring GitLab"
@@ -726,7 +701,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "IPv6 ready"
     description: "GitLab supports IPv6 out of the box. The only requirement is for IPv6 to be supported by your server provider."
     link_description: "Read about the different ways to install GitLab"
@@ -735,7 +710,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_com: true
     github_enterprise: true
     bitbucket_org: true
@@ -745,7 +720,7 @@ features:
     link_description: "More information about AD / LDAP integration"
     link: https://docs.gitlab.com/ee/administration/auth/ldap.html
     solution: integration
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
@@ -782,7 +757,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     github_enterprise: false
     bitbucket_org: false
@@ -797,7 +771,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     github_com: false
     github_enterprise: false
     bitbucket_org: false
@@ -806,7 +779,7 @@ features:
     description: "GitLab Enterprise Edition is publicly readable, meaning you can scan or modify the code to meet your security and development needs. The code used by most other providers is proprietary, meaning you cannot edit or view the source code."
     link_description: "Read the GitLab Enterprise Edition license."
     link: https://gitlab.com/gitlab-org/gitlab-ee/blob/master/LICENSE
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: open_core
     gitlab_ce: true
     gitlab_ees: true
@@ -897,7 +870,7 @@ features:
     link_description: "Learn more about Advanced Global Search"
     link: https://docs.gitlab.com/ee/user/search/advanced_global_search.html
     solution: innersourcing
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
@@ -911,7 +884,7 @@ features:
     link_description: "Learn more about Advanced Syntax Search"
     link: https://docs.gitlab.com/ee/user/search/advanced_search_syntax.html
     solution: innersourcing
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
@@ -931,7 +904,7 @@ features:
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Kerberos user authentication"
     description: "Authenticate users with Kerberos."
     link_description: "Learn more about our Kerberos integration"
@@ -940,12 +913,12 @@ features:
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Integrate with Atlassian Crowd"
     description: "Authenticate users with Atlassian Crowd."
     link_description: "Learn more about our Atlassian Crowd integration"
     link: https://docs.gitlab.com/ee/administration/auth/crowd.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: integration
     gitlab_ce: true
     gitlab_ees: true
@@ -958,7 +931,7 @@ features:
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Group webhooks"
     description: "Add webhooks by default to all projects in a group so you can ensure they are present everywhere."
     link_description: "Learn more about Group webhooks"
@@ -1063,7 +1036,7 @@ features:
     description: "Run PostgreSQL in a highly available manner, allowing for manual failover (Beta)"
     link_description: "Learn more about PostgreSQL HA"
     link: https://docs.gitlab.com/ee/administration/high_availability/alpha_database.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: availability
     gitlab_ce: false
     gitlab_ees: false
@@ -1072,7 +1045,7 @@ features:
     description: "Import projects from GitLab.com to a private GitLab instance."
     link_description: "Learn more about importing projects from GitLab.com"
     link: https://docs.gitlab.com/ee/workflow/importing/import_projects_from_gitlab_com.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: import
     gitlab_ce: true
     gitlab_ees: true
@@ -1081,7 +1054,7 @@ features:
     description: "An admin can email groups of users based on project or group membership, or email everyone using the GitLab instance. This is great for scheduled maintenance or upgrades."
     link_description: "Learn more about emailing users from within GitLab"
     link: https://docs.gitlab.com/ee/tools/email.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: compliance
     gitlab_ce: false
     gitlab_ees: true
@@ -1090,7 +1063,7 @@ features:
     description: "Ensure that disk space usage is under control."
     link_description: "Learn more about project size limiting"
     link: https://docs.gitlab.com/ee/user/admin_area/settings/account_and_limit_settings.html#repository-size-limit
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: compliance
     gitlab_ce: false
     gitlab_ees: true
@@ -1098,7 +1071,7 @@ features:
   - title: "Omnibus package supports log forwarding"
     description: "Forward your logs to a central system."
     link_description: "Learn more about log forwarding"
-    not_on_gitlab_com: true
+    gitlab_com: false
     link: https://docs.gitlab.com/omnibus/settings/logs.html#udp-log-forwarding
     solution: compliance
     gitlab_ce: false
@@ -1138,7 +1111,7 @@ features:
     link_description: "View the administration documentation"
     link: 'https://docs.gitlab.com/ee/README.html#administrator-documentation'
     solution: efficiency
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: true
     gitlab_eep: true
@@ -1162,7 +1135,7 @@ features:
     description: "GitLab Enterprise Edition gives your Admin’s the ability to automatically sync groups and manage SSH-keys, permissions, and authentication, so you can focus on building your product, not configuring your tools."
     link_description: "Learn more about LDAP group synchronization"
     link: https://docs.gitlab.com/ee/administration/auth/ldap-ee.html#group-sync
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: compliance
     gitlab_ce: false
     gitlab_ees: true
@@ -1192,7 +1165,7 @@ features:
     description: "Schedule an upgrade time with GitLab. We’ll join a live screen share to help you through the process to ensure there aren't any surprises."
     link_description: "Learn more about our Premium Support"
     link: /features/premium-support/
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: services
     gitlab_ce: false
     gitlab_ees: false
@@ -1214,7 +1187,7 @@ features:
     description: "Auditor users are users who are given read-only access to all projects, groups, and other resources on the GitLab instance."
     link_description: "Auditor users"
     link: https://docs.gitlab.com/ee/administration/auditor_users.html
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: compliance
     gitlab_ce: false
     gitlab_ees: false
@@ -1229,7 +1202,7 @@ features:
     link_description: "Learn more about Disaster Recovery"
     solution: availability
     link: https://docs.gitlab.com/ee/gitlab-geo/disaster-recovery.html#gitlab-geo-disaster-recovery
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: false
     gitlab_eep: true
@@ -1244,7 +1217,6 @@ features:
     screenshot_url: "images/feature_page/screenshots/02-user-roles.png"
     solution: compliance
     gitlab_com: true
-    gitlab_self_hosted: true
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
@@ -1393,7 +1365,7 @@ features:
     gitlab_ce: false
     gitlab_ees: false
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Code Owners"
     description: "The ability to specify code owners or reviewers in the repository"
     link: https://gitlab.com/gitlab-org/gitlab-ee/issues/1012
@@ -1622,7 +1594,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     gitlab_ci: true
     travis_ci: false
     jenkins: false
@@ -1636,7 +1607,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: true
-    gitlab_self_hosted: true
     gitlab_ci: true
     travis_ci: false
     jenkins: false
@@ -1650,8 +1620,6 @@ features:
     gitlab_ees: false
     gitlab_eep: true
     gitlab_com: false
-    not_on_gitlab_com: true
-    gitlab_self_hosted: true
     gitlab_ci: true
   - title: "Run CI/CD jobs on Windows"
     description: |
@@ -1858,7 +1826,7 @@ features:
     link_description: "Learn more about GitLab Geo"
     solution: scalability
     link: /features/gitlab-geo/
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: false
     gitlab_eep: true
@@ -1888,7 +1856,7 @@ features:
     solution: availability
     link_description: "Learn more about GitLab's High availability"
     link: https://docs.gitlab.com/ee/administration/high_availability/
-    not_on_gitlab_com: true
+    gitlab_com: false
     gitlab_ce: false
     gitlab_ees: false
     gitlab_eep: true
@@ -1925,7 +1893,7 @@ features:
       pre-configured appliance using Ops Manager (BOSH) for Pivotal Cloud Foundry.
     link_description: "Learn more about Pivotal Cloud Foundry Tile for GitLab"
     link: /2015/11/03/pivotal-cloud-foundry-tile-for-gitlab-ee/
-    not_on_gitlab_com: true
+    gitlab_com: false
     solution: integration
     gitlab_ce: false
     gitlab_ees: false
@@ -2027,7 +1995,6 @@ features:
     link_description: "Learn how to upgrade your GitLab instance"
     link: /update
     solution: open_core
-    not_on_gitlab_com: true
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
@@ -2041,7 +2008,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_enterprise: false
     bitbucket_server: false
   - title: "Retrieval"
@@ -2105,7 +2072,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
     github_com: false
     github_enterprise: false
   - title: "Enriched Markdown support"
@@ -2214,7 +2181,6 @@ features:
     gitlab_ees: false
     gitlab_eep: false
     gitlab_com: false
-    gitlab_self_hosted: false
     github_com: true
   - title: "Protected branches"
     description: "Granular permissions for branches you want to protect."
@@ -2252,7 +2218,6 @@ features:
     gitlab_ees: true
     gitlab_eep: true
     gitlab_com: false
-    not_on_gitlab_com: true
     github_com: false
     github_enterprise: 'partially'
     bitbucket_org: false
@@ -2321,7 +2286,7 @@ features:
     gitlab_ce: true
     gitlab_ees: true
     gitlab_eep: true
-    not_on_gitlab_com: true
+    gitlab_com: false
   - title: "Project Templates"
     description: |
       When creating a new project, you can choose to kickstart your project from a predefined template
diff --git a/doc/features.md b/doc/features.md
index f7591e34578dffe40b99574d8a123c15c877e93e..2e45045b8f64f96d52b907a919585e59959eb5e3 100644
--- a/doc/features.md
+++ b/doc/features.md
@@ -2,28 +2,77 @@
 
 All features are listed in a single yaml file
 ([`/data/features.yml`](/data/features.yml)) under the `features` section.
+It is the single source of truth for the following pages:
+
+- <https://about.gitlab.com/features/>
+- <https://about.gitlab.com/products/>
+- <https://about.gitlab.com/gitlab-com/>
+- <https://about.gitlab.com/comparison/>
+- <https://about.gitlab.com/roi/>
+
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [Features attributes](#features-attributes)
+- [Update the features page (under `/features`)](#update-the-features-page-under-features)
+- [Update the products page (under `/products`)](#update-the-products-page-under-products)
+- [Update the gitlab-com page (under `/gitlab-com`)](#update-the-gitlab-com-page-under-gitlab-com)
+- [Create or update the comparison pages (under `/comparison`)](#create-or-update-the-comparison-pages-under-comparison)
+- [Create or update the solutions pages (under `/solutions`)](#create-or-update-the-solutions-pages-under-solutions)
+- [Update the Return on Investment calculator page (under `/roi`)](#update-the-return-on-investment-calculator-page-under-roi)
+- [Why we use YAML for the solutions, features, and pricing pages](#why-we-use-yaml-for-the-solutions-features-and-pricing-pages)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## Features attributes
+
+The following table depicts all possible attributes a feature can have and the
+page they're used on. These are the attributes under the `features:` hash in
+[`data/features.yml`](/data/features.yml).
+
+| Feature attribute  | Used on page(s) | Description |
+| -------------------| --------------- | ----------- |
+| `title`             | `/features`, `/products`, `/gitlab-com`, `/comparison`, `/roi` | The distinct title of a feature.  |
+| `description`       | `/features`, `/products`, `/gitlab-com`, `/comparison` | The description of the feature. Can include Markdown. |
+| `screenshot_url`    | `/features` | Relative URL of the feature screenshot if relevant. |
+| `link_description`  | `/features`, `/comparison` |  Below every feature usually a link appears pointing to the feature page or the documentation. This value is its description, e.g., `"Learn more about CI/CD"`. In pages where it's not used, a generic description may appear. |
+| `link`              | `/features`, `/products`, `/gitlab-com`, `/comparison` | The link pointing either to the feature page (relative link, e.g., `/features/pages`), the docs or an issue on the issue tracker the feature is being worked on. |
+| `feature_page`      | `/features`, `/products` | Set to true for pages that have their own dedicated page under `/features`. If set to true, the `link` should point to the relevant feature page. All features that have this and `gitlab_ce` set to true, are shown on `/products` under CE (because CE has about as many features in the `features.yml` as EES, it makes EES look less enticing, so we currently only show features that have a feature page). |
+| `solution`          | `/features` | Every feature must have a solution (category) otherwise CI will fail. Check the [`data/solutions.yml`](../data/solutions.yml) file for a list of existing ones. When in doubt, ask in the `product` chat channel. |
+| `gitlab_ce`             | `/features`, `/products`, `/gitlab-com` | `true` if the feature is in CE, `false` if not, `'partially'` if partially supported (generally avoid using this). |
+| `gitlab_ees`            | `/features`, `/products`, `/gitlab-com`, `/comparison`  | `true` if the feature is in EES/GitLab.com Bronze, `false` if not, `'partially'` if partially supported (generally avoid using this). |
+| `gitlab_eep`            | `/features`, `/products`, `/gitlab-com`, `/comparison` | `true` if the feature is in EEP/GitLab.com Silver, `false` if not, `'partially'` if partially supported (generally avoid using this). |
+| `gitlab_com`            | `/features`, `/products`, `/gitlab-com`, `/comparison` | `true` if the feature is included in GitLab.com Silver, `false` if not or for features which users don't have access to on GitLab.com, for example LDAP authentication or admin settings. |
+| `github_com`            | `/comparison` | `true` if the feature is on GitHub.com, `false` if not. |
+| `github_enterprise`     | `/comparison` | `true` if the feature is on GitHub Enterprise, `false` if not. |
+| `bitbucket_org`         | `/comparison` | `true` if the feature is on Bitbucket.org, `false` if not. |
+| `bitbucket_server`      | `/comparison` | `true` if the feature is on Bitbucket Server, `false` if not. |
+| `gitlab_ci`             | `/comparison` | `true` if the feature is in GitLab CI/CD, `false` if not. |
+| `travis_ci`             | `/comparison` | `true` if the feature is in Travis CI, `false` if not. |
+| `jenkins`               | `/comparison` | `true` if the feature is in Jenkins, `false` if not. |
+| `circle_ci`             | `/comparison` | `true` if the feature is in Circle CI, `false` if not. |
+| `svn`                   | `/comparison` | `true` if the feature is in SVN, `false` if not. |
+| `saas`                  | `/comparison` | `true` if the feature is in SaaS, `false` if not. |
+| `gitlab_issue_boards`   | `/comparison` | `true` if the feature is in GitLab Issue Boards, `false` if not. |
+| `trello`                | `/comparison` | `true` if the feature is in Trello, `false` if not. |
+| `asana`                 | `/comparison` | `true` if the feature is in Asana, `false` if not. |
+| `gitlab_pages`          | `/comparison` | `true` if the feature is in GitLab Pages, `false` if not. |
+| `github_pages`          | `/comparison` | `true` if the feature is in GitHub Pages, `false` if not. |
+| `github_pull_requests`  | `/comparison` | `true` if the feature is in GitHub Pull Requests, `false` if not. |
+| `gitlab_merge_requests` | `/comparison` | `true` if the feature is in GitLab Merge Requests, `false` if not. |
+| `shorthand`         | `/roi` | This is the id that it's used for the url parameters so users can share their ROI calculations. It needs to have underscores (`_`) instead of spaces in order for it to work.  |
+| `hours_per_incident`| `/roi` | The number of hours that an incident will take before it's solved. It can be skipped but it will make the calculator return 0 for that feature. |
+| `incidents_per_year`| `/roi` | The number of times that an incident will happen in a year. It can be skipped but it will make the calculator return 0 for that feature. |
+| `roi_case`          | `/roi` |The description of the case that makes use of the feature that's described on the title, if this is skipped the feature will not be considered for the roi features table. |
 
 ## Update the features page (under `/features`)
 
 The [`/features`](https://about.gitlab.com/features/) page grabs its content
 automatically from [`/data/features.yml`](/data/features.yml).
 
-The table below tries to describe the minimum values a feature that appears
-under the `/features` can have and how they should be used.
-
-| Features values | Description |
-| --------------- | ----------- |
-| `title` | The distinct title of a feature.  |
-| `description` | The description of the feature. Can include Markdown. |
-| `screenshot_url` | Relative URL of the feature screenshot if relevant. |
-| `link_description` | Below every feature usually a link appears pointing to the feature page or the documentation. This value is its description, e.g., `"Learn more about CI/CD"`. |
-| `link` | The link pointing either to the feature page or in the docs. |
-| `gitlab_ce`  | Set to true if the feature is in CE. |
-| `gitlab_ees` | Set to true if the feature is in EES. |
-| `gitlab_eep` | Set to true if the feature is in EEP. |
-| `not_on_gitlab_com` | Set to true for features which aren't relevant to GitLab.com, for example LDAP authentication. |
-| `feature_page` | Set to true for pages that have their own dedicated page under `/features`. If set to true, the `link` should point to the relevant feature page. All features that have this and `gitlab_ce` set to true, are shown on the Products page under CE (because CE has about as many features in the `features.yml` as EES, it made EES look less enticing, so we currently only show features that have a feature page). |
-| `solution`  | Every feature must have a solution (category) otherwise CI will fail. Check [`data/solutions.yml`](../data/solutions.yml) for a list of existing ones. |
+Consult the [features attributes table](#features-attributes) for a complete
+list of possible attributes.
 
 Example:
 
@@ -44,29 +93,33 @@ Example:
 The [`/products`](https://about.gitlab.com/products/) page grabs its content
 automatically from [`/data/features.yml`](/data/features.yml).
 
-It works the same as the features description above.
+Consult the [features attributes table](#features-attributes) for a complete
+list of possible attributes.
 
 ## Update the gitlab-com page (under `/gitlab-com`)
 
 The [`/gitlab-com`](https://about.gitlab.com/gitlab-com/) page grabs its content
 automatically from [`/data/features.yml`](/data/features.yml).
 
-It works the same as the features description above.
+Consult the [features attributes table](#features-attributes) for a complete
+list of possible attributes.
 
 ## Create or update the comparison pages (under `/comparison`)
 
-The [comparison page][comp] grabs its content automatically from
-`data/features.yml`.
+The [comparison page](https://about.gitlab.com/comparison/) grabs its content
+automatically from [`/data/features.yml`](/data/features.yml).
 
 There are 2 files in total which you need to create or update:
 
 - `data/features.yml`: Update for new comparisons. Comparisons are automatically
-  generated from the contents of this file.
+  generated from the contents of this file. Consult the
+  [features attributes table](#features-attributes) for a complete list of
+  possible attributes.
 - `source/comparison/gitlab-vs-competitor.html.haml`: Create for new comparisons.
-  Every comparison page has its own html file (**use dashes**).
+  Every comparison page has its own HTML file (**use dashes**).
 
 1. Edit `data/features.yml` (`competitors`, `comparisons` and `features`
-   sections):
+   sections). For example:
 
     ```yaml
     competitors:
@@ -81,7 +134,7 @@ There are 2 files in total which you need to create or update:
 
     comparisons:
       gitlab_com_vs_github_com:
-        title: 'GitΗub.com vs. GitLab.com'
+        title: 'GitLab.com Silver vs. GitΗub.com'
         link: '/comparison/gitlab-com-vs-github-com.html'
         product_one: 'gitlab_com'
         product_two: 'github_com'
@@ -97,10 +150,6 @@ There are 2 files in total which you need to create or update:
           as one paragraph.
         link_description: "Learn more about Feature Name."
         link: "link to GitLab's feature page documentation or blog post"
-        solution: efficiency
-        gitlab_ce: true
-        gitlab_ees: true
-        gitlab_eep: true
         gitlab_com: true
         github_com: true
     ```
@@ -144,22 +193,20 @@ There are 2 files in total which you need to create or update:
    dropdown menu. The last thing you need to do is create the PDF. Follow the
    info in [creating comparison PDFs](pdf.md#comparison-pdfs).
 
-[comp]: https://about.gitlab.com/comparison/
-
 ## Create or update the solutions pages (under `/solutions`)
 
 Every feature should have a solution. The list of the existing solutions can be
-found at [`data/solutions.yml`](../data/solutions.yml).
+found at [`data/solutions.yml`](/data/solutions.yml).
 
 To create a new one solution:
 
-1. Edit [`data/solutions.yml`](../data/solutions.yml) and add the new solution.
+1. Edit [`data/solutions.yml`](/data/solutions.yml) and add the new solution.
    You can copy the format of an existing one.
 
     >**Note:**
     There are two categories of solutions: 1) "Phases of the software development
     life-cycle" and 2) "Quality attributes of GitLab". The features index page
-    lists them both. The first ones are taken from [`data/solutions.yml`](../data/solutions.yml),
+    lists them both. The first ones are taken from [`data/solutions.yml`](/data/solutions.yml),
     so when you add a new solution that belongs to the "Phases of the software
     development life-cycle", make sure to also update the value in
     `source/features/index.html.haml` (`data.solutions.solutions.take(7).each` and
@@ -168,12 +215,20 @@ To create a new one solution:
 1. Create `source/solutions/<solution-name>/index.html.haml`. You can copy the
    format of an existing solution to get started.
 
-To update an existing solution, just edit [`data/solutions.yml`](../data/solutions.yml).
+To update an existing solution, just edit [`data/solutions.yml`](/data/solutions.yml).
+
+## Update the Return on Investment calculator page (under `/roi`)
+
+The [`/roi`](https://about.gitlab.com/roi/) page grabs its content
+automatically from [`/data/features.yml`](/data/features.yml).
+
+Consult the [features attributes table](#features-attributes) for a complete
+list of possible attributes.
 
 ## Why we use YAML for the solutions, features, and pricing pages
 
-We decided to use YAML after attempting to maintain the features, pricing, and 
-solutions pages independently of one another. This didn't work well because the 
+We decided to use YAML after attempting to maintain the features, pricing, and
+solutions pages independently of one another. This didn't work well because the
 pages often had overlapping content, and the site wasn't following
 [DRY principles](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself). Without
 being DRY, we frequently repeated work unnecessarily and the pages became increasingly
@@ -184,20 +239,3 @@ and have people update the YAML files instead of the respective Haml files.
 
 For more information, see issues [#1334](https://gitlab.com/gitlab-com/www-gitlab-com/issues/1334)
 and [#1478](https://gitlab.com/gitlab-com/www-gitlab-com/issues/1478).
-
-## Update the Return on Investment calculator page (under `/roi`)
-
-The [`/roi`](https://about.gitlab.com/roi/) page grabs its content
-automatically from [`/data/features.yml`](/data/features.yml).
-
-The table below tries to describe the minimum values a feature for the ROI
-calculator will need in order to appear under `/roi`.
-
-| Features values | Description |
-| --------------- | ----------- |
-| `title` | The distinct title of a feature. |
-| `link` | The link pointing either to the feature page or the docs. |
-| `shorthand` | This is the id that it's used for the url parameters so users can share their ROI calculations. It needs to have underscores (`_`) instead of spaces in order for it to work.  |
-| `hours_per_incident` | The number of hours that an incident will take before it's solved. It can be skipped but it will make the calculator return 0 for that feature. |
-| `incidents_per_year` | The number of times that an incident will happen in a year. It can be skipped but it will make the calculator return 0 for that feature. |
-| `roi_case` | The description of the case that makes use of the feature that's described on the title, if this is skipped the feature will not be considered for the roi features table. |
diff --git a/source/gitlab-com/index.html.haml b/source/gitlab-com/index.html.haml
index 9644a9b715d55d3e487497f424ae6bba3ed5a7f7..cf7370dc0e4ec4dcc8d8dd4ffbea6f1685cdc8b1 100644
--- a/source/gitlab-com/index.html.haml
+++ b/source/gitlab-com/index.html.haml
@@ -65,7 +65,7 @@ extra_js:
                 %li.item-description
                   = plan.support
                 - data.features.features.each do |feature|
-                  - if (feature.gitlab_ce == true && feature.not_on_gitlab_com != true && feature.feature_page == true)
+                  - if (feature.gitlab_ce == true && feature.gitlab_com != false && feature.feature_page == true)
                     %li.line-separator
                     %li.item-description
                       - if (feature.link != nil)
@@ -103,7 +103,7 @@ extra_js:
                 %li.item-description
                   = plan.description
                 - data.features.features.each do |feature|
-                  - if (feature.gitlab_ce == false && feature.gitlab_ees == true && feature.not_on_gitlab_com != true)
+                  - if (feature.gitlab_ce == false && feature.gitlab_ees == true && feature.gitlab_com != false)
                     %li.line-separator
                     %li.item-description
                       - if (feature.link != nil)
@@ -141,7 +141,7 @@ extra_js:
                 %li.item-description
                   = plan.description
                 - data.features.features.each do |feature|
-                  - if (feature.gitlab_ees == false && feature.gitlab_eep == true && feature.not_on_gitlab_com != true)
+                  - if (feature.gitlab_ees == false && feature.gitlab_eep == true && feature.gitlab_com != false)
                     %li.line-separator
                     %li.item-description
                       - if (feature.link != nil)
@@ -209,7 +209,7 @@ extra_js:
                   The following features do not apply to GitLab.com:
                   %ul
                     - data.features.features.each do |feature|
-                      - if (feature.not_on_gitlab_com == true)
+                      - if (feature.gitlab_com == false)
                         %li
                           = feature.title
         - else
diff --git a/source/includes/features/table.html.haml b/source/includes/features/table.html.haml
index 72cfc9e11b6bd4a7d7ed37ccbd3a4aa280814153..28d1edcb72344774f4ec93083fb4397aae507270 100644
--- a/source/includes/features/table.html.haml
+++ b/source/includes/features/table.html.haml
@@ -27,13 +27,13 @@
     %tbody.header.first
       - data.features.features.each do |feature|
         // CE
-        - if ((feature.public_send(key_one) == true && feature.link != nil && feature.feature_page == true && feature.public_send(key_two) != nil && feature.public_send(key_three) != nil) && !(feature.not_on_gitlab_com == true && gitlab_com_features == true))
+        - if ((feature.public_send(key_one) == true && feature.link != nil && feature.feature_page == true && feature.public_send(key_two) != nil && feature.public_send(key_three) != nil) && !(feature.gitlab_com == false && gitlab_com_features == true))
           = partial "includes/features/matrix-row", locals: { key_one: key_one, key_two: key_two, key_three: key_three, feature: feature }
       - data.features.features.each do |feature|
         // EE Starter
-        - if (feature.public_send(key_one) == false && feature.public_send(key_two) == true && feature.public_send(key_three) != nil && !(feature.not_on_gitlab_com == true && gitlab_com_features == true))
+        - if (feature.public_send(key_one) == false && feature.public_send(key_two) == true && feature.public_send(key_three) != nil && !(feature.gitlab_com == false && gitlab_com_features == true))
           = partial "includes/features/matrix-row", locals: { key_one: key_one, key_two: key_two, key_three: key_three, feature: feature }
       - data.features.features.each do |feature|
         // EE Premium
-        - if (feature.public_send(key_two) == false && feature.public_send(key_three) == true && !(feature.not_on_gitlab_com == true && gitlab_com_features == true))
+        - if (feature.public_send(key_two) == false && feature.public_send(key_three) == true && !(feature.gitlab_com == false && gitlab_com_features == true))
           = partial "includes/features/matrix-row", locals: { key_one: key_one, key_two: key_two, key_three: key_three, feature: feature }