AI Atlas

Daily updates on real-worldAI deployments worldwide.

The skills
The harness around them
Methodology & Agents

Agents find it. Harnesses filter it. A human publishes it.

AI Atlas records where AI is actually deployed in the real world — which company, which process, what changed, and what was measured.

Every day, agents search the open web and filter out 85%: announcements, vendor brochures, roundups, anything with no named company or no measured outcome. A human reviewer reads the 15% that survives and decides what is worth publishing — the last 6%.

A repository of real AI deployments, for research, insight and inspiration.

~11,400candidates found in total
1,718passed the agents' daily validation
700published after human-in-the-loop review

Counted from 22 March 2026 to 15 September 2026.

The multi-agent architecture

drag · zoom · select any node
DRAG TO PAN · SCROLL TO ZOOM · SELECT ANY NODEDRAG SIDEWAYS TO EXPLORE · TAP ANY NODE
WHO OWNS IT Ops · Hermes Agent PM · OpenClaw Agent WHAT MOVES candidates survivors discarded reference & feedback

The four principles the whole design rests on

what every other decision follows from
01
One job per stage, and a hard boundary around it

Every stage may do exactly one thing — and is forbidden from its neighbour's.

Search can drop a link that is obviously wrong, but it never opens the article. Validate decides, and never writes. Persist writes, and never decides again. Report only reads. The lines are drawn where they are so that when something goes wrong, it is clear which stage did it. A stage that quietly does its neighbour's job hides its own mistakes.

02
The pipeline may fail; the report may not

A day that finds nothing still says which kind of nothing it found.

Every stage passes something on, even when that something is empty, and a stage with nothing to give does not stop the run. Nothing found means a tool broke. Nothing survived means the day's questions were badly aimed. Everything already on record means the queries have gone stale. If the pipeline simply went quiet, none of that could be told apart from a crash.

03
When in doubt, reject

A missed case is recoverable. A false one is not.

A case that gets missed today can be found again tomorrow. A vendor brochure filed as a real deployment sits in the data, and on the globe, until someone spots it. That trade is on purpose, and it is why more than eight in ten candidates are thrown out on a normal day.

04
Deterministic checks verify the model's judgment

The model is trusted to judge. It is not trusted to be the last word.

Reading the article and weighing it up is the part only the model can do. But it gets things wrong in the same ways over and over — it forgets to translate, it takes a vendor's own product page for a customer deployment. So everything it produces runs through plain mechanical checks before it is written down.

Where a human sits in the loop

nothing publishes itself

The pipeline never publishes on its own authority. Everything it records arrives in an unreviewed state and waits for review.

Cases arrive labelled, not hidden They are visible in the product from the moment they are written, but carry a label saying they are not yet validated.
A reviewer decides, never the pipeline Each case is approved or rejected by hand in the dashboard. Nothing the pipeline writes promotes itself.
The report watches the queue It surfaces the size of the review backlog and hardens its wording as that backlog grows, so the system can say when review has fallen behind.
Rejection is retirement, not deletion A rejected case is kept for history and its source is permanently off-limits, so the same bad article cannot come back next week.
The skills
01
Stage one of four

Search

Produces a list of links worth reading, and is deliberately kept ignorant of what those links say. A searcher that starts forming opinions about content will discard things the validator would have caught, on far less evidence.

Responsible for
  • Deciding which queries today should ask
  • Choosing which tool answers each one, and recovering when a tool goes quiet
  • Discarding links that structurally cannot be a case study
  • Removing duplicates and normalising what survives
Forbidden from
  • Opening an article and reading it
  • Treating a search snippet as if it were the article
  • Repairing a broken link or inventing a missing title
  • Improvising extra queries beyond what the day calls for
3query layers
14searches a day
2retries, then stop

Design decisions

and what each one answers
D1
Three query layers, aimed at three different blind spots

Searching one way finds one kind of case. The layers exist so that no one kind of coverage can quietly collapse.

