Free and open sourceMade for OpenStreetMap volunteers

Every flagged edit deserves a second opinion.

Changeset Second Opinion lays out the evidence, shows every answer and drafts the kind reply, so the people who look after the map can do it without burning out. You decide. You post.

Reads the map. Never changes it.

  • Worth a lookA library, goneMapped for 6 years
  • EvidenceA brand new accountJoined 3 days ago
  • Evidence“fix names”The comment, next to the changes
  • DecisionYour callA person decides and posts
An illustration with invented data, drawn to show how the evidence for a flagged edit sits on the map.

What it reads for every flagged edit

The account and its ageThe edit commentFeatures that were deletedEvery tag that changedWhere and how bigThe discussionThe editor usedWhat could not be fetched

New here?

The map belongs to everyone. So does looking after it.

  • OpenStreetMap

    A free map of the world, drawn by volunteers and used by apps, delivery services and emergency teams. Anyone can add a road, fix a name or draw a building.

    What is OpenStreetMap

  • A changeset

    Each time a mapper saves their work, OpenStreetMap keeps one changeset: a bundle of edits with a comment, a time and an author. It is the unit a reviewer looks at.

    About changesets

  • A flagged edit

    Tools such as OSMCha and MapRoulette flag changesets that look unusual. Most are honest mistakes by new mappers. Someone still has to check, and that is where this tool helps.

    See OSMCha

The problem

Flaggers hand you a queue. They do not hand you understanding.

Every day, volunteers open edits that something has flagged. Most are honest mistakes. A few need real attention. Telling them apart means five tabs, a pile of tag differences and a guess at what the mapper meant. Then comes the hard part: finding kind words for a stranger.

That is a lot to ask of someone on a Tuesday night. So we built the second pair of eyes.

How it works

From flag to reply on one calm screen.

An illustration on invented streets. The ten readings are copied from a real run on changeset 188909786.

  1. 01

    See the whole story

    The comment, the account, the place, the counts and every tag that changed, on one page, with a plain list of anything we could not fetch.

  2. 02

    Ten honest questions

    Was something old deleted? Is the account brand new? Each answer is shown with how sure the tool was. When it cannot tell, it says so, and that never raises the alarm.

  3. 03

    You write, you post

    A friendly draft is ready to edit and copy. The tool can read the map and can never change it, so posting is always your move.

The decision model

A small model that gives a reading, not a paragraph.

Most AI tools hand a reviewer a wall of prose and ask for trust. The Strands Decider 2B does a different job. It reads the evidence for one changeset and answers ten fixed yes or no questions, each with a probability. A reading is a number you can compare, sort and challenge, and no language model is asked to guess what the edit meant.

Evidence in

  • The edit comment
  • The account and its age
  • Features that were deleted
  • Every tag that changed
  • The discussion

Strands Decider 2B

654 ms of model time

Ten readings out

  • An old or heavily edited feature was deleted0.75 yes
  • The changeset comment matches the edits0.73 yes
  • There is enough evidence to judge0.65 yes
  • New or changed tags follow ordinary OSM conventions0.33 no
  • The account is new or has very few changesets0.10 no

Five of the ten, from a real run on changeset 189806470, 20 October 2026.

Why it helps a reviewer

  • The same shape every time

    Every case gets the same ten questions, so two cases can be compared side by side and a pipeline can act on the answer.

  • Quick and light

    Median 654 ms of model time per changeset on one small GPU, measured on the 15 demo cases. It also runs on a CPU, with no cloud bill per case.

  • Open about doubt

    26 of 150 readings in the demo set came back as cannot tell. That is the model saying so. It never raises the alarm.

A general chat model can write a convincing paragraph about any edit, including a wrong one. The Decider is tuned for decisions like these, shows every probability and has no way to write to anything. The writing model comes in later, and only when you ask.

The path of one edit

From a flagged changeset to your reply.

  1. Read

    Public evidence is fetched, read only.

  2. Decider 2B

    Ten readings, each with a probability.

  3. Rules

    Counts, ages and coverage set the lane.

  4. You decide

    Lanes only change the order. Nothing is hidden.

  5. Haiku 4.5

    Drafts a kind comment, only when asked, on Amazon Bedrock.

  6. You post

    You edit it and post it yourself.

Show your working

Every answer sits next to what it was shown.

Nothing is a black box: the evidence and the reading appear side by side.

nameIkeja RdIkeja Road
old_nameIkeja Street
surfaceunpaved

Receipts

A receipt for every verdict.

Share a link and anyone can see the facts, the rules that fired, how much of the edit the evidence covered and which settings were in force. No names, no drafts, no guesswork.

Decision receipt for changeset 900000000002

Review suggestedModel is unsure

