Get the reviews that fill next week: 10 AI skills for your reputation

listing-consistency

the same name, address and hours everywhere, so you stop losing calls

How the two work together

Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.

Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.

No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.

Prompt for Claude

---
name: listing-consistency
description: Builds one master record of a hospitality business's name, address, telephone number and hours, compares every place that information is published against it, lists every difference with the page it was found on, and writes the corrections and the structured data so the same answer appears everywhere. Use when a customer says they rang and nobody answered, when a delivery platform shows hours the kitchen has never worked, or before a new site, a new platform or a change of opening times goes live.
---

# The same name, address and hours everywhere, so you stop losing calls

You give this the venue's legal and trading names, its address, the number that rings inside the building, the hours somebody actually works, and a list of every place that information is published. You get back one master record, a table of every place checked with the exact difference found on each, the corrections in the order they must be made, the structured data for the venue's own site, and a dated list of what could not be corrected and who owns it. It will not guess an address it cannot verify, and it will not decide which of two conflicting phone numbers is the right one.

## What it does

1. **Write the master record first and get it signed off, because everything after this is a comparison against it.** Eleven fields and no more: legal entity name, trading name exactly as on the sign, the registered number and the part of the United Kingdom of registration if there is a company, address line one, address line two, town, postcode, the telephone number in full international form, the website address, and the seven sets of regular hours. One field, one value. Where the owner supplies two answers, the file records both and stops, because a master record containing a maybe produces corrections in two directions and undoes itself within a month.

2. **Separate the trading name from the registered name, because both are required and in different places.** A company must show its registered name at "any such location at which it carries on business" under regulation 22 of the Company, Limited Liability Partnership and Business (Names and Trading Disclosures) Regulations 2015, and regulation 24(2) is blunt about the web: "Every company shall disclose its registered name on its websites." Regulation 25 adds, for business letters, order forms and websites, "the part of the United Kingdom in which the company is registered", "the company's registered number" and "the address of the company's registered office". Failure is an offence under regulation 28, with a fine "not exceeding level 3 on the standard scale" and a daily default fine after that. So The Crown Inn trades as The Crown Inn and its website footer says Marlow Taverns Limited, registered in England and Wales, number 08123456. Both are true, neither replaces the other.

3. **Check the name field on each platform against the platform's own rule, not against the others.** Google requires the real-world name, "as used consistently on your storefront, website, stationery, and as known to customers", and lists what may not be added: taglines, store codes, capitalised words, hours, phone numbers, web addresses, service words, location words and containment words. So the correct entry on Google is not a compromise between what the sign says and what a booking platform allows. Record for each platform the name as published, the name it should hold, and the platform rule that decides it, and mark a difference that the platform forces rather than calling it an error.

4. **Write the address once, in one format, and stop the variants breeding.** Decide upper or lower case, whether the street type is abbreviated, whether the county appears, and the exact postcode spacing, then apply that everywhere. Google's own constraints go in the same row: "P.O. boxes or mailboxes located at remote locations aren't acceptable", "Do not include information in address lines that doesn't pertain to your business's physical location, like URLs or keywords", and the physical test a pop-up fails, "Businesses showing their address on Google should maintain permanent fixed signage of their business name at the address."

5. **Put one number everywhere, and prove it rings in the building.** The master record holds the number in full international form so the same digits can be compared across platforms that format differently. Google's rules are the strictest and the useful ones to hold everywhere: the number must "connect to your individual business location", must be "under the direct control of the business", must not be a premium number "regardless of the rate charged to the caller", and must not redirect. A tracking number on a delivery platform and a mobile on a booking site are not a consistency problem to be tidied later, they are two different businesses as far as a customer comparing two tabs is concerned. Ring every number on the list from outside the building and record who answered and in how many rings.