LayerAsks aboutGuards against
ProcessSpecific business workflows — claims, fraud review, code review, contact centreMissing the ordinary, unglamorous deployments that make up most real adoption
IndustryA different sector each day of the weekThe dataset skewing toward whichever industries publish most loudly
GeographyA rotating set of countries each dayAn atlas that is really just a map of the United States
D2
Every query must name a process, a deployment, and a number

A query that asks only about "AI" returns opinion. The shape that works asks for all three at once: a concrete business process, a word that means the thing is actually running, and a word that implies a measured outcome. That triple is the cheapest stand-in for the call the validator will later have to make properly — between something a company announced and something a company does. Queries that drop any leg of the triple have been measured at a zero survival rate.

D3
Queries rotate daily out of a larger pool

A fixed set of queries stops working after about three days: it keeps finding the same articles, which are by then already on record, and the run's entire output becomes duplicates. Rotation ensures the same question does not repeat for weeks. The choice comes from the date, so the same day always asks the same questions — which matters when you are trying to explain why a particular day found nothing.

D4
Each layer has its own preferred search tool

Originally every query tried the tools in one fixed order, falling through on failure. The effect was that the cheapest tool answered almost everything and the strongest semantic search was never reached at all — it went weeks without being called once. Assigning each layer a primary tool forces all of them into use, and a measured comparison showed that the starved tool produced several times more surviving candidates than the chain it had been buried under.

D5
Fall back on silence, not only on errors

The failure that shaped this rule was a tool hitting its weekly quota and returning that as a successful response containing zero results. Nothing crashed, nothing was logged as broken, and the day simply recorded that the world had produced no AI deployments. Empty is now treated as a failure signal in its own right, alongside rate limits, timeouts and unparseable responses. A rerun through a different tool recovered twenty candidates and a real case that would otherwise have been lost silently.

The retry budget stops at two attempts per query. Beyond that the query is abandoned and recorded as abandoned — a run that takes all day to fail is worse than one that reports a gap.

The skills
02
Stage two of four

Validate

The stage the whole pipeline exists to protect. Everything upstream is cheap and everything downstream is mechanical. This is where judgment happens, and it is adversarial by design: every candidate is marketing until the article proves otherwise.

Responsible for
  • Actually fetching and reading each article
  • Deciding whether it describes a deployment at all
  • Extracting company, place, industry and outcome, in English
  • Recording why each rejection was rejected
Forbidden from
  • Writing anything to the database
  • Inventing a fact the article does not contain
  • Keeping a case whose company cannot be identified
  • Rejecting a source for the language it is written in
10rules, all must pass
85%rejected at validation
2mechanical checks on its output

Design decisions

and what each one answers
D1
Language is a translation problem, never a quality signal

A Chinese power-grid deployment and a Japanese bank rollout are first-class cases. The source may be in any language. The output must be English, so a non-English article is translated, not discarded. A machine check enforces that, because the failure runs both ways: told "output must be English", a model starts throwing away perfectly good foreign-language sources; told "translate everything", it sometimes leaves the original text in place. Both have happened.

D2
The hardest filter is deployment versus announcement

Most of what the web publishes about enterprise AI is a press release about intent. It shares almost every word with a real case study — the same company names, the same "AI", the same "deployed". The distinction comes down to verb tense.

Reject patterns

will enable · is set to · announces a partnership · launches · no metric yet

Accept patterns

deployed at · in production · reduced review time 40% · saved 6 hours per case

D3
Scale is not a use case

"Two hundred thousand employees now have access to an AI assistant" is a real, verifiable, well-sourced fact, and it says nothing about how anyone's work changed. The bar says so explicitly: headcount announcements are not use cases and mean nothing for the atlas. The same company becomes acceptable the moment the article names a process — claims handling, document review, fraud triage — and what changed about it.

D4
A named company, or nothing at all