Analyzed on 2026-10-17 with strands-decider-2B.

What the checks read

  • The account is new or has very few changesetsYes0.93
  • An old or heavily edited feature was deletedNo0.05
  • New tag values look like nonsense, a test string or a nameNo0.12
  • The changeset comment matches the editsUnknown0.41
  • New or changed tags follow ordinary OSM conventionsUnknown0.38
  • The edits claim a real-world change that tags cannot confirmUnknown0.57
  • The discussion names a survey, imagery or other sourceNo0.04
  • One tag key was changed on more than 20 elementsNo0.03
  • The evidence covers all deletions and most modified elementsYes0.90

Each fact is read as no, unknown or yes. Unknown is the cautious reading.

Rules that fired

No rule fired.

Coverage

Coverage score 1.00. 2 of 2 elements have details.

Configuration sha256:01ae6fdd

OpenStreetMap contributors · Open Database License 1.0

An example receipt built from invented data, so the readings are illustrative and not a live decision.

Our promises

Three things it will not do.

  • It never edits the map

    It can only read. The rule is enforced in code, and the build fails if that ever changes.

  • It never hides a case

    Cases are put in order, never buried. Every queue is visible and counted, and nothing closes by itself.

  • It never decides for you

    A suggestion is a suggestion. Nothing is flagged, closed or posted unless a person does it.

For communities

Tuned to how your community works.

Every community looks after the map in its own way. Pick a pack that fits yours, such as a warmer welcome for newcomers or closer scrutiny, and adjust it from your own reviewers' decisions. Nothing changes unless an admin applies it.

How packs work

Invite-only while in review.

Choose a pack

The balanced starting point. A good place to begin and to compare against.

How it thinks

Two models, each with one small job.

A small open model answers the questions. A writing model only helps when you ask for a comment. Neither one decides anything for you, and both are named here so you can look them up.

  • Answers ten yes or no questions

    Strands Decider 2B

    A compact open model that reads the evidence for one changeset and answers each question with a probability for yes, no and cannot tell. It runs on its own, and every probability is shown to the reviewer.

    Model on Hugging FaceSource code

  • Drafts a comment, only when asked

    Claude Haiku 4.5 on Amazon Bedrock

    Writes a short, kind first comment from the evidence you already see. You edit it and post it yourself. The tool never posts for you.

    Amazon BedrockClaude Haiku

  • Keeps the drafting step tidy

    Strands Agents

    An open source toolkit for building agents. It runs the drafting step and keeps it to one clear tool.

    Strands AgentsOn GitHub

Two ways to use it

In the browser or on the command line.

Reviewers use the web app. Whoever runs a workspace for a community can also use the command line. Both read the same data.

  • For reviewers

    The web app

    • Browse the queue without signing in
    • Sign in with OpenStreetMap (read only) or an invite code
    • Ask for a draft, edit it and record what you decided
  • For whoever runs it for a community

    Workspaces and admins

    • You name the admin's OpenStreetMap user id once, in one server setting. Only that account can claim a new workspace, in one confirmed step
    • Invite codes, packs, branding and an export, all in Settings
    • After that, no command line is needed
  • For developers and operators

    The command line

    • cso seed, api and worker run the whole stack locally
    • cso record saves any changeset as a replayable case
    • cso eval and cso calibrate measure and tune it
$ uv run cso seed
seeded 15 new and 0 existing cases (15 snapshots, 15 runs)
$ uv run cso api
Uvicorn running on http://127.0.0.1:8000

How it is different

It does not replace your tools. It explains their output.

  • Flagging tools such as OSMCha and MapRoulette

    Tell you which changesets to look at.

    Shows why one matters: ten readings, the rules that fired and how much evidence was fetched.

  • General chat assistants

    Write fluent prose, with no promise it is right.

    Gives structured readings first, a draft second, and a person edits and posts every reply.

  • Dashboards and counters

    Show how many changesets there are.

    Keeps a receipt for each verdict, so a decision can be shared and checked later.

Straight talk

What it can do today, said plainly.

We tested the tool on 60 edits. The answer key was written by an AI, not by people, so please read the results as a first look and not as proof. The full scorecard, with every caveat, is public.

Read the scorecard

Open source

Built in the open, for everyone who looks after the map.

Changeset Second Opinion is free software under the Apache-2.0 licence. Read the code, run it for your own community, suggest a change, or tell us what would help you most.

  • Free to use, change and share
  • Works on sample data in minutes
  • Your community sets its own tone and cut points

Who built it

Made by Yogesh Selvarajan.

One developer, built for the AWS Agent Experience Hackathon, in the track for the Strands Decider. Say hello, send a suggestion, or tell us how your community reviews edits.

Give the next flagged edit a second opinion.