6. **Set the hours using the rule for this trade, then set the exceptions.** Google's industry rule decides the regular hours for a restaurant: "Use the hours when diners can sit down and dine in your restaurant. Otherwise, use takeout hours." Kitchen, bar and delivery times go in More hours, which "should be a subset of your primary hours". Then the exceptions, which is where the money is lost. A closure of up to six days is special hours; Google's line is "If your business is closed for 7 or more days in a row, or will be closed for an unknown period of time, you should mark your business as Temporarily closed", and for the entries to appear at all "set your business hours to 'Open with main hours'". Confirm the ordinary holidays as well as the unusual ones, because Google advises it directly: "It's a good idea to confirm your hours for official holidays, even if they're the same as your regular hours."

7. **Enumerate every place the information is published, including the ones nobody owns any more.** The list is longer than an owner expects: the Google Business Profile, the venue's own site including the footer, contact page and every landing page, each booking platform, each delivery platform, the online ordering system, the table-booking widget, the aggregator and directory listings, the local authority or tourism listing, each social profile's about section, the email signature, the printed menu and the voicemail greeting. For each one record the exact value found and the date checked. An outdated listing on a site nobody has the login for is still the answer a customer gets, so it goes on the list with the owner named as unknown rather than being dropped.

8. **Publish the hours and the contact details as structured data on the venue's own site, in the format Google documents.** LocalBusiness requires `name` and `address` and recommends `telephone`, `url`, `geo`, `priceRange`, `menu` and `openingHoursSpecification`. The mechanics matter because a wrong value here is worse than none: to show a business open all day "set the open property to '00:00' and the closes property to '23:59'", to show it closed all day "set both opens and closes properties to '00:00'", and for hours past midnight "define opening and closing hours using a single OpeningHoursSpecification property", which is how a Saturday service running to 3am is expressed. Seasonal closures use `validFrom` and `validThrough`. Coordinates need "at least 5 decimal places".

9. **Order the corrections by who sees them, date each one and record what you could not change.** Fix the Google profile and the venue's own site first, then whichever booking or delivery platform takes the most orders, then the directories. One row per correction: where, the old value, the new value, who made it, the date, and the date it was read back as live. The last table is the honest one: every listing that could not be corrected, why, whose account it sits in and what has to happen to get it, whether that is a password reset, a claim process or an email to a directory. Set a recheck date, because a platform that syncs from another platform will reintroduce an old address weeks later without telling anyone.

## Then it checks

1. The master record holds exactly one value in every field, and any field where the owner supplied two answers is recorded as unresolved rather than a choice being made for them.
2. Both the trading name and, where a company exists, the registered name with the registered number, the part of the United Kingdom of registration and the registered office address are present, and the website is confirmed as carrying the registered particulars.
3. Every place on the enumerated list carries a value found, a date checked and a named owner, with unknown recorded as unknown rather than left blank.
4. Every telephone number published anywhere was dialled from outside the building, with who answered and the number of rings recorded, and no published number is a redirect or a premium number.
5. Every regular and special hours entry traces to the rule that produced it, and every date in the next twelve months when the hours change appears with a set or not-set flag.
6. The structured data on the venue's own site matches the master record field for field, expresses closed days and after-midnight service in the documented form, and was validated rather than assumed.

Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop.

## Rules
- Public information only.
- Never invent a fact, a number or a quote.
- Anything sent in someone's name says whose name it is. A correction request sent to a directory or a platform goes out over the name of the person who authorised it.
- Never resolve a conflict between two values the owner has supplied. Record both, name the fields they came from and stop. Choosing which telephone number is correct is a decision about who answers the phone, not a formatting question.
- Never publish structured data that says something the site does not. Marked-up hours that disagree with the hours on the page are a misrepresentation to a customer first and a structured data problem second.
- Never add a town, a dish, a search term or a superlative to a business name, an address line or a category on any platform to be found more easily. Google names this as grounds for suspension and the other platforms have their own versions.
- Never record a correction as done because it was submitted. It is done when the new value has been read back from the live listing on a stated date, and a platform that rejected the change is recorded with the wording it gave.
- Never treat a listing nobody can access as harmless. It is the answer a customer gets, and it goes on the list with the route to reclaiming it.
- This output is a working document prepared for the owner to check against their Companies House record, their lease, their telephone contract and their platform agreements before it is relied on. Where it touches company disclosure duties, it prepares the question for the owner's accountant or solicitor. It records published information against those duties; it is not advice that the business complies with them.

