Tag: MAA

  • The Athlete Weekly AI Report: What Changed and What To Do

    The weekly AI report is one branded email an athlete gets every week that covers both halves of their online presence: what people said about them, and how their site is doing. It answers a simple question in plain language: what changed this week, and what should you do next. Where we have a live connection to real data, the report shows real numbers. Where we do not, it says “not yet connected” instead of inventing one.

    This is the deliverable behind the marketed promise of ongoing value. It is not a vanity dashboard of follower counts. It is built on the MAA framework (Metrics, Analysis, Action): real metrics week over week, a short honest analysis that names the weakest area, and up to three concrete actions, the first of which always targets that weakest area. This article is the standard that report is built to.

    What the weekly AI report is

    The report is the “Perform” stage of the Content Factory made systematic for one athlete. It runs weekly, reads only real data, and is generated as a file first; sending is consent-gated and idempotent, so an athlete never gets a duplicate and never gets a report for a week we did not actually measure.

    It has two halves, and both are honest about their edges. The mentions half is fully live. The site half reports every signal we can collect for free, and clearly labels every signal we cannot yet reach.

    Half one: what people said about you

    This half is the mentions digest, and it is live today. Each week it surfaces:

    • New mentions this week: organic positive mentions of the athlete found across the platforms we sweep.
    • The ad-ready spotlight: the single best quote, the kind an athlete could actually put on their site or in an ad, chosen for marketability, not just positive sentiment.
    • A game plan: what to do with the week’s mentions.
    • One-click action buttons: add a mention to the site, post it to LinkedIn, or turn it into an ad.

    This half runs on the Positive Mentions System, built by Cam Hazzard and developed with Dennis Yu. Only genuinely usable, positive mentions ever reach the report; criticism is never shown to the athlete.

    Half two: your site this week (MAA)

    This half is a Metrics, Analysis, Action block about the athlete’s website, built entirely from free, no-billing signals. Every signal is independently optional: if one cannot be collected, the report says so rather than blocking or guessing.

    Metrics (real numbers only, week over week where a prior snapshot exists)

    • Site status: up or down, the actual HTTP status code, and response time in milliseconds. An HTTP 403 from bot protection is reported as a 403, not as “down.” A network failure on our side is retried once and then reported as “check inconclusive this week,” never as a confirmed outage.
    • Uptime over the last 7 days: from a free UptimeRobot account, when the site is added as a monitor.
    • Speed score out of 100, plus LCP seconds and CLS: from Google PageSpeed Insights (mobile).
    • SSL certificate: days until renewal, from a direct TLS handshake.
    • Search basics: whether the homepage has a title tag and JSON-LD structured data present.

    Deltas name the actual prior-check date (“up from 151 ms on the 25th”), never a vague “last week.” The snapshot that drives next week’s comparison is saved only on runs that actually send, so the report always compares against the last report the athlete really received.

    Analysis (one short paragraph)

    A single rule-based paragraph that calls out the weakest area (the MAA rule: the analysis must name the weakest metric, not list what we did), names any week-over-week movement, and says “not yet connected” for anything we could not collect. It never invents a number.

    Action (up to three items)

    The first action always targets the weakest signal. The priority order, as built, is: site down or server error first, then SSL expiring or no HTTPS, then a slow response or HTTP errors, then an uptime slip, then speed and Core Web Vitals, then search basics. If uptime is not connected, an action suggests connecting it.

    What is honest to say today, and what is not

    The whole value of this report is that an athlete can trust it. So the standard draws a hard line.

    Live today (real, in the report): uptime, speed score, Core Web Vitals (LCP and CLS), SSL health, search basics, and week-over-week movement on all of them, plus everything the mentions digest already does. The single honest one-line description is: “A weekly AI report on your site and your mentions: what changed and what to do next.”

    Not connected yet (we do not claim it):

    • Google Search Console data: the queries you rank for, clicks, impressions, and average position. This needs the owner’s OAuth consent per site; there is no free keyless path. The planned next step is a Search Console connector added as another optional signal, so this becomes a real part of the report once an athlete connects it.
    • Site analytics: visitors, sessions, and traffic sources. Same reason: it needs the owner’s connection.
    • Rankings movement and follower counts: not collected here, so never claimed here.
    • Any week we did not measure: the report only compares against snapshots that actually exist.

    The conversion: what the report aims actions at

    The MAA Action section is strongest when it measures a real business result, not vanity metrics. For a business, that result is a lead or a sale. For an athlete, the “sale” is fuzzier: a sponsor inquiry, a training-program purchase, a recruiting contact.

    We recommend tracking contact events, sponsor and recruiter inquiries through the Connect page, as the first conversion. The Connect page already carries the athlete’s contact path, so treating a contact event as the conversion gives the weekly report one concrete, ownable business number to trend and to aim actions at, instead of follower counts. It is the smallest honest conversion we can measure without new plumbing.

    The right conversion can differ by athlete and goal. A recruit’s conversion is a coach’s contact; a creator’s conversion may be a sponsor reply or a program sale. We set it per athlete when the site goes live. Until it is set, the report measures site health and mentions, and the conversion line is noted as pending.

    How an athlete turns it on

    The report is opt-in per athlete and off by default, so no one is emailed without consent. Turning it on is two settings on the athlete’s config: the site URL to report on, and the report switch. Without both, the digest is byte-identical to the mentions-only version, with no new output and no network calls. A safe preview path renders the full report to a file without ever sending it, so we can check a report before an athlete sees it.

    Sending itself stays behind the same consent gate as every client email: it goes out only when the athlete has consented and the cadence window is due, it skips weeks with nothing new, and it honors any unsubscribe unconditionally. Nothing in the report auto-publishes anywhere.

    Real examples

    The report runs on the shared Positive Mentions engine that has been exercised across multiple subjects. The site-health half was built and tested against theathletespotlight.com itself and the lighthouse, camhazzard.com, using the free signals above. As athletes are onboarded and opted in, each week’s report for that athlete becomes a data point, and the build of the report is itself documented in three meta articles (how the site-health section was built, how mentions were connected to athlete sites, and how the tooling was kept in sync), each with the real free-API numbers behind it. Those meta articles link back to this standard.

    Related frameworks

    Get started

    The full breakdown of what is included, the weekly AI report among it, lives on the Athlete Spotlight package page. When you are ready, get started for $30 per month and the weekly report starts once your site is live. Parents are welcome to check out on an athlete’s behalf.

    Third-party validation

    The report only uses independent, verifiable sources: Google PageSpeed Insights for speed and Core Web Vitals, a direct TLS handshake for SSL, and UptimeRobot for uptime. Because it reads real signals and refuses to invent numbers, every figure in it can be checked against the source that produced it. The MAA structure it follows is the same measurement framework BlitzMetrics uses across client reporting.

  • How I Built the Weekly AI Report

    My mentions agent already sent a weekly email. It told an athlete what people said about them that week: new mentions, the one ad-ready quote, a game plan. Good, but half a report. An athlete’s presence online is two things, what people say about you and how your site is doing. So I built the second half, and this is the story of the weekly AI report, version one.

    This is the build behind the promise on every Athlete Spotlight weekly report: your site and your mentions, what changed and what to do next. It is part of my Positive Mentions System, built by Cam Hazzard and developed with Dennis Yu, and it runs on the MAA framework (Metrics, Analysis, Action). Here is exactly how the second half got built, with the real numbers and the honest gaps.

    What the weekly AI report needed

    The assignment was easy to say and easy to get wrong: add a “your site this week” section to the existing mentions digest without touching the email safety rails. The source material was the production digest engine (digest.py) and the MAA framework from canon. The deliverable shipped as one new module, site_signals.py, 455 lines of Python, wired into the digest and committed on 2026-07-02.

    The goal category is the honest one: a client deliverable, and the part of an Athlete Spotlight subscription that makes it worth renewing. A report that reads like a person wrote it, that a 16-year-old athlete’s parent can understand, and that never says anything we did not measure.

    How I built it, step by step

    First rule I set: free APIs only. That is a standing constraint in my system (no billing), and it forced honest engineering instead of buying a dashboard. The section collects six signal families, all real numbers.

    1. Site status: up or down, the actual HTTP status code, and response time in milliseconds, from a plain stdlib fetch with no key.
    2. Uptime over the last 7 days: from UptimeRobot’s free API, the monitor matched by hostname.
    3. Speed score out of 100, plus LCP and CLS: from Google PageSpeed Insights on mobile.
    4. SSL certificate: days until renewal, read straight off a TLS handshake.
    5. Search basics: does the homepage have a title tag and JSON-LD structured data.
    6. Week-over-week deltas on all of it, computed against a history file capped at the last 60 snapshots.

    Then the MAA shape from the framework. Metrics are the numbers above. Analysis is one short rule-based paragraph that names the weakest area and the week-over-week movement. Action is up to three concrete items, and the first one always targets the weakest signal, in a fixed priority order: site down beats SSL trouble beats slow responses beats uptime slips beats speed beats search basics.

    The safe test path matters as much as the feature. A --render-only flag writes the full HTML preview and never sends, never stamps the send date, and never writes to the history file. Previews cannot skew next week’s deltas, so I can check a report before an athlete ever sees it.

    The calls I’d defend

    Three decisions in this build I would defend to anyone.

    A 403 is not “down.” Bot protection returns 403s all day. The report states the real HTTP code the site returned instead of crying outage, and when the failure is on our side of the network, it retries once, then says “check inconclusive this week.” It never invents a confirmed outage.

    Opt-in per athlete, byte-identical otherwise. The section only renders when an athlete’s config has both a site URL and the report switch on. Without both keys, the digest output is byte-identical to the old behavior, verified by diff at build time. Existing subjects felt nothing.

    Don’t claim what we can’t measure. Google Search Console queries, clicks, and traffic need the owner’s OAuth per site. There is no free keyless path, so the report says “not yet connected” instead of faking it. The sales-copy guardrail is written into the module’s own docs: here is what is honest to say, here is what is not yet.

    What it cost, honestly

    Honest label first: I do not have a token receipt for this build. The session metrics extractor is still an open gap in my system, so the numbers below are documented estimates, not measured figures.

    TaskAgent time (est.)Human time (est.)Agent cost (est.)Human cost (est.)
    Design and build site_signals.py (455 lines) plus digest wiring~2 to 3 hours of session time2 to 3 days for a developerlow single-digit dollars in tokens$560 to $840 at $35/hr

    Running cost is the part I like: $0. Every API in the report is free tier. The two optional keys (UptimeRobot and PageSpeed) are free accounts, and the HTTP, SSL, and search-basics checks need no key at all.

    What the agent did, and what a human owns

    Autonomous: collecting every signal, computing deltas against history, writing the analysis paragraph and the three actions, rendering the branded email, and previewing safely. Also failing gracefully, so a dead API can never block the mentions half of the report.

    Human required: consent. Emailing is gated exactly like before (a real recipient plus an explicit send). Connecting UptimeRobot monitors and any future Search Console OAuth are owner actions. And the report is generated as a file first, so nothing auto-publishes anywhere.

    What the agent read

    Production code read: the digest engine, the mentions knowledge-base layer, and the subject config contract. Canon loaded: the MAA framework and the no-em-dash rule (every generated line is scrubbed by construction). External docs: the UptimeRobot API v2 and PageSpeed Insights references. Tokens: not measured (see the cost section). Voice profile: not needed for the build, applied to this write-up.

    How it scores against our own gate

    This article ran through the same 18-step article gate we use on client work. What passes now: first sentence under 10 words, zero banned AI words, zero em dashes, contractions throughout, real numbers with estimates labeled as estimates, and the canonical parent linked (the Positive Mentions System, built by Cam Hazzard and developed with Dennis Yu). What still needs a human: the featured image, a final fact pass by Cam, and live cross-link verification after publish. That honesty is the point of a meta article: show the work, including the parts a person still owns.

    See the standard, and get started

    The live standard this build serves is The Athlete Weekly AI Report, the article that defines what every Athlete Spotlight report is built to. This meta article is one of three documenting that build; the next covers how positive mentions were wired into athlete sites.

    When you are ready, get started for $30 per month and the weekly report starts once your site is live. Parents are welcome to check out on an athlete’s behalf.

    The takeaway is the same one I keep coming back to: be so good they can’t ignore you, and be honest enough that they trust you when they look. A report built on numbers nobody had to pay for, that never says anything we didn’t measure, earns that trust.

    Built by Cam Hazzard, developed with Dennis Yu.