diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index 7bb9774..087d6e7 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -884,10 +884,6 @@
 				continue
 			}
 			builder := bs.Builders[i]
-			if skipBranchForBuilder(br.Repo, br.Branch, br.GoBranch, builder) {
-				continue
-			}
-
 			builderInfo, ok := dashboard.Builders[builder]
 			if !ok || builderInfo.TryOnly {
 				// Not managed by the coordinator, or a trybot-only one.
@@ -896,6 +892,9 @@
 			if !builderInfo.BuildRepo(br.Repo) {
 				continue
 			}
+			if !builderInfo.BuildBranch(br.Repo, br.Branch, br.GoBranch) {
+				continue
+			}
 
 			var rev buildgo.BuilderRev
 			if br.Repo == "go" {
@@ -934,7 +933,7 @@
 		if builderInfo.TryOnly || knownToDashboard[b] {
 			continue
 		}
-		if skipBranchForBuilder("go", "master", "master", b) {
+		if !builderInfo.BuildBranch("go", "master", "") {
 			continue
 		}
 		for _, rev := range goRevisions {
@@ -3633,41 +3632,3 @@
 	}
 	return fmt.Sprintf("%x", buf)[:n]
 }
-
-// repo is "go", "net", etc.
-// branch is the branch of the repo (usually "master").
-// goGranch is non-empty for a non-"go" repo, and is the branch of Go the subrepo is being tested at.
-// builder is a build config name.
-func skipBranchForBuilder(repo, branch, goBranch, builder string) bool {
-	// TODO: move this policy into a new BuildConfig policy func
-	// in dashboard/builders.go.
-	if strings.HasPrefix(builder, "darwin-") {
-		switch builder {
-		case "darwin-amd64-10_8", "darwin-amd64-10_10", "darwin-amd64-10_11",
-			"darwin-386-10_8", "darwin-386-10_10", "darwin-386-10_11":
-			// OS X before Sierra can build any branch.
-			// (We've never had a 10.9 builder.)
-		default:
-			// Sierra or after, however, requires the 1.7 branch:
-			switch branch {
-			case "release-branch.go1.6",
-				"release-branch.go1.5",
-				"release-branch.go1.4",
-				"release-branch.go1.3",
-				"release-branch.go1.2",
-				"release-branch.go1.1",
-				"release-branch.go1":
-				return true
-			}
-		}
-	}
-	// NetBSD support was resurrected during the Go 1.10 dev cycle.
-	// Skip subrepo builds against Go 1.8 and Go 1.9. Failures there aren't interesting.
-	if strings.HasPrefix(builder, "netbsd-") {
-		switch goBranch {
-		case "release-branch.go1.8", "release-branch.go1.9":
-			return true
-		}
-	}
-	return false
-}
diff --git a/dashboard/builders.go b/dashboard/builders.go
index 46120ff..1d1a877 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -835,6 +835,43 @@
 	return c.buildSubrepos()
 }
 
+// BuildBranch reports whether we should do post-submit builds of the provided
+// branch.
+// repo is "go", "sys", "net", etc.
+// branch is the branch of the repo (usually "master").
+// goBranch is non-empty for a non-"go" repo, and is the branch of Go the subrepo is being tested at.
+func (c *BuildConfig) BuildBranch(repo, branch, goBranch string) bool {
+	if strings.HasPrefix(c.Name, "darwin-") {
+		switch c.Name {
+		case "darwin-amd64-10_8", "darwin-amd64-10_10", "darwin-amd64-10_11",
+			"darwin-386-10_8", "darwin-386-10_10", "darwin-386-10_11":
+			// OS X before Sierra can build any branch.
+			// (We've never had a 10.9 builder.)
+		default:
+			// Sierra or after, however, requires the 1.7 branch:
+			switch branch {
+			case "release-branch.go1.6",
+				"release-branch.go1.5",
+				"release-branch.go1.4",
+				"release-branch.go1.3",
+				"release-branch.go1.2",
+				"release-branch.go1.1",
+				"release-branch.go1":
+				return false
+			}
+		}
+	}
+	// NetBSD support was resurrected during the Go 1.10 dev cycle.
+	// Skip subrepo builds against Go 1.8 and Go 1.9. Failures there aren't interesting.
+	if strings.HasPrefix(c.Name, "netbsd-") {
+		switch goBranch {
+		case "release-branch.go1.8", "release-branch.go1.9":
+			return false
+		}
+	}
+	return true
+}
+
 // AllScriptArgs returns the set of arguments that should be passed to the
 // all.bash-equivalent script. Usually empty.
 func (c *BuildConfig) AllScriptArgs() []string {