## Built from
- The Company, Limited Liability Partnership and Business (Names and Trading Disclosures) Regulations 2015, SI 2015/17, Part 6, https://www.legislation.gov.uk/uksi/2015/17/made, made 7 January 2015 and in force 31 January 2015, read 16 September 2026: regulation 22 on displaying the registered name at business locations, regulation 24(2) on websites, regulation 25 on the further particulars and regulation 28 on the offence and the level 3 fine, all in step 2.
- Google, "Guidelines for representing your business on Google", Google Business Profile Help, https://support.google.com/business/answer/3038177, no publication date shown on the page, read 16 September 2026: the real-world name rule and the list of banned name elements in step 3, the address constraints and the permanent signage requirement in step 4, the telephone rules in step 5, and the restaurants hours rule and the More hours subset rule in step 6.
- Google, "How to set Special hours", Google Business Profile Help, https://support.google.com/business/answer/6303076, no publication date shown on the page, read 16 September 2026: the six day limit, the temporarily closed threshold, the "Open with main hours" requirement and the advice to confirm ordinary holidays, in step 6.
- Google, "Local business (LocalBusiness) structured data", Google Search Central, https://developers.google.com/search/docs/appearance/structured-data/local-business, last updated 8 September 2026, read 16 September 2026: the required and recommended properties, the all-day and closed-all-day encodings, the past-midnight single specification, the seasonal validFrom and validThrough properties and the five decimal place coordinate precision, all in step 8.

Prompt for Codex

# listing-consistency

## You are given
The signed-off master record for one UK hospitality business: legal entity name, trading name, registered number, part of the United Kingdom of registration, registered office address, address line one, address line two, town, postcode, telephone number in full international form, website address, and the seven sets of regular hours. The enumerated list of every place that information is published, each with a label saying what kind of place it is and who owns the account. For each of those places, the values as actually found, transcribed exactly as they appear, with the date each was checked. The dial log for every published telephone number, with who answered and the number of rings. The list of dates in the next twelve months when the hours change. The formatting decisions already made by Claude for the address, the name and the telephone number. And the corrections Claude has written, in the order they are to be made. You compare, count and record. You do not choose between two values, you do not reformat anything, and you do not write a correction.

## Produce
Write into a `./listing-consistency-output/` folder:

1. `master-record.csv` with these columns in this order: `field`, `value_verbatim`, `source_document`, `signed_off_by`, `signed_off_date`, `unresolved`. `field` is exactly one of `legal_entity_name`, `trading_name`, `registered_number`, `part_of_uk_registered`, `registered_office_address`, `address_line_1`, `address_line_2`, `town`, `postcode`, `telephone_e164`, `website`, `hours_monday` through `hours_sunday`. `unresolved` is `yes` where more than one value was supplied, and every `yes` row goes in `gaps.md` with both values recorded.
2. `listings.csv` with columns: `listing_ref`, `place_type`, `url_or_location`, `account_owner`, `date_checked`, `name_found_verbatim`, `address_found_verbatim`, `postcode_found_verbatim`, `phone_found_verbatim`, `phone_found_e164`, `hours_found_verbatim`, `website_found_verbatim`. `listing_ref` is L001 upward. `place_type` is exactly one of `Google Business Profile`, `own website`, `booking platform`, `delivery platform`, `online ordering`, `directory`, `local authority or tourism listing`, `social profile`, `email signature`, `printed menu`, `voicemail greeting`.
3. `differences.csv` with columns: `listing_ref`, `field`, `master_value_verbatim`, `found_value_verbatim`, `match`, `difference_type`, `platform_rule_forces_it`, `correction_supplied`. `match` is `exact`, `differs` or `absent`. `difference_type` is exactly one of `spelling`, `capitalisation`, `abbreviation`, `punctuation or spacing`, `missing element`, `extra element`, `different value`, `not applicable`. `platform_rule_forces_it` is `yes` or `no`. One row per field per listing, every field, including the ones that match.
4. `phone-dial-log.csv` and `hours-calendar.csv`. The dial log has columns: `listing_ref`, `number_dialled_verbatim`, `number_e164`, `date_dialled`, `answered_by`, `rings_to_answer`, `is_premium_number`, `redirects`, `matches_master`. The last three are `yes` or `no`, and every distinct number published anywhere appears at least once. The hours calendar has columns: `date_or_weekday`, `hours_type`, `opens`, `closes`, `closed_all_day`, `listing_ref`, `set_on_listing`, `date_set`. `hours_type` is exactly one of `regular`, `special`, `more hours`, `temporarily closed`, times are 24 hour `HH:MM`, and every supplied date in the next twelve months appears against every listing that publishes hours, set or not.
5. `structured-data.json` and `structured-data-check.csv`. The JSON is a single LocalBusiness JSON-LD object built only from `master-record.csv`, with `openingHoursSpecification` encoding a closed day as `opens` and `closes` both `00:00`, an all-day opening as `00:00` to `23:59`, and service past midnight as one specification per late night. The CSV has columns: `property`, `value_written_verbatim`, `source_field`, `matches_master`, `present_on_page`. `matches_master` and `present_on_page` are `yes` or `no`.
6. `correction-log.csv` with columns: `correction_ref`, `listing_ref`, `field`, `old_value_verbatim`, `new_value_verbatim`, `priority_rank`, `made_by`, `date_submitted`, `date_read_back_live`, `platform_rejection_verbatim`. `priority_rank` is an integer copied from the supplied order.
7. `gaps.md`, a numbered list of: every unresolved master field with both values; every listing with no named account owner; every listing with no date checked; every published number that was never dialled; every number that is premium, redirects, or does not match the master; every hours date not set on a listing that publishes hours; every structured data property that does not match the master or is absent from the page; every correction submitted with no read-back date; and every platform rejection.

