Identa adds each company to a vendor register as one GitHub pull request. If the process dies mid-way, it asks GitHub what actually happened before it does anything again, so a crash does not turn into a second vendor record.
It is for a team that keeps a register of its vendors and lets an agent add to it. The method carries over to any agent that acts on a real system and can stop part-way.
Type a company domain. Identa asks Crustdata who it is and shows what it would do: add it, or hold it for a person. This only looks things up. It does not add anything to the register, and Identa does not save what you type.
Each test adds the same nine companies and stops the program once, at one of three moments. When Identa restarts, it first checks GitHub to see what already happened. The comparison is the same code without that check: it just tries again. After every test, the counts are read from GitHub itself.
What happened in each test, with the number of branches and pull requests behind it.
A second kind of failure: more than one copy of the program tries to add the same company at the same time, as can happen after a restart or a double start. Each copy had its own memory and its own connection to GitHub. Both tests started all copies together on the same company. GitHub refuses a second branch with the same name, and Identa uses one fixed name per job. The comparison gives every copy its own name.
After the planned tests, four code updates by accident restarted the third comparison test (the one without the check). Two of those runs were cut short by the next update. They are listed here separately, taken from the register's own pull request list, and they are not counted in any number above. Every one that got as far as its first stop opened a duplicate pull request, which is exactly what the check prevents.
Every job gets a fixed name made from the company and what we are doing with it. The same job always has the same name, so after a crash Identa can look it up on GitHub and know exactly what was finished.
Before touching GitHub, write down what is about to happen: which company, and the steps planned.
Create the branch, add the vendor file, open the pull request. Each step is logged, and they run one at a time.
After any interruption, look at the branch, the file and the pull request on GitHub, then choose what to do.
The time from the last thing the program did before it was stopped, to the moment it had checked GitHub and knew what to do. Restarting the program is included.
Sometimes two companies are an equally good match for one web address. Identa does not guess. It checks which one actually owns the address: first the company whose main domain is that address, then the one whose own website is that address. In the run below, before this check existed, both cases were held for a person. Applied to the same saved answers, the check settles both: cfo.ai, because its website is cfo.ai itself, and Amazon, because its main domain is amazon.com. A person is only asked when nothing separates the matches. And Identa remembers what the person decides: a company that was rejected is not sent back for review next time, and the earlier reason is shown.
Built in cfo.ai from two kinds of input. Costs come from real runs. Pricing and growth are the founder's decisions, not measurements.
Every run sent a step-by-step record to neatlogs. A program that was stopped leaves a short record that ends at the last thing it finished. The restart then leaves its own record, which begins by checking GitHub. No AI model is used, so tokens and model cost are both 0.
Pull requests opened in the first full run, in Datwebguy/identavendors.