Week 8 · Day 38 of 40 · Use AI

AEO and growth automation

You ship: WorkBot's site passing an AEO checklist in CI, a 200-account target list, and a compliant outreach sequence.

What you'll build today

WorkBot is ready for customers, and the next job is helping it find them. Buyers now ask assistants with web search about products, so the public site only helps if those assistants can find it, read it and cite it. Sales outreach has rules too, set by the platforms and by the law.

Today you rebuild the public site for these answer engines and check it on every pull request. You write a weekly job that asks assistants the questions buyers ask and records whom they cite. Then you score a list of target companies by criteria in code, and write an email sequence that carries a way to opt out in every message. You learn how assistants reach a site, how to keep a target list grounded in evidence, and what an outreach email must carry.

By the end of the day, the site passes its checklist in CI, and you have a baseline of citations and a scored target list. In the reference run nothing was sent, because the sending domain's records and a real sender come first.

By the end of the day you can

  • Build a website that AI assistants can retrieve, understand and cite, and measure whether they do
  • Use agents for growth analysis and to build target lists from first-party data
  • Automate outreach across email, LinkedIn and Instagram, within the platforms' rules and the law

Topics

Answer Engine Optimization (AEO)

  • How assistants reach content: training data, the live search behind the assistant, fetches a user triggers, and tools. Different crawlers follow different rules
  • Retrievable: a robots.txt that allows AI crawlers explicitly, a sitemap generated from data with an honest lastmod date, llms.txt, and machine-readable feeds. The llms.txt file is a plain-text version of the site for language models
  • Readable without JavaScript: prerendered pages, no content behind scroll animations, real anchors
  • Structured: JSON-LD (JSON for Linking Data) graphs with Organization, Article, FAQPage and BreadcrumbList. Use one canonical phrase for the entity everywhere
  • Question-and-answer architecture: the answer in the first 100 words, FAQs that are questions, passages that stand alone
  • Authority and freshness: original research with data, visible authors and dates, modification dates from git
  • Measurement: which assistants cite you, for which questions, and what changed when you shipped

Growth Analysis with Agents

  • First-party data as the target universe: your census, your customers, your product usage
  • Agent-assisted analysis: a database tool plus a notebook. The agent proposes segments, you check the SQL, and the agent writes the brief
  • Target lists: criteria as code, scored and ranked, with evidence per row, refreshed on a schedule
  • Enrichment from public sources, with provenance. Nothing goes in the list without a source

Outreach Automation Within the Rules

  • Email: transactional and marketing providers, consent, an unsubscribe link in every message, and suppression lists
  • Email authentication: SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) and DMARC (Domain-based Message Authentication, Reporting and Conformance)
  • The law: the obligations of CAN-SPAM, the US law on commercial email, and of the EU's General Data Protection Regulation (GDPR)
  • LinkedIn: official APIs cover company pages and advertising. Automating personal accounts breaches the user agreement and gets accounts banned. Agents draft, humans send
  • Instagram: the Instagram platform APIs for business accounts, with messaging inside the conversation windows Meta sets. The same rule applies: agents draft, humans send
  • Personalization that is true: drawn from research the agent did, and cited in the message. To evaluate a draft, a person reads it as the recipient would
  • Measurement: replies and meetings

Build

Features shipped today

  • WorkBot: The public site built for answer engines, with growth measured by citations. A 200-account target list and a compliant outreach sequence

Grow WorkBot:

  1. AEO: run the checklist against the site. Ship robots.txt, a sitemap, llms.txt, JSON-LD, question pages for the 5 questions a buyer asks, and an author and date on every page. Add a check:aeo script in CI that fails on regressions
  2. Measurement: a weekly job that asks 3 assistants the 5 buyer questions, and records whether and how each one cites the site
  3. Target list: an agent-built list of 200 accounts from first-party data, with criteria as code and a score and evidence per row, reviewed by hand
  4. Outreach: an email sequence with authentication, consent and unsubscribe handling. LinkedIn and Instagram drafts generated per account and sent by a person. A reply and meeting dashboard
  5. Report: citation and reply numbers after the first run, and what the next iteration changes

Walkthrough

Part 1

The site for answer engines

Assistants answer from what they can retrieve and read, so the site has to be built for them as well as for people. Making every page from one file of questions keeps the pages, the sitemap and the plain-text version in step.

