How Often to Track AI Visibility: Daily, Weekly or Monthly?
How often to track AI visibility depends on sample size, not the calendar. Real intervals from 280 answers, a sample-size script and a daily vs weekly guide.
Track often enough to collect the answers your decision needs. A 10% mention rate measured on one run of 50 prompts on one engine has a 95% interval of ±8.5 points. Across four engines it's ±4.2, and over a week of daily runs ±1.6. Track daily if you report weekly, weekly if you report monthly, and monthly only for a baseline.
The question "how often should we track AI visibility?" sounds like scheduling. It's really statistics. AI answers change on every re-ask, so each run is a sample, and the precision of your number depends on how many samples you pool.
This post shows real intervals from our own tracking data and the answers you need for a given precision. It also gives a script for planning your schedule and a decision framework for daily vs weekly vs monthly.
Data used: 35 unbranded prompts × 4 engines (ChatGPT, Gemini, Perplexity, Claude) × 2 runs on 2026-10-20, collected by BugViso's AI Visibility Tracker for bugviso.com against five anonymised competitors.
Why Frequency Is a Sample-Size Question
Two facts from our data drive everything below.
Answers drift. We asked the same 50 prompts twice, 23 minutes apart. In pairs where an answer named a tracked brand, the second answer named a different set of brands 40% of the time (full drift study). A single run is one draw from a distribution.
Rates are small. Our brand was named in 21 of 280 unbranded answers, a 7.5% mention rate. Small proportions have wide intervals relative to their size. Moving from 6 mentions to 9 looks like +50% growth but is well within noise.
The right tool is a confidence interval for a proportion. We use the Wilson score interval. It behaves well near 0% and with small samples, where the textbook normal approximation breaks (binomial proportion confidence intervals).
Real Intervals From One Day of Tracking
Mention rates for our brand on unbranded prompts, with 95% Wilson intervals:
| Scope | Mentions / answers | Mention rate | 95% interval |
|---|---|---|---|
| ChatGPT | 6 / 70 | 8.6% | 4.0% – 17.5% |
| Gemini | 3 / 70 | 4.3% | 1.5% – 11.9% |
| Perplexity | 12 / 70 | 17.1% | 10.1% – 27.6% |
| Claude | 0 / 70 | 0.0% | 0.0% – 5.2% |
| All four engines | 21 / 280 | 7.5% | 5.0% – 11.2% |
| Leader (Competitor A), all engines | 71 / 280 | 25.4% | 20.6% – 30.8% |
What the table lets you say, and not say:
- ChatGPT vs Gemini: no conclusion. 8.6% and 4.3% look different, but the intervals overlap heavily.
- Perplexity vs Claude: a real gap. The intervals don't overlap.
- Claude's 0% is not "zero". With 70 answers, the true rate could be as high as 5.2%.
- The leader is clearly ahead. Its interval starts at 20.6%, far above our upper bound of 11.2%.
BugViso's tracker computed this interval itself on the first run alone: 4.4% – 13.5% on 140 answers. The second run narrowed it, which is the point of collecting more answers.
How Precision Grows with Answers
This is the planning table. It assumes a true mention rate of 10% and shows the 95% interval for common setups. It's the output of the script further down.
true mention rate assumed: 10%
prompts engines runs answers 95% interval +/- pts
25 1 1 25 2.2-25.0 11.4
50 1 1 50 4.3-21.4 8.5
50 4 1 200 6.6-14.9 4.2
50 4 7 1400 8.5-11.7 1.6
50 4 30 6000 9.3-10.8 0.8
100 4 7 2800 8.9-11.2 1.1And for a brand with a 25% mention rate:
true mention rate assumed: 25%
prompts engines runs answers 95% interval +/- pts
50 1 1 50 14.3-37.4 11.6
50 4 1 200 19.5-31.4 6.0
50 4 7 1400 22.8-27.3 2.3
50 4 30 6000 23.9-26.1 1.1Higher rates need more answers for the same margin in points, because the variance of a proportion peaks at 50%.
Answers needed for a target margin
| True rate | ±5 points | ±3 points | ±2 points |
|---|---|---|---|
| 5% | 82 | 208 | 465 |
| 10% | 141 | 384 | 864 |
| 25% | 285 | 799 | 1,799 |
Read it as: to report a brand at about 10% visibility to within ±3 points, you need about 384 answers in the window. This is ordinary sample size determination, applied to answers instead of survey respondents. With 50 prompts and 4 engines (200 answers per run), that's two runs. To get ±2 points, it's five runs.
Daily vs Weekly vs Monthly: What Each Schedule Buys
Assume 50 prompts and 4 engines, so 200 answers per run, and a 10% mention rate.
| Schedule | Runs a month | Answers a month | Precision per week | Precision per month | Detects reliably |
|---|---|---|---|---|---|
| Daily | ~30 | ~6,000 | ±1.6 pts (1,400 answers) | ±0.8 pts | A 3-point move within a week |
| Weekly | ~4.3 | ~860 | ±4.2 pts (200 answers) | ±2.0 pts | A 5-point move within a month |
| Monthly | 1 | 200 | — | ±4.2 pts | Only large moves (8+ points) |
"Detects reliably" is a rule of thumb: two periods differ convincingly when their intervals don't overlap, which needs a change of about twice the margin.
This gives a simple rule. Report one level slower than you run. What goes into that report is covered in our AI visibility report template. Daily runs make weekly reports trustworthy. Weekly runs make monthly reports trustworthy. Monthly runs are a snapshot, fine for a baseline or a quarterly check, but too noisy to show the effect of a single content change.
💡 Rule of thumb: if you can't act on a weekly number, you don't need daily runs. If you show clients a weekly chart, you do.
A Decision Framework
| Your situation | Schedule | Why |
|---|---|---|
| Agency reporting weekly to a client | Daily, pooled weekly | Weekly charts need ~1,400 answers per point to be meaningful |
| Launching or fixing content and measuring the effect | Daily during the change, then weekly | You want to see a move within days and confirm it holds |
| Brand monitoring, monthly management report | Weekly | ~860 answers a month give ±2 points |
| One-off baseline or pre-sale audit | One run, plus a re-run | Two runs halve the guesswork. Present intervals, not single rates |
| Very low visibility (under 5%) | Weekly at most, focus on fixes | Intervals near zero stay wide; spend on content, not samples |
Two things change the math for you:
- More prompts beat more runs when your prompts are diverse. 100 prompts weekly gives the same answer count as 50 prompts twice a week, with more topic coverage. Our prompt set guide covers how to build one.
- Per-engine and per-topic segments need their own sample. A ±1.6-point weekly headline can still hide a Claude segment of 70 answers with a ±6-point interval.
Segments Need Their Own Sample
A headline built on 1,400 weekly answers can be precise while the segments under it are not. Our 50 prompts fell into 7 topics with 3 to 9 prompts each. With 4 engines and daily runs, a topic of 3 prompts collects 84 answers a week. One of 9 prompts collects 252.
| Segment | Answers | Interval at ~10% |
|---|---|---|
| One topic, one day (3 prompts × 4 engines × 1 run) | 12 | too few to report |
| One engine, one topic, one week (3 prompts × 1 engine × 7 runs) | 21 | 2.7% – 28.9% |
| Small topic, one week (3 prompts × 4 engines × 7 runs) | 84 | 4.9% – 17.7% |
| Medium topic, one week (6 prompts × 4 engines × 7 runs) | 168 | 6.4% – 15.6% |
| Large topic, one week (9 prompts × 4 engines × 7 runs) | 252 | 6.8% – 14.2% |
Two practical consequences:
- Small topics need longer windows. Report a three-prompt topic monthly, or add prompts to it. A weekly chart for it would be mostly noise.
- Engine × topic cells are almost always low confidence. 21 answers a week can't separate 5% from 25%. Use these cells to find answers worth reading, not to report movement.
This is why a minimum segment size matters more than the schedule. A report that shows every engine × topic cell weekly invites clients to read noise as news.
Plan Your Schedule with a Script
This standard-library script computes Wilson intervals, the answers needed for a target margin, and the planning grid above.
#!/usr/bin/env python3
"""Confidence intervals and sample sizes for AI visibility (mention rate) tracking.
Usage:
python3 wilson_sample_size.py ci 21 280 # 21 mentions in 280 answers
python3 wilson_sample_size.py plan 0.10 0.03 # answers needed for +/-3 pts at a 10% rate
python3 wilson_sample_size.py grid 0.10 # interval width for common prompt x engine x run setups
"""
import math, sys
Z = 1.96 # 95% confidence
def wilson(k, n, z=Z):
if n == 0:
return 0.0, 0.0
p = k / n
d = 1 + z * z / n
centre = (p + z * z / (2 * n)) / d
half = z * math.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) / d
return max(0.0, centre - half), min(1.0, centre + half)
def answers_needed(p, margin, z=Z):
"""Smallest n whose Wilson half-width at rate p is <= margin."""
n = 1
while True:
lo, hi = wilson(round(p * n), n, z)
if (hi - lo) / 2 <= margin:
return n
n += 1
def main():
cmd = sys.argv[1] if len(sys.argv) > 1 else "grid"
if cmd == "ci":
k, n = int(sys.argv[2]), int(sys.argv[3])
lo, hi = wilson(k, n)
print(f"{k}/{n} = {100 * k / n:.1f}% 95% interval {100 * lo:.1f}% - {100 * hi:.1f}%")
elif cmd == "plan":
p, m = float(sys.argv[2]), float(sys.argv[3])
print(f"rate {100 * p:.0f}%, margin +/-{100 * m:.0f} pts -> {answers_needed(p, m)} answers")
else:
p = float(sys.argv[2]) if len(sys.argv) > 2 else 0.10
print(f"true mention rate assumed: {100 * p:.0f}%")
print(f"{'prompts':>8}{'engines':>8}{'runs':>6}{'answers':>9}{'95% interval':>18}{'+/- pts':>9}")
for prompts, engines, runs in [(25, 1, 1), (50, 1, 1), (50, 4, 1), (50, 4, 7), (50, 4, 30), (100, 4, 7)]:
n = prompts * engines * runs
lo, hi = wilson(round(p * n), n)
print(f"{prompts:>8}{engines:>8}{runs:>6}{n:>9}{100 * lo:>10.1f}-{100 * hi:<6.1f}{100 * (hi - lo) / 2:>8.1f}")
if __name__ == "__main__":
main()Real output for our numbers:
$ python3 wilson_sample_size.py ci 21 280
21/280 = 7.5% 95% interval 5.0% - 11.2%
$ python3 wilson_sample_size.py ci 0 70
0/70 = 0.0% 95% interval 0.0% - 5.2%
$ python3 wilson_sample_size.py plan 0.10 0.03
rate 10%, margin +/-3 pts -> 384 answersEdit the (prompts, engines, runs) list in grid to match the plan you're considering. The interval math uses only Python's math module. Answers are counted as independent samples. Repeat answers to the same prompt are correlated, so treat the result as a lower bound when your prompt set is small.
How BugViso Schedules and Pools Runs
BugViso's AI Visibility Tracker is built around run frequency and pooled measurement:
- You choose when it runs. Automatic runs are off by default. Turn them on per brand and pick daily, weekly or monthly, or start a run any time with Run now. Each run asks every prompt on every engine and uses 1 credit.
- At most one automatic run a day. The scheduler starts a brand's automatic run once per period: once a day on daily, every 7 days on weekly, once a calendar month on monthly.
- The schedule card shows the cost. For each frequency it shows credits per month and how long your current balance lasts, before you switch.
- Weekly wrap-ups pool daily runs. The weekly report combines every daily run of the week on the same prompt version, and compares prompts won, gained and lost with the previous week.
- Intervals and low-confidence flags. Pooled visibility shows a 95% Wilson interval, and any segment under 20 answers is flagged low confidence.
The schedule options and pooled reports are on the AI visibility tracker page.
Mistakes That Waste Runs
Running daily, reporting daily. A day of 200 answers at 10% visibility is ±4.2 points. Daily charts mostly show noise, so pool before you plot.
Comparing a pooled week with a single run. Use the same window length on both sides of any comparison.
Editing prompts mid-period. A changed prompt set is a different instrument, and pooling across versions mixes two measurements. Change prompts at period boundaries.
Ignoring per-engine sample size. Four engines share the headline sample, but each engine only has a quarter of it. Check engine intervals before you write "Claude dropped".
Paying for precision you won't use. If a report goes out monthly and nobody acts in between, weekly runs give ±2 points a month, which is enough.
FAQ
How often should I check my brand in ChatGPT?
Check it as part of a fixed prompt set, at least weekly. One run of 50 prompts on ChatGPT alone gives a ±8.5-point interval at a 10% mention rate. Pool a week of daily runs if you need to see small changes.
Is daily AI visibility tracking worth it?
It is if you report weekly or are measuring the effect of a change. Daily runs give about 1,400 answers a week across 4 engines, enough for ±1.6 points. If you only report monthly, weekly runs are usually enough.
How many prompts do I need to track AI visibility?
Think in answers: prompts × engines × runs. For ±3 points at a 10% rate you need about 384 answers. That's 50 prompts on 4 engines for 2 runs, or 100 prompts for 1 run.
Why does my AI visibility jump around every day?
Because each answer is a sample. Engines rewrite your question into different searches and read different pages on each call. Pool several runs and look at intervals before treating a change as real.
Is monthly tracking enough for AI visibility?
For a baseline or a quarterly check, yes. A single monthly run of 200 answers can only show large moves (around 8 points or more at a 10% rate). It won't show the effect of individual content changes.
Conclusion
Set your AI visibility schedule from the answers you need, not the calendar: run one level faster than you report and always show intervals, which is how BugViso's AI visibility tracking pools daily runs into weekly trends.
See where your site stands
Run a free BugViso audit for SEO, speed, accessibility and AI search readiness — with fixes you can ship today.