AI assistants are becoming the first place metro Atlanta readers ask "what's the best Atlanta news source" and the first place agency planners ask "where should I advertise in Atlanta" — and local news is a category where almost no one has optimised for that yet. Before we run the audit, we need to make sure we're asking the right questions about the right competitors to the right buyers. This document presents what we've learned about The Atlanta Journal-Constitution's market — your job is to tell us what we got right, what we got wrong, and what we missed.
Before we measure how often AI assistants cite the AJC in metro Atlanta news and local-advertising answers, these three signals tell us whether the crawlers behind those assistants can reach, read and date your pages. They are derived mechanically from the Layer 1 scan of 50 pages across ajc.com, ajcads.com, editions.ajc.com and uatl.com.
Local news is being re-intermediated for the second time in twenty years. The first time, search engines took the front page; this time, AI assistants answer "what happened in Atlanta today," "is the AJC worth paying for," and "where should I advertise in Atlanta" without the reader ever choosing a source. Establishing visibility in those answers now compounds — early citations become self-reinforcing as platforms learn which domains to trust on a beat — and the AJC enters this shift with a rare structural advantage among metro dailies: a deep and continuously published Atlanta archive, a first-party audience business on both sides of the ledger, and a crawler policy that blocks nothing.
This Foundation Review is the input layer for that measurement, not the measurement itself. It contains three things we need you to confirm before we generate a single query: the competitive set, which determines who the AJC is benchmarked against in head-to-head answers; the buyer personas, which determine whether we test subscriber language or media-buyer language; and the Layer 1 technical baseline, which determines whether AI crawlers can extract your pages at all. Getting these wrong doesn't produce a slightly worse audit — it produces an audit of the wrong market.
The validation call is a working session with two kinds of decisions. The first is input validation: are the right entities in the right tiers, and are the strength and severity ratings we assigned from the outside the ones you'd assign from the inside? The second is engineering triage: several of the Layer 1 fixes are unambiguous and don't depend on anything we decide together — those can start this week and will have improved your baseline before the audit measures it. The specific items for each are in the checklist below and in the Pre-Call Checklist at the end of this document.
curl -A GPTBot https://www.ajc.com/start/.Three things to know before you start marking this up.
What this is This document is the foundation for a GEO (Generative Engine Optimisation) visibility audit. Everything below becomes an input to the query set we run against AI platforms — the competitors we benchmark you against, the buyers whose language we search in, and the capabilities and frustrations we test. Because the AJC sits in two buying conversations at once — a consumer news subscription and a local-market advertising buy — the accuracy of these inputs matters more here than it does for a single-product company.
What we need from you Corrections, not approval. Read for what's wrong or missing rather than what's right. Every purple box in this document is a question where your answer changes what the audit actually tests — those are collected into a single printable list in the Pre-Call Checklist at the end. If a persona doesn't show up in your deals, say so. If a competitor never comes up in a churn survey or a sales call, say so.
How to read the badges Every entity carries a confidence badge showing how it was sourced. High means it came from your site, a competitor's site, or a documented review source. Medium means it was inferred from category patterns and needs your confirmation. Strength tags (strong / moderate / weak) and severity tags are outside-in assessments — they're what an informed observer would conclude from public evidence, which is exactly the vantage point an AI assistant has.
This is the entity the audit will search for. Name variants matter more than they look — they're how we detect a citation when an AI assistant refers to you as "the AJC" or "the Atlanta Journal Constitution" rather than by your full masthead.
Question for you The AJC now earns roughly half its revenue from consumer subscriptions and half from local advertising, and we've modelled the persona set to span both — four advertising and communications buyers, two reader-side buyers. Should this audit weight visibility toward advertiser and agency buyers, toward consumer subscribers, or split evenly as modelled here? An advertiser-weighted audit tests "best Atlanta media buy" and "AJC Ads audience" language; a subscriber-weighted audit tests "best Atlanta news source" and "is the AJC worth it" language — and the two query sets return almost no overlapping results, so this is the single decision that most changes the shape of the audit.
6 personas: 3 decision-makers, 1 evaluator, 2 influencers — four on the advertising and communications side, two on the reader side. Personas drive the query set: each one searches differently, and a persona we've mis-cast produces an entire cluster of queries no real buyer would ever type.
Critical review area This is the section most worth your scrutiny. Two of the six personas — Doug Vandiver and Ellis Grantham — are drawn from category-standard local-media dynamics rather than from AJC-specific sources, and both are flagged medium confidence. The consumer-side personas also use the B2B schema by analogy: Denise Whitfield's "veto power" encodes the ability to cancel a subscription unilaterally, not org-chart authority. If those analogies don't match how you think about churn and household decisions, tell us — it changes how we weight her queries.
Data sourcing note Role titles, seniority, department, influence level, veto power and technical level come directly from the knowledge graph, along with the provenance shown on each card. Primary buying jobs and query focus areas are synthesised — they're our inference about how each role behaves during evaluation, and they are what actually shapes the generated queries. Correct those freely; they're the fields with the most leverage and the least direct evidence behind them.
→ Priya and Doug Vandiver both carry veto power — on a metro Atlanta buy, does the agency hold final authority or does the brand-side CMO sign? Whichever one holds it gets the comparative "best Atlanta media buy" queries; the other gets brand-safety and sponsorship queries instead.
→ Doug is inferred, not observed — do C-suite marketers actually enter a metro Atlanta buy, or does authority top out at a VP or Director of Marketing? If the ceiling is lower, we drop the boardroom-altitude queries and reallocate them to Tanisha Obi's mid-funnel language.
→ Tanisha is the only high-influence persona without veto power — does she recommend and hand off, or does she hold discretionary budget under some threshold? If there's a self-approval threshold, she becomes a decision-maker and we add direct-purchase and rate-card queries rather than evaluation-stage ones.
→ Is public affairs a buying role at the AJC — do these teams actually purchase subscriptions, sponsor Politically Georgia, or place advocacy — or are they an audience you serve but don't sell to? If they don't buy, we cut the Georgia policy-intelligence query cluster and redistribute it across the two reader-side personas.
→ Is the subscription decision individual or household — does a partner or spouse hold an effective veto on recurring charges? A household frame shifts her queries toward bundle-and-value comparisons ("worth it for the whole family," AJC vs. a national subscription); an individual frame keeps them on personal utility and cancellation friction.
→ Who actually signs institutional access — a library director, a school district curriculum administrator via Newspapers in Education, or a corporate research or comms lead? Each moves through a different procurement path and searches in different language, so naming the real one determines whether we test archive-and-database queries or classroom-and-curriculum queries.
Who else is in the room? These roles sometimes appear in metro-daily deals — do they show up in yours? Political and issue-advocacy media buyers (Georgia's competitive statewide cycles make campaign and advocacy spend a distinct, calendar-driven buying motion with its own vocabulary); legal and public notice buyers (law firms, municipalities and estate administrators who buy notices as a compliance obligation rather than a marketing decision, and who search for the requirement rather than the publisher); content licensing and syndication buyers (AI platforms, aggregators and research services negotiating for the archive itself — an increasingly real line item for publishers). Each would warrant its own query cluster. Who else shows up in your deals?
6 primary + 5 secondary competitors — four Atlanta TV newsrooms lead the primary tier because they're what metro Atlanta consumers and local advertisers actually substitute for the AJC, not because they share a product category.
Why tiers matter Primary competitors get direct head-to-head treatment in the query set — "AJC vs. WSB-TV for Atlanta news," "best Atlanta news source," "where should I advertise in Atlanta" — while secondary competitors appear only in broader category and awareness queries. At six to eight head-to-head queries per primary competitor, these six tier assignments determine roughly 40 queries of differentiation testing. One of them is uncertain: Axios Atlanta is the only primary competitor at medium confidence, and it now sits under the same Cox Enterprises ownership as the AJC — if it rarely surfaces in real churn or lost-deal conversations, moving it to secondary returns those queries to a rival you don't share an owner with.
Questions for you Three things to settle here. (1) Tier accuracy: Axios Atlanta is the only medium-confidence primary and a Cox sibling — does it actually appear when a subscriber churns or an advertiser declines, or is it a category peer rather than a substitute? Demoting it moves roughly six to eight queries out of the head-to-head set. (2) Missing vendors: Google and Meta take the largest share of local ad budget but were excluded by design, since neither is an entity a citation audit can benchmark head-to-head — is there a named local rival we've missed, particularly on the sports-subscription side where The Athletic sits inside a secondary-tier competitor? (3) Irrelevant entries: The New York Times is placed at secondary on the theory that households buy one news subscription and the AJC competes for that slot — if your churn data says national subscriptions are noise rather than competition, we drop it and reallocate to a fifth Atlanta rival.
12 buyer-level capabilities mapped: 5 strong, 4 moderate, 3 weak. These determine which capability queries the audit tests — the strength ratings tell us where to look for competitive advantage and where to expect a competitor to be cited instead.
Who in Atlanta actually digs into police misconduct, wrongful convictions, and where my tax money goes — not just reads the police blotter on air?
I need to know what happened under the Gold Dome and what it means for my business before my board asks me about it
Braves, Falcons, Hawks, Atlanta United, Georgia Bulldogs and my kid's high school team — all in one place, with beat writers who actually travel with the team
Give me a five-minute morning briefing on Atlanta in my inbox and something worth listening to on the 285 commute
How many actual metro Atlanta adults will see this, and can I target them by ZIP code, income and intent instead of buying the whole market?
When there's a shooting downtown, ice on the Connector, or a tornado warning in Cobb, where do I look first?
Where should we eat this weekend and what's actually happening in Atlanta — a list I trust more than a sponsored roundup
Can your journalists write and produce the story for us, and will it look native enough that people actually read it?
I want my brand on stage in front of Atlanta's decision-makers, not just a banner ad next to an article
Show me foot traffic, conversions and incremental lift from this buy — my Google and Meta dashboards do it, why can't yours?
The app keeps jumping back to the top while I'm reading, there's no search, no dark mode, and stories I saved are gone a few days later
Which tier do I actually need, does it work on all my devices, and why do I have to call somebody to cancel?
Prioritisation question Five capabilities are rated strong: Investigative & Accountability Journalism, Georgia Politics & Statehouse Coverage, Atlanta & Georgia Sports Coverage, Newsletter & Podcast Portfolio and Local Audience Reach & Ad Targeting. The audit tests all 12 capabilities, but competitive differentiation queries will emphasise 3. Which of these best represents where The Atlanta Journal-Constitution wins deals — where a subscriber converts or an advertiser signs specifically because no one else in Atlanta does it?
Questions for you (1) Rating accuracy against named rivals: Breaking News, Weather & Traffic Utility is rated moderate because WSB-TV and FOX 5 own the reflex when there's ice on the Connector — is that concession right, or does ajc.com actually win that moment now that the AJC is digital-first? And Campaign Measurement & Attribution is our one inferred rating, drawn from category patterns rather than a documented AJC Ads capability — if AJC Ads already delivers foot-traffic, lift or conversion reporting, this moves to moderate and the audit stops hunting for a vulnerability that doesn't exist. (2) Missing capabilities: the taxonomy has no entry for archive and historical research depth, which is the AJC's least replicable asset and the thing an AI assistant is most likely to need — should it be its own capability? (3) Merge candidates: App & Site Reading Experience and Subscription Value & Account Self-Service are both weak and both sourced from the same review corpus — do your subscribers experience these as one problem ("the product doesn't work") or two, and should the audit test them as one?
11 pain points: 5 high severity, 6 medium. The buyer language below is how queries will actually be phrased — AI assistants get asked about problems in the buyer's own words, not in the vocabulary of a media kit.
Questions for you (1) Severity accuracy: we rated audience erosion from AI search as high severity, but it came from review mining rather than from your own sales conversations — do Atlanta advertisers actually raise traffic durability in renewal discussions, or is that a national trade-press concern that hasn't reached your reps yet? Downgrading it moves several queries away from audience-durability language toward reach and targeting language. (2) Buyer language accuracy: the paywall pain point is phrased around $9.99/month — if that's a promotional rate and the real objection lands at the post-promotional step-up, the query phrasing changes materially, because "AJC price increase" and "is the AJC worth $9.99" are different searches with different answers. (3) Missing pain points: three we'd expect in a metro-daily deal but didn't find evidence for — the promotional-rate step-up itself as a distinct churn trigger; the absence of a self-serve buying path, which locks small Atlanta advertisers out of a rep-mediated process entirely; and perceived political bias as a stated reason for declining or cancelling in a state with competitive statewide races. Do any of those show up in your churn surveys or lost-deal notes?
Ten findings from a 50-page scan across ajc.com, ajcads.com, editions.ajc.com and uatl.com, read from raw server HTML — the same view an AI crawler gets. Nine are diagnostic; one requires manual verification with browser-based tooling.
Engineering — start immediately One critical finding gates the others: the entire consumer subscription funnel returns no server-rendered content. /start/, /our-products/, /group-subscriptions/ and /myaccount/ ship up to 905KB of Next.js payload and 7 words of body text, and re-requesting them as GPTBot, ClaudeBot and Googlebot returned byte-identical empty output — there is no crawler fallback. Two high-severity discovery issues sit alongside it: ajc.com/sitemap.xml points at a uatl.com sitemap and lists zero ajc.com URLs, and all 19 ajcads.com pages carry zero JSON-LD, so nothing machine-readable declares that AJC Ads is the AJC's advertising arm. Engineering should also add descriptive H1s to /politics/ and the sports hubs — currently 11 inventoried pages have no H1 at all — and run a JavaScript-rendering crawl to size the hydration gap. Crawler access itself is not a blocker: robots.txt is reachable and permits every AI crawler we tested, so nothing here is gated on verifying access first.
What we found: The highest commercial-intent pages on ajc.com return a fully empty <main> element in the server HTML. /start/ (the subscription offer page), /our-products/, /group-subscriptions/ and /myaccount/ each ship 500KB-905KB of Next.js payload but only 7 words of body text, all of it navigation and footer boilerplate. There are no H1 or H2 headings. We re-requested /start/ with the GPTBot, ClaudeBot and Googlebot user-agents and received byte-identical empty output — there is no dynamic-rendering or prerender fallback for crawlers. The ePaper reader at editions.ajc.com/app/AJCFEE/ behaves the same way (8 words, no headings, no meta description), and /newsletters/ renders its H1 but not the newsletter catalogue itself.
Why it matters: AI answer engines overwhelmingly index the raw HTML response and do not execute JavaScript. For an AI assistant asked "how much does an AJC subscription cost" or "what do I get with an AJC digital subscription", the only extractable text on the canonical answer page is its 160-character meta description. That is why third-party sources — not ajc.com — currently supply subscription pricing to search results. Every conversion-critical claim (price tiers, what is included, device coverage, group and institutional terms) is invisible to the crawlers that increasingly mediate the subscription decision, and this maps directly to the KG's highest-severity consumer pain points around paywall value and cancellation friction.
Recommended fix: Server-render these routes. In the Next.js App Router this means moving the offer, product and plan components out of client-only rendering so their markup is present in the initial HTML response — or, at minimum, adding a static server-rendered summary block (plan names, prices, billing terms, what each tier includes) that hydration enhances rather than replaces. Verify by running curl -A GPTBot https://www.ajc.com/start/ and confirming plan names and prices appear in the response body.
What we found: https://www.ajc.com/sitemap.xml returns HTTP 200 and a valid sitemap index — but its single entry is https://www.uatl.com/pages-sitemap.xml, a different domain. The file lists zero ajc.com URLs. Separately, https://www.ajc.com/sectionmap.xml, which robots.txt advertises as a sitemap, returns HTTP 404 (a Next.js error document served with a 404 status). The working article sitemaps live at feeds.ajc.com and are correctly referenced in robots.txt, so discovery is not entirely broken — but the two conventional entry points a crawler tries first are misconfigured.
Why it matters: /sitemap.xml is the first path most crawlers probe, and several AI crawlers use it as their primary discovery mechanism rather than following the Sitemap directives in robots.txt. A crawler that starts there is handed a 22-URL sitemap for a sibling brand and concludes ajc.com has almost no content. The 404 on the robots.txt-declared sectionmap.xml compounds this by signalling a broken sitemap configuration to any validator that checks the declared set.
Recommended fix: Replace the contents of https://www.ajc.com/sitemap.xml with a sitemap index that references the real ajc.com sitemaps (the feeds.ajc.com sitemap index plus the news and video sitemaps), and add a sitemap for section and commercial pages. Either restore https://www.ajc.com/sectionmap.xml or remove its Sitemap line from robots.txt so the declared set is accurate. Keep the uatl.com sitemap referenced from uatl.com's own robots.txt.
What we found: The working sitemap index at feeds.ajc.com contains 5,000 child sitemaps, and every one of them is a date-partitioned article archive spanning 2012-12-07 to 2026-08-14. We found no sitemap entry for any section hub (/politics/, /sports/, /news/investigations/, /food-and-dining/), any subscription or product page (/start/, /our-products/, /group-subscriptions/, /newsletters/, /podcasts/), or any page on the advertiser domain ajcads.com. The index also sits at exactly 5,000 entries — the sitemaps.org per-index limit — which means the oldest archives are being truncated as new days are added. The first entry in the index, the /sitemap/latest/ endpoint, returns a valid but completely empty <urlset>.
Why it matters: Article sitemaps keep individual stories discoverable, but the pages that answer commercial questions — what the AJC sells, what a subscription includes, what advertising products exist — are reachable only by link-crawling from the homepage. Combined with the client-side rendering issue above, this means the commercial layer of the business has neither a sitemap entry nor server-rendered content. An empty /latest/ sitemap is also a wasted signal: crawlers that poll it for fresh content receive nothing.
Recommended fix: Publish a pages sitemap covering section hubs, subscription and product pages, newsletter and podcast landing pages, and the About/Newsroom pages, with accurate lastmod values, and reference it from the root sitemap index. Fix or remove the empty /sitemap/latest/ endpoint. Give ajcads.com its own robots.txt and sitemap.xml. Consider a second-level sitemap index to move past the 5,000-entry ceiling before older archives fall out.
What we found: https://www.ajc.com/advertising/ is a 308 redirect to https://www.ajcads.com/, a separate domain. We inspected all 19 ajcads.com pages in this inventory and found zero JSON-LD blocks on every one — no Organization, no Service, no WebPage, no BreadcrumbList. Open Graph coverage is partial (og:title, og:description, og:type; no og:image and no og:url anywhere), and two pages (/audience-data and /resource/media-kit) have no meta description at all. The domain's only outbound links back to the AJC are two legal-page links in the footer; there is no navigational or structured relationship declaring that AJC Ads is the advertising arm of The Atlanta Journal-Constitution.
Why it matters: Half the AJC's revenue is advertising, and the KG identifies three advertiser-side buyer personas. For an AI assistant asked "who do I contact to advertise in Atlanta" or "what does AJC Ads cost", ajcads.com presents as an unaffiliated 250-word marketing site with no machine-readable identity and no declared connection to the AJC brand. Structured data is how an answer engine resolves that ajcads.com and ajc.com are the same organisation; without it, the brand equity of the AJC does not transfer to the advertising business, and the site's genuinely strong first-party audience statistics have no entity to attach to.
Recommended fix: Add Organization schema to every ajcads.com page with sameAs pointing to ajc.com and the AJC's social profiles, plus Service schema on each /products/* page and BreadcrumbList for the products hierarchy. Add og:image and og:url site-wide and meta descriptions to /audience-data and /resource/media-kit. Add a persistent navigation link from ajcads.com back to ajc.com (and from the AJC footer's existing "Advertise" link, confirm the 308 preserves link equity).
What we found: Eleven inventoried pages have no H1 at all, including /politics/, /sports/georgia-bulldogs/, /sports/atlanta-braves/, /sports/atlanta-falcons/, /sports/varsity/ and /accessatl/. On /politics/ the 18 H2 elements are reporter names repeated in pairs (Adam Beam, Adam Beam, Greg Bluestein, Greg Bluestein...) rather than topic labels; the team pages repeat the section name twice as H2 ("Georgia Bulldogs", "Georgia Bulldogs"); and uatl.com's homepage uses 22 author-name H2s under an H1 that is a single article headline. One article, the Beltline restaurant guide, carries two H1s. By contrast /news/investigations/ is exemplary — a clear H1 with descriptive H2s naming each investigation series (Georgia Prisons, Senior Care, American Dream for Rent, 911 Calls).
Why it matters: Headings are the primary signal an extraction pipeline uses to segment a page into citable passages and to decide what a page is about. A politics hub whose only headings are reporter names gives a retrieval system nothing to match against a query like "Georgia legislature coverage", and a missing H1 removes the single strongest topical label on the page. The investigations hub demonstrates the pattern that works and is the model to copy.
Recommended fix: Add a descriptive H1 to every section hub (the page title text is already correct — "AJC Politics Georgia News, Elections, State and Washington" — so promote it into an H1). Demote reporter names from H2 to a non-heading byline element, and use H2 for topical groupings the way /news/investigations/ does. Resolve the duplicate H1 on the Beltline guide by demoting the second to H2.
What we found: Article pages are well marked up — NewsArticle with Person authors, WebPageElement, and correct hasPart/cssSelector paywall markup declaring which sections are gated. But every non-article ajc.com page we inspected emits the same generic set: CollectionPage, NewsMediaOrganization, WebSite and ImageObject. That includes /start/ (a pricing page with no Product or Offer schema), /group-subscriptions/, /our-products/, /podcasts/ (no PodcastSeries), /newsletters/, /newsroom/ (a 60-person staff directory with no Person entries) and /about-AJC/ (an FAQ-style page with no FAQPage schema). The ePaper page at editions.ajc.com has no structured data at all.
Why it matters: The paywall markup on articles shows the team already knows how to implement precise structured data — the gap is that commercial pages did not receive the same treatment. Offer schema on /start/ is what lets an answer engine state the AJC's price with confidence; FAQPage on /about-AJC/ is what makes those answers eligible for direct citation; Person entries on /newsroom/ are what connect named reporters to the organisation for authority and E-E-A-T signals. Generic CollectionPage markup tells a crawler only that the page exists.
Recommended fix: Add Product with nested Offer (price, priceCurrency, billingDuration) to /start/ and /group-subscriptions/; PodcastSeries to /podcasts/; FAQPage to /about-AJC/; Person entries to /newsroom/ linked via NewsMediaOrganization employee; and baseline WebPage plus Organization schema to the ePaper. Note that this only pays off once the client-side rendering issue is fixed, since these pages currently have no body content for the schema to describe.
What we found: Article pages carry reliable dates — visible datelines plus datePublished/dateModified in JSON-LD, and lastmod values in the feeds.ajc.com sitemaps. No other page does. All 38 product_commercial pages in this inventory (section hubs, subscription pages, and every ajcads.com product page) returned no visible date, no dateModified, no sitemap lastmod entry, and no usable Last-Modified header. The ajcads.com pages do return Last-Modified headers, but they track CDN rebuilds rather than content edits — two pages reported a Last-Modified within three minutes of our request — so we did not score them. The AJC Ads blog index lists seven posts, none of which shows a publication date.
Why it matters: AI answer engines weight recency heavily; AI-cited content runs 25.7% fresher on average than content in traditional Google organic results (Ahrefs, August 2025). When a crawler cannot date a page it cannot award freshness credit, so these pages compete for citation on content signal alone. This matters most for the AJC Ads blog, which is directly targeting 2026-dated topics ("What AI search means for advertisers in 2026") while giving no evidence the posts are actually current.
Recommended fix: Emit dateModified in JSON-LD and accurate lastmod values in the new pages sitemap for section hubs and commercial pages, updated when the page content genuinely changes rather than on every deploy. Add visible publication dates and Article schema with datePublished to every AJC Ads blog post.
What we found: The AJC Ads product pages average roughly 230 words. The strongest ones carry specific, citable first-party data — /products/newsletters states 81% college-educated, 55% at $100K+ household income, 50% average open rates and 250k daily sends; /products/dawgnation gives 14.1M YouTube views and 603K monthly in-season viewers. But four pages are materially thinner than the rest: /products/digital (112 words), /products/branded-content (134 words), /products/ajc-amp-creative (250 words listing eight services in one line each) and /products/ajc-franchises (345 words of brand names). /resource/media-kit is a 66-word gated form, so the media kit's specifications and rate information sit entirely behind a lead-capture wall and are invisible to crawlers.
Why it matters: The KG flags campaign measurement and attribution as the client's weakest advertiser-facing capability, and /products/ajc-amp-creative is the page that would answer it — but "Analytics & Insights" appears there as a single line with no methodology, no attribution model and no reporting cadence. Breadth without depth loses citations: an answer engine asked "can AJC Ads prove campaign ROI" has no passage substantive enough to quote. Gating the media kit compounds this, because ad specifications and audience methodology are exactly the material an AI assistant would cite when an agency planner researches the buy.
Recommended fix: Expand /products/ajc-amp-creative into a full measurement and attribution page covering what is measured, which partners supply the data, what reporting the advertiser receives and on what cadence. Give /products/digital concrete ad formats, sizes and targeting parameters. Publish an ungated HTML version of the media kit's specifications and audience methodology alongside the gated PDF, extending the sourcing already shown on /audience-data.
What we found: robots.txt at https://www.ajc.com/robots.txt is reachable and blocks no AI crawler. GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, Googlebot and Bytespider are all permitted — but none is named in the file. They inherit the wildcard rule, which disallows only /search, /google-search and /flatpage-. The file does name a number of other crawlers: Yandex, Baiduspider, SeznamBot, Mail.RU_Bot and others are fully disallowed, and bingbot, AhrefsBot, SemrushBot and others carry crawl-delay directives of 10-15 seconds. ajcads.com has no robots.txt of its own.
Why it matters: This is a healthy starting position — nothing is blocking AI access, which is the failure mode we most often find. The residual risk is that AI access is currently accidental rather than deliberate: a future edit to the wildcard block, or a crawl-delay applied broadly, could silently cut off AI crawlers. Naming them explicitly converts an implicit allow into a decision the business has made and documented.
Recommended fix: Add explicit User-agent blocks for GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot and Google-Extended with the intended Allow/Disallow rules, so the policy is legible and survives future edits. Publish a robots.txt for ajcads.com. Note that crawl-delay directives of 15 seconds materially throttle any crawler that honours them — confirm that is intended for the SEO tooling crawlers listed.
The following item could not be assessed through our analysis method (raw server HTML, no JavaScript execution). We recommend your engineering team verify it manually before the validation call.
What to check: This analysis read raw server HTML directly, so meta tags, Open Graph tags, JSON-LD and client-side rendering were all assessed from the actual response bodies rather than inferred. Two limits remain. First, we did not execute JavaScript, so we can confirm that /start/, /our-products/, /group-subscriptions/, /myaccount/ and the ePaper return no server-rendered body content, but not what they render after hydration or how long that takes. Second, we did not evaluate Core Web Vitals, canonical tag correctness across the ajc.com/uatl.com/ajcads.com family, or hreflang and pagination behaviour on section hubs.
Recommended action: Run Screaming Frog or Sitebulb in JavaScript-rendering mode across ajc.com and ajcads.com and compare rendered against raw HTML word counts to quantify the rendering gap per template. Use Google's Rich Results Test on /start/, /podcasts/ and a representative ajcads.com product page to confirm the structured-data gaps above. Audit canonical tags across ajc.com, uatl.com and ajcads.com for cross-domain conflicts.
Read the sample correctly These 50 pages are a deliberate commercial sample, not a proportional slice of ajc.com — the working sitemap index alone contains 5,000 child sitemaps of date-partitioned article archives going back to December 2012. The scores above describe the commercial and structural layer of the business (subscription funnel, section hubs, advertiser site, ePaper), which is where the Layer 1 findings concentrate; they are not a verdict on the article archive, which is by far the healthiest part of the site. The freshness figure is the weakest number here: 43 of 50 pages could not be scored at all, so treat 0.81 as a reading of 7 pages rather than of the site.
Why now Timing is the argument for doing this in 2026 rather than 2027:
• AI search adoption is accelerating and buyer discovery patterns are shifting quarter over quarter — global publisher traffic from Google dropped by a third in 2025 (Chartbeat / Press Gazette, January 2026), and the answers replacing those clicks are assembled from whichever sources the engines can read.
• Early citations compound: domains that AI platforms learn to trust on a beat get cited more often as they accumulate, and that advantage is difficult to dislodge once established.
• 75% of major news publishers had blocked at least one AI crawler by mid-2025 (Screaming Frog, July 2025). The AJC blocks none — that's a structural advantage over the peer set, but only for as long as the technical layer lets crawlers actually extract something.
• Metro local news is still early-innings in GEO optimisation. Acting now means competing against inaction rather than against entrenched strategies.
The full audit measures how often AI platforms cite the AJC on the questions your two buyer sets actually ask — "best Atlanta news source," "is the AJC worth $9.99 a month," "who covers Georgia politics," "where should I advertise in Atlanta," "can AJC Ads prove campaign ROI" — and against which of the eleven competitors above. You'll see exactly which queries return answers that name WSB-TV, 11Alive or the Atlanta Business Chronicle but not the AJC, and what it would take to appear in them. Fixing the Layer 1 items in the meantime raises the baseline before we measure it, so the audit reads your real position rather than a rendering artefact.
45-60 minutes walking through this document together. We settle the advertiser-vs-subscriber weighting, correct the personas and tiers you disagree with, and lock the inputs.
We generate buyer queries from the validated personas, competitors, features and pain points, then run them across the selected AI platforms and capture every response and citation.
Visibility analysis, competitive positioning by query cluster, and a three-layer action plan — technical, content and authority — prioritised by which gaps actually cost you citations.
Start now — no need to wait for the call Three technical items for engineering. (1) Server-render the subscription funnel — /start/, /our-products/, /group-subscriptions/ and /myaccount/, or at minimum a static server-rendered block carrying plan names, prices and billing terms that hydration enhances rather than replaces. (2) Fix sitemap discovery — repoint ajc.com/sitemap.xml at the real feeds.ajc.com index, restore or de-declare the 404-ing sectionmap.xml, publish a pages sitemap covering section hubs and commercial pages, and fix the empty /sitemap/latest/ endpoint. (3) Give ajcads.com a machine-readable identity — Organization schema with sameAs back to ajc.com on all 19 pages, Service schema on the product pages, og:image and og:url site-wide, and a robots.txt for the domain, which currently has none. Robots.txt on ajc.com is confirmed reachable and permits every AI crawler we tested, so no verification is gating this work — but adding explicit User-agent blocks for GPTBot, ClaudeBot, PerplexityBot, ChatGPT-User and Google-Extended is a sub-day change worth making while you're in the file. These don't depend on the rest of the audit and will improve your baseline visibility before we even measure it.
Two jobs before we meet. The questions on the left require your judgment — no one knows your business better than you. The engineering tasks on the right don't require the call at all.
curl -A GPTBot https://www.ajc.com/start/.