diff --git a/cmd/govulncheck_compare/govulncheck_compare.go b/cmd/govulncheck_compare/govulncheck_compare.go
index 5516e6b..52214c5 100644
--- a/cmd/govulncheck_compare/govulncheck_compare.go
+++ b/cmd/govulncheck_compare/govulncheck_compare.go
@@ -20,7 +20,6 @@
 	"io"
 	"os"
 
-	"golang.org/x/exp/slices"
 	"golang.org/x/pkgsite-metrics/internal/buildbinary"
 	"golang.org/x/pkgsite-metrics/internal/govulncheck"
 )
@@ -51,40 +50,32 @@
 		FindingsForMod: make(map[string]*govulncheck.ComparePair),
 	}
 
-	binaryPaths, err := buildbinary.FindAndBuildBinaries(modulePath)
+	binaries, err := buildbinary.FindAndBuildBinaries(modulePath)
 	if err != nil {
 		fail(err)
 		return
 	}
-	defer removeBinaries(binaryPaths)
+	defer removeBinaries(binaries)
 
-	// Sort binaryPath keys so that range is deterministic
-	keys := make([]string, 0, len(binaryPaths))
-	for k := range binaryPaths {
-		keys = append(keys, k)
-	}
-	slices.Sort(keys)
-
-	for _, binaryPath := range keys {
-		importPath := binaryPaths[binaryPath]
+	for _, binary := range binaries {
 		pair := govulncheck.ComparePair{
 			BinaryResults: govulncheck.SandboxResponse{Stats: govulncheck.ScanStats{}},
 			SourceResults: govulncheck.SandboxResponse{Stats: govulncheck.ScanStats{}},
 		}
 
-		pair.SourceResults.Findings, err = govulncheck.RunGovulncheckCmd(govulncheckPath, govulncheck.FlagSource, importPath, modulePath, vulndbPath, &pair.SourceResults.Stats)
+		pair.SourceResults.Findings, err = govulncheck.RunGovulncheckCmd(govulncheckPath, govulncheck.FlagSource, binary.ImportPath, modulePath, vulndbPath, &pair.SourceResults.Stats)
 		if err != nil {
 			fail(err)
 			return
 		}
 
-		pair.BinaryResults.Findings, err = govulncheck.RunGovulncheckCmd(govulncheckPath, govulncheck.FlagBinary, binaryPath, modulePath, vulndbPath, &pair.BinaryResults.Stats)
+		pair.BinaryResults.Findings, err = govulncheck.RunGovulncheckCmd(govulncheckPath, govulncheck.FlagBinary, binary.BinaryPath, modulePath, vulndbPath, &pair.BinaryResults.Stats)
 		if err != nil {
 			fail(err)
 			return
 		}
 
-		response.FindingsForMod[importPath] = &pair
+		response.FindingsForMod[binary.ImportPath] = &pair
 	}
 
 	b, err := json.MarshalIndent(response, "", "\t")
@@ -97,8 +88,8 @@
 	fmt.Println()
 }
 
-func removeBinaries(binaryPaths map[string]string) {
-	for path := range binaryPaths {
-		os.Remove(path)
+func removeBinaries(binaryPaths []*buildbinary.BinaryInfo) {
+	for _, bin := range binaryPaths {
+		os.Remove(bin.BinaryPath)
 	}
 }
diff --git a/internal/buildbinary/bin.go b/internal/buildbinary/bin.go
index 47ab1a4..892c232 100644
--- a/internal/buildbinary/bin.go
+++ b/internal/buildbinary/bin.go
@@ -13,24 +13,28 @@
 	"golang.org/x/pkgsite-metrics/internal/derrors"
 )
 
-// TODO: Consider making struct if we want to pass successful binaries & still
-// be aware if building others failed for some reason.
+type BinaryInfo struct {
+	BinaryPath string
+	ImportPath string
+}
 
 // FindAndBuildBinaries finds and builds all possible binaries from a given module.
-func FindAndBuildBinaries(modulePath string) (binaries map[string]string, err error) {
+func FindAndBuildBinaries(modulePath string) (binaries []*BinaryInfo, err error) {
 	defer derrors.Wrap(&err, "FindAndBuildBinaries")
 	buildTargets, err := findBinaries(modulePath)
 	if err != nil {
 		return nil, err
 	}
-	binaries = make(map[string]string)
 
 	for i, target := range buildTargets {
 		path, err := runBuild(modulePath, target, i)
 		if err != nil {
 			return nil, err
 		}
-		binaries[path] = target
+		binaries = append(binaries, &BinaryInfo{
+			BinaryPath: path,
+			ImportPath: target,
+		})
 	}
 	return binaries, nil
 }