## Rules
- Codex measures, compares, counts and records. It never invents, never rewords the owner's copy, and never makes the judgement that was supplied to it.
- Never choose between two supplied values, and never correct a spelling, a capitalisation, an abbreviation or a postcode spacing on the way into a file. A found value is transcribed exactly as it was found, including its errors.
- Never write a correction, a name, an address or a set of hours that was not supplied. Where a correction is missing, the cell is empty and the row goes in `gaps.md`.
- Never write a value into `structured-data.json` from a listing. Every property comes from `master-record.csv` and nowhere else, and a property with no master value is omitted rather than guessed.
- Never mark a correction complete from a submission. Complete means a read-back date, and a rejection is recorded with the platform's exact wording.
- Never dial a number more than the supplied dial log records, and never place a call to a number that is not on the published list.
- Never publish, submit, delete or claim a listing. This job compares and records.
- Never write a figure for calls, bookings, covers, clicks or rankings gained from consistency. No such figure exists for a single independent venue.
- Telephone numbers are normalised to E.164 for comparison only, with the verbatim form kept in its own column. Postcodes are compared with whitespace ignored and the difference still recorded as a difference.
- Use British English, GBP and DD Month YYYY dates. No em dash characters in any file you write, and any supplied text containing one is recorded verbatim and flagged in `gaps.md`.
- Every file ends with this line: this is a working document prepared for the owner to check against their Companies House record, their telephone contract and their platform agreements before it is relied on. It records published values against a supplied master record and is not advice that the business complies with any disclosure duty.

## Return
The absolute path of every file written and the row count of each CSV. The number of listings enumerated by `place_type`, and how many carry no account owner. The count of fields compared, and the split of exact, differs and absent, with the ten listings holding the most differences named. Every distinct telephone number found, with whether it was answered, in how many rings, and whether it matches the master. The number of hours dates supplied against the number set, per listing. Whether every structured data property matches the master, and any property absent from the page. The number of corrections supplied, submitted and read back live, with every rejection quoted. And the `gaps.md` item count.

Built from the best public work on this

Sources for listing-consistency

Everything below was opened and read on 16 September 2026. Nothing is cited that could not be loaded.

1. The Company, Limited Liability Partnership and Business (Names and Trading Disclosures) Regulations 2015, SI 2015/17, Part 6

