we should probably use an sqlite database to store the results instead of json files it makes it easier to: - resume interrupted runs - move run states across machines