Anonymous case studies — "a leading European insurer" — are dropped entirely rather than recorded with a blank. A model will be tempted to invent a plausible name, and one fabricated company would undermine every other record in the dataset. Consortiums, alliances, initiatives and project names are likewise not companies. The atlas is a map of who is doing this, and a point on it that names nobody is worse than an empty space.

D5
The model's output is checked by something that cannot be persuaded

After the validator finishes, mechanical checks run over its output looking for the specific ways it is known to fail: untranslated text left in place, vendor press domains accepted as sources, announcement phrasing, roundups and listicles, missing geography. Anything they catch is moved into the rejected pile before persistence sees it. These exist because on two separate days the validator was confident and wrong — once shipping untranslated records, once shipping seventeen vendor pages. They are not optional, and they do not get skipped when the output "looks fine" — looking fine is exactly the failure mode.

The skills
03
Stage three of four

Persist

By this point every judgment about the case has been made. This stage is deliberately mechanical. Its only intelligence is about identity: has this article already been recorded, and does everything the case depends on actually resolve?

Responsible for
  • Recognising an article the atlas has already seen
  • Storing the case whole — its text, not just a link to it
  • Writing it down in a state that awaits review
  • Handing reporting an accurate account of what it did
Forbidden from
  • Reconsidering whether a case is good
  • Promoting anything to published on its own authority
  • Halting the run because one record failed to write
4things must resolve before a case is written
2ways to be already known
0auto-published

Design decisions

and what each one answers
D1
Deduplication ignores whether the earlier record was any good

If an article is already on record it is skipped — even when a reviewer read that earlier record and retired it. That is counter-intuitive but deliberate: retired means someone judged this source invalid. Re-ingesting it would overrule that decision automatically, every week, forever. Reviving a retired case is a manual act, never an automatic one.

D2
A case is stored whole, and keeps a pointer to its source

The record keeps the deployment's full text — five hundred characters at minimum — rather than a link and a headline. Articles rot: they get retracted, paywalled, restructured, or quietly rewritten to say something softer. A case that lives only as a URL is a case that can evaporate without anyone touching the database.

It also makes a specific repair possible. When the article turns out to be poor but the deployment behind it is worth keeping, there is a set procedure: find a better source and attach it, rather than throw the case away and hope the same deployment turns up again.

D3
A case exists only once everything it points at resolves

A use case is not a standalone note. It carries a deployer, a place, an industry and a source, and each has to resolve to something real before the case can be written — a named organisation, coordinates that put it somewhere on the globe, an industry from the closed vocabulary. A field that does not resolve sends the case back. It is never filled with a blank.

A retired case is never revived automatically. It was retired because that article was judged bad, and nothing about a later day makes it good.

D4
New cases arrive unreviewed, on purpose

A case is written in a state that means "awaiting review". It is visible in the product, but labelled as such. That is a deliberate trade: showing it unverified is more useful than hiding it, as long as nobody can mistake it for verified. The pipeline never promotes its own work.

D5
One bad case never takes down the day

A malformed field is corrected and retried. A network failure is retried once. If a case still cannot be written, it is skipped and recorded as skipped, and the run continues with the rest. The stage always hands something onward, even when it wrote nothing at all — because the alternative is a day that ends in silence, and silence is the one outcome the design does not permit.

The skills
04
Stage four of four

Report

The pipeline's contract with its reviewer. The least sophisticated stage and the least optional one: a day that finds nothing still ends with a message, because an absent message means something broke and nobody knows what.

Responsible for
  • Summarising the day: added, already known, failed
  • Showing which tools did the work, so a quiet tool is visible early
  • Listing each new case in a form a reviewer can act on
  • Surfacing the review backlog, and escalating as it grows
Forbidden from
  • Re-opening any article
  • Re-checking content or re-validating a case
  • Recomputing numbers the earlier stages established

The one exception is a counts-only look at the database, just to say how large the review queue has become.

1message a day, always
50pending before it warns
0articles re-opened

Design decisions

