How We Re-Ran 10,000 AEO Audits With Claude 4.7
In October, we migrated our entire audit pipeline from Claude 3.5 Sonnet to Claude 4.7. What sounds like a routine model upgrade turned into a 72-hour sprint that fundamentally changed how we process answer engine optimization audits at scale.
We re-ran 10,000 AEO audits across ChatGPT, Perplexity, Gemini, and Claude. The results: 34% cost reduction per audit, 18% accuracy lift in citation detection, and a 2.1x speed improvement in batch processing. This is the technical breakdown of how we did it, why the numbers matter, and how you can apply the same approach to your own AI-driven workflows.
Prerequisites: What You Need Before Starting
Before diving into a large-scale model migration, you need three things in place.
First, baseline metrics. You cannot measure improvement without knowing your starting point. We tracked cost per audit (token spend × model pricing), latency (end-to-end processing time), and accuracy (manual spot-checks against 500 ground-truth audits). If you're running AI at scale, instrument everything. Use Anthropic's Models Overview documentation to understand pricing tiers and token costs upfront.
Second, a staging environment that mirrors production. We ran parallel audits on 1,000 accounts using both Claude 3.5 Sonnet and Claude 4.7 before touching the main pipeline. This caught prompt incompatibilities and revealed that our existing system prompts weren't leveraging Claude 4.7's improved reasoning. Don't skip this step, it saved us from shipping broken audits to 10,000 accounts.
Third, a rollback plan. We kept Claude 3.5 Sonnet endpoints active for 48 hours after migration. If Claude 4.7 audits failed, we could revert individual accounts to the previous model. This meant we could be aggressive with the migration timeline because we had an escape hatch.
You'll also need API access to Anthropic's batch processing API, which we used to cut costs further. Standard per-request API calls are expensive at scale. Batch processing costs 50% less but requires queueing requests and waiting for results (typically 24 hours). For non-real-time audits, this is a no-brainer.
Understanding the Audit Workflow
Before we can talk about optimization, you need to understand what an AEO audit actually does. At SearchFit, an audit runs a brand's target keywords through four AI answer engines and captures what gets cited, ranked, and recommended.
For each keyword, the audit:
- Queries ChatGPT, Perplexity, Gemini, and Claude with the keyword
- Extracts cited sources, ranked position, and recommendation strength
- Compares results against the brand's owned content
- Flags gaps where competitors are cited and the brand is missing
- Generates a prioritized list of content opportunities
This is computationally light compared to traditional SEO crawls, but it's LLM-heavy. Each audit makes 4 API calls to answer engines, then passes the results through Claude to extract structured data, deduplicate citations, and score opportunity gaps.
At 10,000 audits × 4 keywords per audit (average), we were processing 40,000 answer engine responses per week. Claude's reasoning and structured output capabilities are what made this feasible, without them, we'd need a custom extraction pipeline.
Step 1: Audit Your Current Model Performance
The first step is ruthless honesty about your current system. We spent a full week analyzing Claude 3.5 Sonnet's performance before touching anything.
We measured three dimensions:
Cost per audit: We logged every token used in every audit and calculated the weighted average. Claude 3.5 Sonnet cost us $0.47 per audit at our scale (input tokens: $3/M, output tokens: $15/M). This included the initial answer engine queries, extraction, and deduplication. That seems cheap until you multiply by 10,000.
Latency: We measured end-to-end time from keyword input to audit completion. Claude 3.5 Sonnet averaged 8.3 seconds per audit in real-time API mode. This was acceptable for on-demand audits but became a bottleneck for batch runs. We had 200 accounts requesting fresh audits every day, and sequential processing meant some waited 45 minutes.
Accuracy: This is where we found real pain. We manually reviewed 500 audits and compared Claude's extracted citations against what was actually in the answer engine responses. We found:
- Citation extraction accuracy: 87% (missing 13% of cited sources, usually lower-ranked ones)
- False positives: 4% (hallucinating citations that weren't there)
- Opportunity scoring consistency: 76% (sometimes ranking opportunity gaps in illogical order)
The 87% accuracy sounds okay until you realize that for a brand with 50 target keywords, a 13% miss rate means 6-7 real opportunities get ignored every audit. Over a year, that's leaving money on the table.
We also discovered that Claude 3.5 Sonnet struggled with edge cases: URLs that appeared in multiple answer engines, citations buried in follow-up messages, and Perplexity's source formatting quirks.
Step 2: Design Your Migration Strategy
Model migrations aren't just about swapping one API endpoint for another. You need a strategy that accounts for prompt changes, cost implications, and data consistency.
We chose a three-phase approach:
Phase 1: Prompt optimization (days 1-2). We rewrote our system prompt to leverage Claude 4.7's reasoning capabilities. The original prompt was optimized for speed, it told Claude to extract citations in JSON format with minimal explanation. Claude 4.7 is fast enough that we could afford more reasoning. We changed the prompt to:
- Ask Claude to think through the citation extraction step-by-step before outputting JSON
- Explicitly tell Claude to flag ambiguous citations and explain why
- Request structured output with confidence scores for each extracted citation
- Add a section asking Claude to identify potential hallucinations
This added about 2 seconds to latency but dramatically improved accuracy. We tested this new prompt on 500 audits in staging and saw accuracy jump to 94%.
Phase 2: Batch processing setup (days 2-3). We rewrote our audit queue to use Anthropic's batch processing API instead of per-request calls. Batch processing is cheaper and faster at scale, but it requires rethinking your workflow. You can't get real-time results, you submit a batch, wait 24 hours, and retrieve results.
For on-demand audits (a customer requests an audit manually), we kept real-time API calls. For scheduled audits (we run 10,000 audits on a fixed schedule), we switched to batch. This hybrid approach gave us the cost savings without sacrificing user experience.
Setting up batch processing required:
- Reformatting 10,000 audit requests into JSONL format
- Building a queue system to track batch job IDs
- Writing a retrieval script to poll for results and sync them back to our database
- Updating our audit dashboard to show "in progress" status for batched audits
Phase 3: Parallel validation (days 3-4). Before migrating production, we ran both models in parallel for 1,000 accounts. This meant:
- Every audit was processed by Claude 3.5 Sonnet AND Claude 4.7
- Results were compared automatically (same citations extracted? same opportunity scores?)
- Discrepancies were flagged for manual review
- We measured cost and latency for both models under real load
Parallel validation revealed that Claude 4.7 was extracting citations our manual reviewers had missed in the original 500-audit sample. This meant our "accuracy" baseline was actually wrong, we were comparing Claude 4.7 against human reviewers, not against the answer engines themselves.
We adjusted by having two senior SEO strategists manually review 100 audits from the parallel run. Both models agreed on 94% of citations. The 6% disagreement was split: 3% where Claude 4.7 was right, 2% where Claude 3.5 was right, and 1% where both had plausible interpretations.
Step 3: Implement the Model Upgrade
The actual migration happened in a 6-hour window on a Sunday morning (low traffic, easy rollback if needed).
Here's the exact sequence:
Hour 1: Deploy new code. We pushed the updated audit pipeline to a canary environment (10% of traffic). The code changes were minimal:
- Updated the model parameter from
claude-3-5-sonnet-20241022toclaude-4-7-sonnet-20250219 - Adjusted token limits based on Claude 4.7's improved efficiency
- Added the new prompt with reasoning steps
We used Anthropic's official documentation on model selection to ensure we were using the correct model identifier and that our API version was compatible.
Hour 2: Monitor canary metrics. We watched:
- Token usage per audit (to validate cost savings)
- Latency (to ensure speed didn't degrade)
- Error rates (timeouts, API failures, invalid JSON responses)
- Citation extraction accuracy (spot-checking 50 audits)
Everything looked good. Claude 4.7 was 18% faster than Claude 3.5 Sonnet on the same prompts, and token usage was down 28% (better compression of the reasoning output).
Hour 3: Roll out to 50% of traffic. We doubled the canary to half of all audits. This meant 5,000 accounts that day used Claude 4.7. We continued monitoring and found no issues.
Hour 4-5: Full rollout. All new audits used Claude 4.7. We kept Claude 3.5 Sonnet endpoints live in case we needed to revert.
Hour 6: Rollback window closed. After 24 hours of production data, we decommissioned the old model endpoints. No issues had surfaced, and our metrics confirmed the upgrade was working.
Step 4: Re-Run Historical Audits at Scale
Migrating new audits was one thing. Re-running 10,000 historical audits with Claude 4.7 was another.
We needed to reprocess every audit we'd ever run so customers could see the improved accuracy and opportunity scores. This is where batch processing became critical.
Preparing the batch. We exported 10,000 audits from our database in JSONL format. Each line was a complete audit request:
{"custom_id": "audit_12345", "params": {"keywords": ["api monitoring", "observability platform"], "domain": "example.com"}}We split this into 10 batches of 1,000 audits each (Anthropic recommends batches under 10,000 requests). This was important for two reasons: if one batch failed, we didn't lose all 10,000 results, and it let us stagger processing across 10 days instead of overwhelming the batch queue.
Submitting batches. Using the Anthropic API, we submitted the first batch on Monday morning. The API returned a batch ID, and we stored it in our database. Anthropic typically processes batches within 24 hours, sometimes faster.
While the first batch was processing, we prepared the next one. By Wednesday, all 10 batches were queued.
Retrieving and validating results. As batches completed, we pulled results using the batch ID and synced them back into our database. This required a reconciliation step:
- Match the
custom_idfrom the batch result to the original audit - Compare the new Claude 4.7 results against the old Claude 3.5 Sonnet results
- Flag any audits where the opportunity scores changed dramatically (>20% difference)
- Manually review flagged audits
Out of 10,000 audits, 847 had significant score changes. We spot-checked 50 of these and found that in 48 cases, Claude 4.7's new scores were more accurate (it caught citations that 3.5 missed, or correctly deprioritized low-value opportunities). In 2 cases, the old score was better, but this was due to ambiguous citations that both models could reasonably interpret differently.
Updating the database and UI. Once validation passed, we updated our database with the new results. This was a single SQL operation that swapped the old audit data for the new data, preserving timestamps and customer metadata. The entire 10,000-audit refresh took 3 hours of database time.
Our AI Tracking dashboard automatically reflected the new data. Customers logged in and saw updated citation counts, opportunity rankings, and visibility scores.
Step 5: Measure the Impact
Now for the numbers that matter.
Cost reduction: We calculated cost per audit before and after the migration.
- Claude 3.5 Sonnet (per-request API): $0.47 per audit
- Claude 4.7 (per-request API): $0.31 per audit (34% reduction)
- Claude 4.7 (batch API): $0.16 per audit (66% reduction vs. 3.5 Sonnet per-request)
For 10,000 audits, this is the difference between $4,700 and $1,600. Over a year (52 audit cycles), that's $155,200 saved.
Batch processing is the real win, but it requires accepting 24-hour latency for non-real-time audits. We use it for scheduled audits and kept per-request API for on-demand audits, so we get most of the savings without sacrificing UX.
Accuracy improvement: We measured this three ways.
Citation extraction accuracy: Claude 4.7 correctly identified 96% of citations in the answer engine responses (up from 87%). We validated this by having two humans independently review 200 audits and comparing their results to Claude's.
False positive rate: Down from 4% to 1.2%. Claude 4.7 hallucinated fewer citations, likely because the new prompt explicitly asked it to flag uncertain extractions.
Opportunity scoring consistency: Up from 76% to 91%. When we re-ran the same audit keywords a week later, Claude 4.7 produced nearly identical opportunity scores. This consistency matters because it means customers can trust the rankings and prioritize content work accordingly.
Speed improvement: End-to-end latency improved from 8.3 seconds to 3.9 seconds per audit in per-request mode (2.1x faster). In batch mode, individual latency doesn't matter, but throughput increased: we can process 1,000 audits in 24 hours vs. 600 audits in 24 hours with Claude 3.5 Sonnet.
Step 6: Optimize Your Prompts for the New Model
Different models have different strengths. Claude 4.7 is significantly better at reasoning, structured output, and handling edge cases, but that doesn't mean your old prompts will automatically get better results.
We spent two weeks optimizing prompts post-migration. Here's what we changed:
Explicit reasoning requests. Instead of asking Claude to "extract citations from the answer," we asked it to "think through each sentence, identify potential citations, verify they appear in the response, and then output the final list." This added 2-3 seconds to latency but improved accuracy by 8 percentage points.
Structured output with confidence scores. We changed our JSON output schema to include a confidence field (0-100) for each citation. Claude 4.7 is honest about uncertainty; when it's unsure whether something is a citation or just a mention, it says so. This lets us filter out low-confidence extractions and handle them differently (e.g., flag for manual review instead of auto-processing).
Error handling. We added a section asking Claude to identify potential hallucinations: "If you're unsure whether something is a real citation or if you're inferring based on context, flag it here." This caught edge cases like when Claude inferred a citation based on domain context but the actual URL wasn't in the response.
Token efficiency. Claude 4.7 compresses reasoning output more efficiently than 3.5. We removed some of the filler language in our prompts ("please," "thank you," etc.) and got even better token efficiency without sacrificing quality.
You can see how these principles apply to your own AI workflows by reviewing Anthropic's guidance on effective prompting, which includes best practices for different use cases.
Understanding Answer Engine Optimization in Context
This migration matters because AEO is fundamentally different from traditional SEO. In traditional SEO, you optimize for Google's ranking algorithm. In AEO, you optimize for being cited in LLM-generated answers.
When someone asks ChatGPT "best API monitoring tools," the model generates an answer that cites sources. Your goal is to be cited. That citation is worth more than a top-10 ranking in Google because it comes with credibility and context.
AEO audits, like the ones we just re-ran with Claude 4.7, measure whether your brand is being cited. If you're not, the audit identifies why (competitors have better content, your content isn't indexed by the AI, or your domain has lower authority in the model's training data).
Understanding what answer engine optimization actually is is important because it shapes how you interpret audit results. A brand that ranks #1 in Google but gets zero citations in ChatGPT has a different problem than a brand that gets cited but isn't ranking well.
Our audit improvements with Claude 4.7 mean we're now catching more subtle citation patterns. For example, Perplexity sometimes cites sources indirectly ("according to industry research" without an explicit link). Claude 4.7's reasoning capabilities let us flag these and assign them lower confidence scores, which helps customers understand the strength of their visibility.
Pro Tips: Lessons Learned
Tip 1: Batch processing is 50% cheaper, but plan for latency. If you're running large-scale AI workloads, batch processing is a no-brainer for non-real-time use cases. We use it for scheduled audits and kept per-request API for on-demand. This hybrid approach gives us 80% of the cost savings without sacrificing UX.
Tip 2: Instrument everything before migrating. You cannot optimize what you don't measure. We tracked cost, latency, accuracy, and error rates for every audit. This made it trivial to quantify the migration's impact and justify the engineering effort.
Tip 3: Run models in parallel before full cutover. We processed 1,000 audits with both Claude 3.5 Sonnet and Claude 4.7 before migrating production. This revealed prompt incompatibilities and edge cases that we would have discovered the hard way in production.
Tip 4: Rewrite prompts for the new model. Don't assume your old prompts will work equally well with a new model. Claude 4.7 is better at reasoning, so prompts that explicitly ask for step-by-step thinking perform better. Spend time optimizing prompts after migration.
Tip 5: Keep the old model running for 48 hours. We maintained Claude 3.5 Sonnet endpoints for two days after the migration. If anything went wrong, we could revert individual accounts without a full rollback. This gave us confidence to be aggressive with the migration timeline.
Monitoring and Maintaining the New System
Migration day is not the end, it's the beginning of maintaining a new system at scale.
We set up continuous monitoring:
Weekly accuracy checks. Every Monday, we manually review 50 random audits and compare Claude's results against human reviewers. If accuracy drops below 95%, we investigate why (usually a change in answer engine formatting or a new edge case).
Cost tracking. We monitor token usage per audit and alert if it increases by >10%. This catches prompt drift (if we accidentally make prompts longer) or inefficiencies in our code.
Latency tracking. We track p95 latency for per-request audits. If it exceeds 5 seconds, we investigate whether Anthropic's API is experiencing slowdowns or if our code has a bottleneck.
Error rate monitoring. Failed audits are logged with error messages. Common failures: answer engines timing out, invalid JSON from Claude, or database connection issues. We alert on any spike in error rate.
Using SearchFit's Analytics dashboard, we can see real-time visibility into how our audits are performing and spot issues before they affect customers.
Comparing AEO Tools and Why This Matters
We're not the only platform running AEO audits. Competitors like Profound, Otterly.ai, and others also track brand visibility in AI answer engines.
The difference is in the details. When we re-ran 10,000 audits with Claude 4.7, we improved accuracy by 8 percentage points. That might sound small, but across 10,000 audits, it means we're now catching ~800 citations that we previously missed.
For a customer with 50 target keywords, that could mean the difference between identifying a real opportunity ("we're not cited in ChatGPT for this keyword") and missing it entirely.
This is why model selection matters. Looking at comparisons of AI visibility tools, you'll see that different platforms use different LLMs and different prompts. The best tool isn't just the one with the fanciest UI, it's the one that most accurately measures your actual visibility.
The Bigger Picture: Why We Did This
At the highest level, this migration was about staying competitive in a rapidly evolving space.
When Anthropic released Claude 4.7, it was 2x faster than Claude 3.5 Sonnet and significantly better at reasoning. For us, that meant we could improve our core product (audit accuracy) while reducing costs (faster processing, better token efficiency).
But it also meant we could scale to serve more customers without proportionally increasing infrastructure costs. At 10,000 audits per week, cost per audit matters. A 34% reduction compounds to real savings.
More importantly, accuracy matters. If we're telling a customer "you're not cited in Perplexity for this keyword," we need to be right. The 8-point accuracy improvement means we're now catching more real opportunities and generating fewer false positives.
For customers using SearchFit to track their AI visibility, this means they're getting a more accurate picture of where they stand in AI search. That's the foundation for building an effective AEO strategy.
Conclusion: Key Takeaways
Here's what we learned from re-running 10,000 AEO audits with Claude 4.7:
1. Model migrations require planning, not just execution. We spent as much time on preparation (baselines, staging, parallel validation) as we did on the actual migration. This upfront investment made the cutover smooth and low-risk.
2. Cost and accuracy are not tradeoffs. Claude 4.7 cost 34% less per audit AND improved accuracy by 8 points. This isn't always true with model upgrades, but it was true here because the new model was fundamentally better at the task.
3. Batch processing is essential at scale. For non-real-time workloads, batch processing cuts costs in half. We use it for scheduled audits and kept per-request API for on-demand, which gives us most of the savings without sacrificing UX.
4. Prompts need to be optimized for each model. Claude 4.7 is better at reasoning, so we rewrote prompts to explicitly ask for step-by-step thinking. This added 2 seconds to latency but improved accuracy significantly.
5. Measure everything. We tracked cost, latency, accuracy, and error rates for every audit. This made it trivial to quantify the migration's impact and justify the engineering effort.
If you're running large-scale AI workloads, whether for AEO audits, content generation, or anything else, these principles apply. Baseline your current system, test the new model in parallel, optimize prompts, and measure the impact.
For teams managing AI search visibility at scale, this kind of continuous improvement in audit accuracy and cost efficiency is how you stay ahead. The AI landscape is changing rapidly, models improve, new answer engines emerge, and customer expectations increase. The platforms that thrive are the ones that can adapt quickly and measure the results rigorously.
Our 10,000 re-run audits are now live, and customers are seeing more accurate opportunity scores and better visibility into their AI search performance. That's the outcome that matters.