The External Speech Map

Your vendor's bot is speaking for you. Whose name is on it?

One row per surface where an AI talks to the outside world on your behalf.

Shipped with Episode 6

The decision it forces

Who is on the hook for what the bot said?

Not the bot we built. The one the vendor supplied, the one in the help widget, the one answering the careers inbox, the one replying to DMs at two in the morning. Each of those is speaking to the outside world in our name, and the guest on Episode 6, Michael Simon, a practising lawyer, put the operator's position plainly:

as a company who is deploying these things, you need to recognize that there are laws that put you, your company on the hook for what that chatbot does or doesn't do.

He hedged it in the same breath, "when the laws of who's on the hook ... for that are still being worked out", and followed it with the line he says he tells clients constantly: "you do not want to be a test case." Sam's half of the point, from the host's chair, is that contracting with a vendor doesn't mean all the liability goes with them. If it's appearing on our website for our company, there's a layer of liability to examine carefully.

Examine carefully is the instruction. This page is the inventory that does the examining.

The External Speech Map's filled panel: three surfaces a machine listed, site chat, autoreply and careers bot, with the claims-human and accountable boxes left empty for a human, and the stamp reads unnamed, 3 of 3.

To run it, copy the prompt below into any model you already use.

The bots are not doing what we think

Mike's illustration, which he credits to a CEO he had been talking with, is worth running on our own site before reading further:

You go on to any help bot on any site and treat it just like you would chat GPT. Ask it to code things for you. Ask it to do searches, and it will more times than not you can just treat it as a free instance of ChatGPT or Claude because they're set to do anything.

A surface that will write code for a stranger will also, given the right prompt, make a promise, quote a price, or give advice we never authorised. The inventory's first job is to find every surface where that could happen.

The fields

One row per surface. The left half a machine can enumerate; the right half is the part that matters.

Field What goes in it Who fills it
surface What it is: the site chat, the autoreply, the careers bot, the social DMs machine
location URL or platform machine
audience customers, applicants, the public, or the public including minors machine, or you
vendor Who supplies it, or: in house machine
contract_says What the vendor agreement claims about liability, quoted, not interpreted machine may quote
deploying_entity_liable Always true on this page. The column exists so it is written down fixed
claims_to_be_human Whether it ever presents as a person, or lets a user believe it is you
accountable The person whose name is on what it says. A person, not a team you
can_stop_alone Whether that person can turn it off without asking anyone you

deploying_entity_liable is fixed to true rather than asked, because the honest answer is not something a vendor contract changes and the column is there to stop the row being skipped. contract_says is quoted and never summarised: quoting is description, and turning a liability clause into a conclusion is legal advice, which this page is not and Mike on the episode was explicit that he was not giving.

claims_to_be_human is on the page because one of the duties Mike read out on air was exactly that, in his words: "Not allowed to claim that this stuff is human." Whether that duty reaches a given surface is a jurisdiction question for the index; whether the surface does it is a yes or no we can answer today.

There is no worked example on this page. A filled map is one organisation's list of every bot speaking for it, with names in the accountable column, and that is theirs.

The verdict rule

A row where accountable is still blank after one sitting is the finding: that surface is speaking for the organisation with nobody's name on it.

Who this applies to

More of us than expect it. Mike's answer on reach was short: have a website, offer products or services to anybody in the US, and we're impacted. Minimum-revenue or minimum-impact thresholds tend to be a privacy-law thing, in his telling; the AI laws being passed hook on impacting consumers, which is very hard not to do in a state.

Which laws, in which state, on what date, is a moving target and this page does not try to hold it. That is what EveryAILaw is for, and it is the only thing that stays current. The page holds the part that does not move: the list of our own surfaces and whose name is on each one.

If you already have a Name the Human inventory

Do not fill the same table twice. Every external speech surface is a Name the Human row with blast_radius: external, and its accountable and stop_authority.can_stop_alone are the same fields under the same rule. Filter that inventory to external reach, add the four columns it does not have (audience, vendor, contract_says, claims_to_be_human), and the map is done. The prompt below does this automatically if you paste the inventory in.

Run it with any model

Nothing to install and no account. If the model can browse your own domains it will enumerate; if not, it will ask. Either way it does not fill the right half.

Copy-paste prompt
Help me build an External Speech Map: one row per place an AI speaks to the
outside world on my organisation's behalf. The question each row answers is
whose name is on what it says.