Study first

  • Learn answer engine optimization (AEO), the work of making a site that assistants can find, read and cite. It covers structured data in the schema.org vocabulary, robots.txt rules for the answer engines' crawlers, and a sitemap. It also covers llms.txt, a plain-text version of the site for language models, which the llms.txt proposal describes. Last, it covers a page per question a buyer asks, and an author and a date on every page.

Build

  1. Write the five buyer questions and their answers in one file, site/src/site.ts, and make a page for each.
  2. Make site/src/app/robots.ts, site/src/app/sitemap.ts and an llms.txt route from that file, with the Next.js robots and sitemap file conventions. Add structured data to the home page and to every question page, and put the author and date in the layout.
  3. Write pnpm check:aeo, the checklist as tests, and run it in pnpm check so that a regression fails the build.

Done when

  • The checklist passes in CI, and changing the questions changes every page, the sitemap and llms.txt together.
A question page
This page holds one of the five buyer questions, with the author and date in the footer and the answer as structured data.

Part 2

Measuring citations

A site built for assistants is only a guess until you ask the assistants. So you measure it the way a buyer meets it, by asking the buyer's questions and reading the sources each answer cites.

Study first

  • Decide what to count. Count whether the site is among an assistant's sources for a buyer's question, and who is cited instead.

Build

  1. Write pnpm aeo and the Monday job aeo-watch, an Inngest scheduled function. They ask each assistant each question with its web search on, which for Claude is the web search tool, and keep the result in the citations table.
  2. Run it once to record the baseline.

Done when

  • The baseline is recorded, with the sources cited in the site's place.
Citations
The reference run's baseline was 0 of 5. The site was not yet public. The sources cited were other products named WorkBot, review sites and general articles.
Technical notes
  • The curriculum asks 3 assistants, but in the reference run only Claude was asked, because it was the only assistant with a key. Another assistant joins as one more entry in the list.
  • Check whether other products share your product's name. In the reference run they did, so the first sentence of each answer should say whose WorkBot this is. Also ask the questions without the name, as buyers ask them.

Part 3

The target list

With the site measured, the next step is to choose whom to approach. Criteria in code keep the list honest, because every score can be traced back to its evidence and recomputed.

Study first

  • Learn to write an ideal customer profile as criteria a machine can check, with evidence for each fact. Use company-level data only, and gather no personal data.

Build

  1. Write src/lib/accounts.ts with an account's shape and the criteria with their points, so that an unknown fact scores nothing.
  2. Have an agent find accounts that meet the two required criteria and record evidence for every fact. In the reference run, an account had to be an independent or regional building-supply dealer in the United States, of roughly 20 to 500 employees. Let the code compute the scores, and have a person check the evidence.
  3. Grow the list toward the curriculum's 200 accounts. In the reference run, the pilot list held 25 accounts in 20 states, and five scored 10 of 10. Review held two back, one acquired this year and one that also manufactures, and the list grows to 200 in the next pass.

Done when

  • Every row has evidence for its facts, and its score can be recomputed from them.

Part 4

Outreach within the rules

A good list is worth little if the messages break the rules or land in spam. So you build the sequence so that no message can go out without its sender, a postal address and a working way to opt out.

Study first

  • Learn the rules for commercial email. CAN-SPAM is the US law on commercial email, and in the EU a first email to a company needs a legitimate interest under the General Data Protection Regulation (GDPR).
  • Learn the DNS records that show mail comes from your domain. They are SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) and DMARC (Domain-based Message Authentication, Reporting and Conformance).
  • Read RFC 8058, the internet standard for one-click unsubscribe.

Build

  1. Write src/lib/outreach.ts, a three-email sequence that stops at a reply. Each message carries the sender, a postal address and a signed one-click unsubscribe.
  2. Make /api/unsubscribe record the address in suppressions, the table that every send checks first.
  3. Write LinkedIn and Instagram messages per account from the same evidence, for a person to send, and automate no account.

Done when

  • Tests show the opt-out in every message and a forged link refused, and they show no email due after a reply or an unsubscribe.

Part 5

The growth report

The day ends with a short report, because the next iteration depends on knowing what was measured and what was not.

Build

  1. Write docs/growth.md with the citations and replies after the first run, and what the next iteration changes.

Done when

  • The report says what was measured, what was not, and why.

Resources