https://www.legislation.gov.uk/uksi/2015/17/made, made 7 January 2015, coming into force 31 January 2015, read 16 September 2026.

This is the reason step 2 exists, and it is the part of the job owners are most surprised by. A consistency audit that only looks at platforms will happily make every listing agree on The Crown Inn and never notice that the company behind it is legally required to publish its registered name somewhere the customer can see.

The duties are short and they are absolute. Regulation 22(2): "A company shall display its registered name at any such location at which it carries on business", with paragraph (3) excluding "a location which is primarily used for living accommodation". Regulation 24(1) lists the documents the registered name has to appear on, from "business letters, notices and other official publications" through "its bills of parcels, invoices and other demands for payment" to "all other forms of its business correspondence and documentation", and regulation 24(2) says it in five words for the internet age: "Every company shall disclose its registered name on its websites."

Regulation 25 adds the particulars, and it is these that are missing from most venue websites. On "its business letters", "its order forms" and "its websites" a company must disclose "the part of the United Kingdom in which the company is registered", "the company's registered number" and "the address of the company's registered office". Regulation 29 closes the obvious escape route by defining "its websites" to include "any part of a website relating to that company which that company has caused or authorised to appear", so a booking subdomain run by a third party is not outside it.

Regulation 28 supplies the consequence, and it is why the skill treats this as a hard field rather than a nicety. Where a company fails "without reasonable excuse" to comply with regulations 20 to 27, an offence is committed "by the company" and "every officer of the company who is in default", punishable "on summary conviction to a fine not exceeding level 3 on the standard scale" and "for continued contravention, a daily default fine not exceeding one-tenth of level 3". Regulation 20 adds the standard the display has to meet: "in characters that can be read with the naked eye."

Where the skill departs: the Regulations run to five other parts covering permitted characters in company names, indications of legal form, names too similar to an existing registration and business-name restrictions. None of that is taught. A venue changing its trading name needs an accountant, not a skill, and the skill's job is limited to recording which disclosures appear where and putting the gap in front of the person who advises the company. It also does not decide whether a particular arrangement is a company at all; a sole trader or a partnership has different duties, and the file records the entity type supplied rather than inferring one.

2. Google, "Guidelines for representing your business on Google", Google Business Profile Help

https://support.google.com/business/answer/3038177, no publication date shown on the page, read 16 September 2026.

The platform rulebook, used here for the fields the master record has to be reconciled against rather than for profile building, which belongs to the google-profile skill in this pack.

Step 3 uses the name standard, "Your name should reflect your business's real-world name, as used consistently on your storefront, website, stationery, and as known to customers", together with the table of elements that may not be added, which is why the skill records a platform-forced difference separately from an error. Step 4 uses the address constraints: "P.O. boxes or mailboxes located at remote locations aren't acceptable", "Do not include information in address lines that doesn't pertain to your business's physical location, like URLs or keywords", and the requirement that catches market traders, supper clubs and pop-ups, "Businesses showing their address on Google should maintain permanent fixed signage of their business name at the address."

Step 5 uses the telephone section in full, because it is the strictest published standard available and the safest one to apply everywhere: "Provide a phone number that connects to your individual business location", "Use a local phone number instead of a central call center helpline number whenever possible", "The phone number must be under the direct control of the business", "Premium phone numbers are not acceptable regardless of the rate charged to the caller", and the ban on numbers or addresses "that redirect or 'refer' users to landing pages or phone numbers other than those of the actual business, including pages created on social media sites". Step 6 uses the trade rule, "Restaurants: Use the hours when diners can sit down and dine in your restaurant. Otherwise, use takeout hours", and the constraint on the secondary sets, "In general, you should set More hours as a subset of your primary hours."

Where the skill departs: Google's rules bind Google. The skill applies the telephone and address standards to every platform as a matter of practice, because a redirecting number is bad for a customer wherever it sits, but it does not pretend the other platforms have adopted them, and a difference a platform's own rules force is recorded as forced rather than as a fault.

3. Google, "How to set Special hours", Google Business Profile Help

https://support.google.com/business/answer/6303076, no publication date shown on the page, read 16 September 2026.