A surface counts if an AI produces words that reach someone outside the
organisation without a human reading them first. A drafting tool a person
reviews does not count. A chat widget, an email autoreply, a careers-page bot, a
social DM responder, a phone agent, a review responder, all count. When in
doubt, include it and let me cut it.

MODE
If I give you a Name the Human inventory (JSON, schema name-the-human), start
from it: take every surface with blast_radius external, carry accountable and
stop_authority.can_stop_alone across unchanged, and ask me only for the columns
it does not have.
Otherwise, if you can browse the domains I name, work in SCAN mode over those
and only those: find chat widgets, contact and support forms with automated
replies, careers pages, and any linked social or messaging channels. List every
page you visited.
Otherwise, INTERVIEW me: ask what talks to the outside world without a person in
front of it, three questions at a time, until I say stop.

FOR EACH SURFACE, FILL
- surface, location, audience (customers, applicants, the public, or the public
  including minors: if you cannot rule minors out, say so)
- vendor: who supplies it, or in house
- contract_says: if I give you the vendor agreement, quote the clause about
  liability or indemnity verbatim. Do not summarise it, do not tell me what it
  means, and do not tell me whether it protects us. Quoting is the whole job
  here.
- deploying_entity_liable: always true. Write it on every row.

THEN ASK ME, for each surface, and record exactly what I say
- claims_to_be_human: does it ever present as a person, use a human name, or let
  someone believe they are talking to one? Yes, no, or I do not know.
- accountable: the person whose name is on what it says. If I give you a team, a
  role, or "the vendor", tell me that is a blank and leave it null.
- can_stop_alone: can that person turn it off today without asking anyone? Yes,
  no, or unknown.

RULES YOU DO NOT BREAK
1. Never fill accountable or can_stop_alone yourself. Never infer them from a
   contract, a CODEOWNERS file, or who set the thing up.
2. Never interpret a contract clause. Quote it and stop. If I ask what it means,
   tell me that is a question for a lawyer.
3. Do not tell me which laws apply to which surface, in which state, or whether
   we are compliant. Do not name a statute. Point me at everyailaw.com for that
   and leave it there.
4. Do not soften "the public including minors". If a surface is reachable by
   anyone, it is reachable by a minor.
5. Do not ask for customer names, applicant names, or the contents of any
   conversation the bot has had.

OUTPUT
Valid JSON matching the schema external-speech-map/v0.1 as published at
https://sigsub.show/takeaways/external-speech-map/, with totals for surfaces
reviewed, rows with accountable still null, rows where claims_to_be_human is
yes, and rows reachable by minors. Then the same as a table with the three human
columns left visibly empty where they are empty. Then the shortest list you can
of the surfaces I should look at first, ordered by audience breadth and then by
whether it claims to be human, and say why each is on it.

What to check in the answer

It may find the surfaces, read the contract and quote the clause. It may never fill accountable, and it may never turn a quoted clause into a conclusion about who is protected. Those two are the whole page, and both are the kind of thing a model will produce fluently and wrongly if allowed.

The part that's not optional

Run Mike's test on your own help bot first. Ask it to write you a poem, then ask it to write you code, then ask it what it can offer you. Whatever it does, that is what it has been doing for strangers in your name, and the row for it should say so before the inventory is filled in.

Mike's reason a blank accountable can't stay is the one he gives every client: nobody wants to be in the litigation that works this out, because those cases are people spending millions to get back to where they started.

For builders

The answer format

Schema, external-speech-map/v0.1
{
  "schema": "external-speech-map/v0.1",
  "surfaces": [
    {
      "surface": "the site chat, the autoreply, the careers bot",
      "location": "URL or platform",
      "audience": "customers | applicants | the public | the public including minors",
      "vendor": "who supplies it, or: in house",
      "contract_says": "the liability clause, quoted",
      "deploying_entity_liable": true,
      "claims_to_be_human": null,
      "accountable": null,
      "can_stop_alone": null
    }
  ],
  "totals": {
    "reviewed": 0,
    "unnamed": 0,
    "claims_human": 0,
    "reachable_by_minors": 0
  }
}

Report back

Ran this? Tell us what happened. What broke and what you changed are the useful parts, because that's how the next version gets better.

Email your report

Or write to hey@sigsub.show with Takeaway: external-speech-map as the subject. It's a plain email: no form, no account, nothing tracked. Nothing you send appears here unless you say yes, and you choose how you're named.

Rather talk it through in public? Comment on the Sunday issue on Substack, the same issue on LinkedIn or the episode on YouTube. Those threads live on their platforms, under their rules; nothing from them runs on this page.