Skip to main content
Otto reviews a pull request the way a senior engineer would: it reads the diff, explores the surrounding code for context, and posts a native review.

What a review contains

A verdict

A native review: approve, comment, or request changes on GitHub; an approve or wait-for-author vote on Azure Repos.

Inline findings

Comments on changed lines, each with a severity, a title, an explanation, and often a suggested change and a “Prompt To Fix With AI” block.

A summary

A top-level summary of the change and the findings.

Merge confidence

A Merge confidence: 1/5–5/5 score for how safe the PR is to merge.

Severity

Verdict

By default, Otto picks its verdict from its most severe finding:
  • Approve when there are no findings, or only P3 nitpicks. Nitpicks are posted as non-blocking comments with the approval.
  • Request changes for a bug, a security issue, or missing tests for new behavior.
  • Comment for any other P2 concern that should be fixed before merge.
A repository can make Otto stricter or more lenient with the approval policy in otto.yml.

Merge confidence

The score always goes up as a PR gets safer to merge:

Follow-ups and re-reviews

Otto keeps track of the conversation on a PR:
  • When you reply to a finding (to say it’s fixed, explain why it’s intentional, or ask a question), Otto answers in the thread and remembers the context, so it doesn’t raise the same point again on that PR.
  • When a reply or re-review shows that every blocking finding is fixed or refuted, Otto approves. On GitHub, a comment alone doesn’t replace an earlier request for changes; Otto submits a new approval.
  • New commits are reviewed incrementally: Otto focuses on what changed since its last review.

What shapes a review

None of these can change Otto’s review format, its P0–P3 severity scale, or how it scores merge confidence.