Cited for four operational facts that decide what a customer sees on a bank holiday. The scope of the feature: "You can set special hours if your business temporarily adjusts its hours of operation or remains closed for up to 6 days in a row." The threshold at which a different tool is required: "If your business is closed for 7 or more days in a row, or will be closed for an unknown period of time, you should mark your business as Temporarily closed." The precondition nobody reads until the entries fail to appear: "For special hours to show up on your Business Profile, set your business hours to 'Open with main hours.'" And the advice that turns an exceptions list into a full calendar: "It's a good idea to confirm your hours for official holidays, even if they're the same as your regular hours. This makes it clear to customers that your special hours are accurate."

That last one is the reason step 6 asks for every date in the next twelve months rather than only the unusual ones. A venue open as normal on Boxing Day and a venue that has simply never touched the setting look identical to a customer deciding where to eat.

Where the skill departs: the page does not say how far ahead special hours may be entered, and we did not find a published figure, so the skill says nothing about it rather than repeating a number from an agency blog. The twelve month horizon in step 6 is a working choice about how far a hospitality diary is usually known, not a platform limit, and the file says so.

4. Google, "Local business (LocalBusiness) structured data", Google Search Central

https://developers.google.com/search/docs/appearance/structured-data/local-business, last updated 8 September 2026, read 16 September 2026.

Step 8 is this page. Required properties are `name`, "The name of the business", and `address`, "The physical location of the business. Include as many properties as possible." Recommended ones that matter to a venue are `telephone`, "A business phone number meant to be the primary contact method for customers", `url`, "The fully-qualified URL of the specific business location. The URL must be a working link", `menu`, "For food establishments, the fully-qualified URL of the menu", `servesCuisine`, `priceRange`, which "must be shorter than 100 characters", and `geo`, whose latitude and longitude must each have "at least 5 decimal places".

The encodings in step 8 are quoted because getting them wrong publishes a false statement rather than no statement. All day: "To show a business as open 24 hours a day, set the open property to '00:00' and the closes property to '23:59'." Closed: "To show a business is closed all day, set both opens and closes properties to '00:00'." After midnight, the case every late bar meets: "For hours past midnight, define opening and closing hours using a single OpeningHoursSpecification property", with the documented example running Saturday 18:00 to 03:00. Seasonal closures use `validFrom` and `validThrough` with both times at "00:00".

One line on the same page is load-bearing for a sibling skill and is recorded here for completeness: `aggregateRating` and `review` are marked "only recommended for sites that capture reviews about other local businesses". A venue marking up its own reviews is the subject of review-display in this pack, and this skill does not write those properties at all.

Where the skill departs: the page carries a restaurant carousel feature with its own required image and carousel properties, described as "currently limited to a small set of restaurant providers" requiring registration of interest. The skill does not build it. It also does not teach the `department` property beyond noting it exists, because a single independent venue with one telephone number does not need nested departments and the markup gets harder to keep true.

Best public prompt we found for this job

The closest public artefact is the `brand-review` skill in Anthropic's `knowledge-work-plugins` repository, raw source at https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/main/marketing/skills/brand-review/SKILL.md. The repository has 24,123 stars, read from api.github.com on 16 September 2026. Its terminology section asks the right question:

Are product names, feature names, and branded terms used correctly (capitalization, formatting)?

That is the instinct this skill industrialises. Capitalisation and formatting of a name really are the thing to check, and a review that says the copy "feels inconsistent" helps nobody.

Three things we did not copy. It reviews a document against a style guide, which means the standard is an aesthetic one and a deviation is a suggestion; here the standard is a master record the owner has signed and a deviation is a customer ringing a dead number, so every difference is recorded with the page it was found on and a correction owner. It also reviews one piece of content at a time, while the whole point of this job is the comparison across fifteen places at once, including the ones nobody has the password for. And it offers to review "Multiple pieces for batch review" without any concept of reading a value back after a change; the failure mode in listings is not the edit, it is that a platform syncing from another platform quietly restores the old address a fortnight later, which is why nothing here is complete without a read-back date.

Want this running in your business?

I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.