and what each one answers
D1
A zero day still gets a report, and says which zero it was

A day can produce nothing in several different ways, and each calls for a different fix. Nothing was searched means a tool is broken. Nothing survived validation means the day's questions were poorly aimed. Everything was already on record means the queries have saturated and need rotating. Collapsing all three into "no results" would throw away the only signal that says what to fix.

D2
The report says when review has fallen behind

Because everything the pipeline records waits for review, the review queue is a real bottleneck — and one the pipeline can see but not fix. So the daily message reports the backlog and changes its tone as it grows, from a note to a warning.

D3
A run is counted only once the message actually lands

The day's metrics are archived after delivery is confirmed, never before. This makes the metrics history mean something precise: every line in it is a run that finished and got reported. A run that produced cases but failed to report leaves no line. That is correct: from the reviewer's point of view that day did not happen, and the gap says so honestly.

D4
Reporting reads the same learnings the searcher does

The observations at the end of each report are written against the running record of what has and has not been working, not off the day in isolation. That shared reference is what turns a daily message into a feedback loop: patterns noticed in reports become notes, notes become retired queries and new rules, and those rules change what tomorrow's search asks.

The harness around them:Quality bar

What counts as a use case, and what only looks like one

Nearly every design decision in the pipeline is downstream of this definition. It is worth stating plainly, because most of what the web publishes about enterprise AI fails it.

The hard numbers
5families of rejection
3tests an advertorial must pass
17rules, run by hand

Where the bar sits, and why

The atlas exists to answer a question that is otherwise very hard to answer honestly: where is AI actually being used, and to do what. Announcements, headcount figures and market reports are abundant and answer none of that. The bar is not conservative by accident — it is what makes the remaining tenth worth anything.

A case qualifies when
  • A named company — a real business entity, not a consortium or a project
  • Actually running, not planned or announced
  • It changes a specific process — claims, inspection, underwriting, triage
  • Something was measured — a percentage, a time, a cost, a rate
  • A substantive article about the deployment, not a product page

A vendor's own writing counts only if it names the customer and reports real numbers. Otherwise it is a brochure with a case study's grammar.

What the bar rejects

Every rejected candidate is recorded with a reason, and those reasons cluster into five recognisable families. Knowing which family dominates on a given day is what tells you whether the problem is the queries, the sources, or the bar.

The five families of rejection
Telling a deployment from an advertorial

A separate rule set, applied by hand over records already stored, decides whether an article that passed every daily gate is reporting a deployment or selling one.

The standard fits in one line: technical detail is acceptable, pure hype is not — a named tool, platform, model or implementation step, not “improved efficiency”. One line proved too loose, so it became three tests that must all pass.

AI technologyIs a specific model, algorithm or tool named?
Qualifies“a bespoke CNN model” · “Azure OpenAI” · “a time-series LLM”
Too vague“uses AI” · “AI-driven” · “advanced algorithms”
Deployment scenarioWhich line, which process, which task?
Qualifies“overhead conveyor line, clip and clamp detection” · “claims processing at a named hospital”
Too vague“improving efficiency” · “optimising operations” · “transforming X”
Anchored numbersIs the figure tied to that scenario?
Qualifies“30 ms processing” · “86% accuracy” · “20 minutes down to 10 seconds”
Too vague“significantly improved” · “high accuracy” · a bare “N% better”

Few numbers, all anchored, beat many that float. The template it exists to catch satisfies none of the three: “X deployed AI to revolutionise Y. The system uses advanced computer vision to detect defects with high accuracy, improving quality and reducing costs.”

The seventeen rules

one pre-check · thirteen verdicts · one disposition · two audits

Runs firstR11
URL health check

Mandatory before R1–R10 are evaluated at all. There is no point judging an article that will not load, and every later rule assumes the page in front of it is the page on record.

