IBM Bob 2.0 Hackathon — application maintenance workflow

The debt was always visible. Nobody had time to look.

Upkeep points Bob 2.0 at a live repository, has it triage every piece of accumulated debt, and dispatches parallel subagents to fix what's safe — leaving a clear, reviewable trail for the rest.

Debt items found
9
checkout-service
Auto-fixed by Bob
0
via parallel subagents
Test coverage
61%
before scan
Flagged for review
—
major version bump

What Upkeep does

A repository never stays clean on its own. Upkeep runs Bob 2.0 on a fixed cadence, turns whatever it finds into a scored, auditable backlog, and only auto-ships the fixes a developer would have approved anyway.

1

Scan on a schedule

Bob reads the whole repository, not just the latest diff, so debt from six months ago surfaces too.

2

Score before touching anything

Every item gets a risk and effort score. Nothing is fixed until it's been classified.

3

Fix in parallel, verify every time

Safe items go to subagents at once; each fix is re-tested before it's marked done.

Without Upkeep

Debt gets found by accident — during an outage, a slow PR review, or a new hire asking why a function still exists. By then it's expensive to fix.

With Upkeep

Bob scans on schedule, classifies each item by risk and effort, fixes the safe ones in parallel, and hands the rest to a developer with full context attached.

Try it — paste your own code

Drop in a real function or file. Upkeep runs the same kind of quick check Bob does during a scan: what it does, what looks risky, and a plain-language read for anyone newer to the codebase.

Paste something on the left and press "Analyze code" to see its health score, flagged risks, and a plain-language explanation.

Debt pipeline

Every item moves through the same five gates. Press "Run maintenance scan" above to watch Bob move items through live.

01

Detected

9

Bob's scan surfaces every stale dependency, dead branch, and untested path across the repository.

lodash 4.17.11 — known CVE legacyDiscount() unused payment retry untested
02

Triaged

9

Each item is scored for risk and effort before anything is touched.

CVE exposure — high risk duplicate validator — low risk unhandled rejection — medium risk
03

Bob fixing

0 of 7

Subagents work the safe items in parallel, each on its own branch.

Bump lodash, patch call sites Remove 3 dead code branches Add retry-path test coverage
04

Verified

0 of 7

Every fix is re-run against the existing suite before it counts as done.

41 tests re-run, 0 regressions Coverage delta confirmed +27%
05

Shipped

0 of 7

Fixes ship with a changelog; anything out of scope stays visible, not hidden.

7 commits, changelog drafted 2 items held for maintainer review

What Bob found

Nine items from checkout-service, each classified by risk and effort before any fix was attempted.

01

Outdated dependency with an open CVE

lodash 4.17.11 sat three majors behind, flagged in the audit log for months.

Fixed · call sites patched
02

Dead discount code path

legacyDiscount() had no callers left after last quarter's pricing rewrite.

Fixed · removed, tests pass
03

Untested payment retry logic

The retry handler shipped without coverage for its timeout branch.

Fixed · 6 new tests added
04

Duplicate address validation

Two modules validated postal codes with slightly different rules.

Fixed · consolidated to one
05

Unhandled promise rejection

A webhook handler could fail silently under load.

Fixed · error path added
06

Stale feature flag

A launch flag from an old rollout was still being checked on every request.

Fixed · flag and branch removed
07

Inconsistent error logging format

Three different log shapes made the error dashboard hard to query.

Fixed · unified to one schema
08

Framework major-version gap

Upgrading touches routing conventions across 40+ files.

Held for maintainer review

Before and after

Same repository, one scan apart. The log on the right is what Bob reported during the run.

Before
61%
Known CVEs1
Dead code branches3
Open debt items9
After
61%
Known CVEs1
Dead code branches3
Open debt items9
Idle. Press "Run maintenance scan" to start a session.

Time this actually saves

Estimated against a manual review of the same repository by one developer.

Manual audit + fixes
~14 hrs
Upkeep session
~9 min
Developer time returned
13.8 hrs