Built with IBM Bob

Find the blockers BLOCKED before you estimate 2 days

A "two day" feature becomes two weeks because of something nobody knew was in the code. Before your team commits to a date, Settle has IBM Bob check the risky parts against your real code, and shows you what will get in the way.

About four minutes per featureRuns on your code, on your machineEvery result rerun by SettleNothing is merged
The problem

Estimating a feature is guesswork.

The problems are only found by building, so they are found after the date is promised.

/01

Estimate

A manager asks for a feature. Engineers read the code and guess: "about two days."

/02

Build

Days in, something in the code gets in the way that nobody knew was there.

/03

Slip

The date moves, and the team trusts its next estimate a little less.

2 days 2 weeks
How it works

Bob investigates. Settle checks.

A spike your team would spend days on, done against your real code in about four minutes.

1

Name the feature, in Bob IDE or the terminal

The thing you are about to estimate, like "let customers delete their account", on the repo you have open.

2

Bob finds what it depends on

Bob reads the code the feature touches and lists what must be true for it to be as easy as it looks.

3

Bob tests each one, at once

One Bob per item, each in its own copy of your repo, writes a real test against today's code.

4

Settle checks Bob's work

Every test is rerun by Settle, never taken on Bob's word. Tests may only add files, never change yours.

5

You get the answer and a plan

What is safe, what will get in the way and why, and a plan with the problems first.

Try it

Pick a feature. Watch Bob check it.

Real recorded runs of Settle on a small demo online store. Pick what a manager just asked for and see what would have gone wrong.

Use it in your repo

Add it to your team's planning.

Settle runs next to your code with your IBM Bob. Nothing is merged; every test stays on its own branch.

In IBM Bob IDE

Open your repo, switch to Settle Prove, describe the feature.

The Settle Prove mode writes prove.yml for the app you have open, asks before it spends anything, runs the proof on your code, and tells you the blockers in plain words. It can only ever write prove.yml.

# in Bob IDE, mode: Settle Prove
You: Before I estimate it, check "let customers
     delete their account" in this repo.
Bob: Wrote prove.yml. Run the proof? About four
     minutes and three Bobcoins.
You: Yes.
Bob: 3 blockers. Deleting a customer with orders
     is refused by the database...

Or from the terminal and CI:

1

Install

Node 24, git, and IBM Bob Shell with an API key.

git clone https://github.com/jenzylove/settle
cd settle && npm install && npm link
export BOB_API_KEY=...   # Bob Shell, Inference scope
2

Name the feature

A prove.yml in the app you are estimating.

request: Let customers delete their account.
context: Customers want a "delete my account" button.
experiment:
  command: node --import tsx --test {file}
3

Run it

About four minutes later you get the results page and the plan.

settle prove
# runs/prove-.../index.html   results page
# runs/prove-.../proof.json   for your tools
4

Or run it on every feature ticket

An example GitHub Actions job that proves a feature when a ticket is labelled estimate.

on:
  issues: { types: [labeled] }
jobs:
  prove:
    if: github.event.label.name == 'estimate'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      # install IBM Bob Shell per bob.ibm.com/docs/shell
      - run: git clone https://github.com/jenzylove/settle ../settle && npm --prefix ../settle ci
      - run: echo "request: ${{ github.event.issue.title }}" > prove.yml && node ../settle/bin/settle.mjs prove
        env: { BOB_API_KEY: ${{ secrets.BOB_API_KEY }} }
Why not just ask an AI

A guess, or a failing test.

An AI can tell you what might go wrong. Settle shows you what does, in your code, today.

Asking an AI

"Deleting accounts might affect existing orders."

Maybe. How, and how badly? Nobody knows until someone builds it.

Settle

FK violation raised while deleting customer 1 who has 33 orders: update or delete on table "customers" violates foreign key constraint "orders_customer_id_fk…

A real test against real code, rerun by Settle, on a branch you can open.

FAQ

Questions, answered.

Is this a chatbot?

No. You name a feature and Settle runs experiments on your code. What you get back is tests that passed or failed, the exact errors, and a plan written from them.

Can I run it on my code from this website?

No, and that is on purpose: Settle has to run next to your code, with your Bob. The Try it page replays real runs on our demo store so you can see exactly what you would get.

Why trust what Bob found?

You don't have to. Settle reruns every test itself. A test that crashed before testing, never imported your app, or changed an existing file is marked unsure, never a blocker. Each finding shows the rerun output, Bob's own read, and the test code.

What if Bob misses a risk?

Add your own. List them under checks: in prove.yml and Settle tests them alongside Bob's, the same way.

Does it change my code?

No. Experiments run in separate git worktrees and may only add files. Nothing is merged.

What does it cost?

About four minutes and about three Bobcoins per feature: one Bob session to find the risks, one per risk, and one to write the plan.

Know before you estimate.

Pick a feature request and watch Settle find what would have gone wrong.

Try it ↗Use it in your repo ↓