then one verdict, from thirteen
Reject7
R1Blocklisted source — subscription walls, unknown aggregators with no editorial team, design portfolios, tool-marketing sites running “case studies” beside tutorials
R2Paid native advertising — a sponsored or brand-studio label, or the vendor speaking inside the article. Numbers do not redeem it
R3Pure hype — business outcomes only — no tool, platform, method or stack named anywhere
R8Synthetic composite — a customer assembled from several, or invented outright; judged by hand in the audit
R10Partnership or MOU — no deployment in the past tense anywhere in the piece
R12Survey or market analysis — research findings wearing a case study's headline
R13Not about AI — the story turns out to be about something else entirely
Accept4
R4Vendor blog with substance — real technical detail, and the customer is named
R5Built and run in-house — a large organisation describing its own system
R6Independent media — reporting with technical detail
R7Public sector or academic — government, university or non-profit deployments
Downgrade2
R9Anonymous customer — the vendor is the only source — kept, confidence reduced
R14Vendor self-publishing — high risk by default, with written exceptions rather than case-by-case argument
and a rejection has somewhere to go
DispositionR15
Archived, never deleted

An advertorial, a dead source or a fabricated record is retired rather than removed. The history stays auditable, and the URL is permanently blocked from re-entering — which is what stops the same bad article arriving again next week.

a separate loop · run against stored cases, not candidates
R16Content drift

What is stored no longer matches what the source says — the article was edited, softened or replaced after the case was recorded.

R17URL now points elsewhere

The link still resolves, but to a different article than the one the case was built from. Alive is not the same as correct.

The harness around them:Rules

A standard agents can follow is a standard written as thresholds

"Good quality" is not executable. Every judgment here had to be turned into something with a number, a list, or a yes-or-no test attached. Without that, each day's run applies a slightly different bar, and the dataset drifts without anyone being able to say when.

The hard numbers
14fields a record carries
4judgements no field can carry
3states the database allows
76industry values allowed

Why it is written this way

the point of the whole exercise

A skill is only as reliable as the loosest thing in it. Tell a model to "reject low-quality content" and it will agree, then apply a different standard on Tuesday than it did on Monday, and nothing on record proves it drifted. Tell it that content is at least five hundred characters, that a summary is at least two hundred, that an industry must come from a fixed list of seventy-six values, that a coordinate is never zero — and every run applies the same bar, every rejection carries a reason code, and an argument becomes a question about a rule rather than about taste.

That is the trade this project made everywhere. The rules below were not written up afterwards. They are the pipeline. Each one exists because something got through without it.

What a record must be

fourteen fields · four judgements

A candidate is not scored. It is admitted or rejected. Most of the rows below only check that a field is filled and within its limit. The last four decide whether the thing is a deployment at all. Every rejection carries a reason code, which is what makes a bad day diagnosable rather than just disappointing.

FieldConstraintThe rule
titleEnglishA brief name for the AI application — not the article headline verbatim.
summary200+ charsDescribes the deployment, not the organisation behind it.
content500+ charsA real use-case description, never marketing copy. A non-English source is translated, never discarded.
URLspecific articleA post, release or case study. Never a homepage, product or pricing page, never LinkedIn, never an academic repository.
company_idmust resolveAn anonymous deployment drops the whole case. Never null, never a generated name, never a consortium standing in for a business.
industry1 of 76Chosen by the deploying organisation's primary business, not by what the AI does.
published_atISO-8601The article's own publication date, read from the page rather than assumed.
countrystandardisedThe canonical country name, not whatever spelling the article used.
citymandatoryWhere the deployment actually is.
continentderivedChecked for consistency with the country, not assumed.
latitude / longitudenever 0 · 999 · nullLooked up from the real city. On a globe a placeholder is not a missing value, it is a visible point in the wrong place.
typeenumDeployment — in real operation, with metrics. Experiment — a pilot. Research — academic or R&D.
source_nameenumMedia, company website, research report or analyst firm.
statuspendingAlways pending on insert. Only a human reviewer moves it from there.
ContaminationjudgementText that is mostly navigation, CTA, footer or cookie banner. Text that opens with a document tag fails immediately. PDFs are allowed; raw extraction artifacts are not.
Generic descriptionjudgementBoilerplate with no named deployment — “leading provider of AI-powered solutions”.
Deployment vs newsjudgementFuture tense, partnership announcements, launches, government initiatives — anything with no measured outcome yet.
Scale announcementjudgementAll four at once: the claim is a headcount, no business process is named, the tool is a general-purpose assistant, no operational metric is given.

