Skip to content
Spec docket · Anadolu
Human gates armed

A junior on the thread. It writes the failing test, then waits.

A bug in your company's chat becomes a tested pull request.

Someone mentions Anadolu in Teams, Slack, or the Mattermost workspace we host if you have neither. It reproduces the bug, then waits. A project manager authorizes the fix. An approver accepts the pull request. Your pipeline deploys.

Intake

Teams / Slack

Proof

One failing spec

Gates

Two people decide

Microsoft Teams/#billing
Channel synced
Frame A · IntakeReporter
10:14 AM
@Anadolu Checkout fails when the coupon is expired. It should show the message, not a 500.
Reproduction ready
Frame B · Gate 1AAnadolu
Just now

Reproduced. One failing test. No production code changed.

Sandbox isolation verified. Nothing written to the product.

Failing test
coupon.expired.spec.tsFail (1)
Screenshot evidenceStatus 500

Actual

POST /api/checkout → 500

Expected

The expired-coupon message

Awaiting a project manager

Gate 1. Authorizes the fix. Does not merge.

On the record

More than 100 companies trust the two gates.

Companies
100+
A mapped channel on Teams, Slack, or Mattermost
Pull requests
2,000+
Opened since 2024. A person accepted each one that merged.
Bugs resolved
1,600+
The reports that made it through both gates.
Satisfaction
100%
Teams who finished a quarter asked to keep it.

Protocol pipeline

The lifecycle

Report, reproduce, authorize, fix, accept

Chat intake

1. Report

Someone writes @Anadolu in a mapped channel, such as #billing or #incidents. An unmapped channel, a private message, and any thread that was never mapped do not open a case. The mention is the only intake.

No channel scanning. Only an explicit @Anadolu mention.

From the people who click Approve

They still review the pull request. They just don’t reproduce it.

“The boring one was the pick list. It printed blank once the order went past forty lines. Someone in the warehouse would say so, and an engineer would spend an hour proving it. Now they mention Anadolu. I approve the failing test or I don’t. We closed nine of those this year. Nobody is celebrating. People are just less annoyed.”

The warehouse channel stopped being the place engineers dreaded opening on a Monday.

Amina Yusuf

Engineering manager, Pallet & Co.

Warehouse · Teams · #picks

“I don’t want something rewriting the billing service. I want the boring reproduction off my plate. My satisfaction went up because I’m not the person clicking through the same expired-invoice bug for the fourth time. I still read the pull request. That’s the point.”

A team of six. The mundane bugs are no longer the first hour of the day. We still argue about the real ones.

Jonas Adler

Staff engineer, Brack & Wren

Billing · Slack · #incidents

“We were nervous about anything that opens code. What the team actually talks about is that it stops. A bad row in a sheet stays in the thread. Developers stopped getting the mundane ones, and that’s why they like it. Everyone who used it this year said they’d be annoyed if we turned it off.”

That was the whole survey. One hundred percent asked to keep it.

Leila Okonkwo

Head of engineering, Sable Freight

Dispatch · Mattermost · #exceptions

Architectural confinement

Non-negotiable boundaries

The agent never holdsRule 01

A GitHub push key, a deploy button, or the right to edit schema, migrations, CI, dependencies, or secrets.

✕ No git push key

✕ No deploy button

✕ Schema locked

✕ Secrets blocked

The company decidesRule 02

Gate 1 spends the fix. Gate 2 accepts the merge. A category can later earn the right to skip Gate 2. It cannot skip Gate 1. The pilot leaves that skip off.

Pilot

Gate 1 skip off · Gate 2 skip off

Deterministic intake filter

When it is not a code bug, no sandbox starts.

What it refuses →