Three states, enforced by the database

not a convention — a constraint

The record state is not a string anyone can invent. The database itself allows exactly three values, so a wrong one cannot be written even by mistake.

publishedReviewed and approvedRendered normally, everywhere in the product.
pendingWritten by the pipeline, not yet reviewedRendered, but labelled To be validated — visible is more useful than hidden, as long as nobody can mistake it for verified.
archivedRetired, kept for history and auditExcluded from every frontend surface, and its URL is permanently blocked from re-entering.

Extending that set is explicitly a two-part change: the constraint and the display logic move together, or the product shows a state it does not understand.

The harness around them:Resilience

Designed around the assumption that things go wrong quietly

The pipeline's failure handling was not designed in advance. Almost every rule in it is the scar tissue of a day that went wrong in a way nobody noticed — and every one of those days produced plausible output. Nothing crashed, nothing threw, and the run reported success. That is the hazard of a pipeline built on a language model and a set of external services: the default failure mode is not an error, it is a confident, well-formed, wrong result. So the theme is not "retry harder" but "make the failure visible". The design spends far more on detecting silent failure — empty-as-error, mechanical checks, per-tool statistics, recorded reasons — than on recovering from loud failure, which was never the real risk.

Three standing rules
Fail forward, never halt A stage that cannot do its job produces an empty result and the run continues. Halting would mean no report.
Treat emptiness as suspicious A zero result from a tool is handled as a failure, not as an answer.
Record why, not just what Counts tell you a day was bad. Reasons tell you whether to change the queries, the sources, or nothing at all.

Incidents that became rules

each one failed quietly first
What happenedWhy it went unnoticedThe rule it produced
The same fixed queries ran for days and eventually returned nothing but articles already on recordThe run looked healthy — searches succeeded, candidates arrived, they were simply all duplicatesQueries rotate daily out of a much larger pool, so a question is not repeated for weeks
A search tool hit its weekly quota and returned an empty successNothing errored. The day was recorded as a day with no AI deployments in the worldEmpty results trigger a fallback to a different tool, and the substitution is recorded
The strongest search tool went weeks without being calledA global fallback order meant the first tool almost always succeeded firstEach query layer has its own primary tool, so all of them stay in use and stay measurable
Untranslated records reached the datasetThe validator was confident it had translated themA mechanical check scans the output for untranslated text before anything is written
Seventeen vendor pages were recorded as deployments in one dayEach one individually read like a case studyA second mechanical check screens for vendor domains, announcement phrasing and roundups
The review backlog was reported as far smaller than it wasThe count silently stopped at the first page of resultsBacklog figures are counted at the source rather than tallied from a fetched list
The harness around them:Knowledge

Who owns which decision

The pipeline's behaviour is not spread across code — it is written down in a set of documents, each of which is authoritative for one kind of decision. Select any of them to see what it decides and who reads it.

Stage definitions

one per stage

Shared standards

read by more than one stage

Product & codebase

the side that is built, not run
Results

Six months of use cases, and two filters

April through early September, read from the database itself and from the pipeline's own run log. Two things are worth separating: what the pipeline discards before writing a case down, and what review discards afterwards. Both are large, and only the first was designed.

Use cases in the database
1,718recorded all-time
1,560recorded since April
700published after human-in-the-loop review
0awaiting review

Counted at the source on 15 September 2026.

Use cases recorded, April to September

from the database
Published after review Archived after review

Everything that survives all of this ends up on one map.

Explore AI Atlas