Sample Audit Report
An illustration of the format and depth you receive
Illustrative example. Every figure on this page — spend, savings, percentages and timelines — is invented to show the report's structure. These are not results from a real customer, an average across customers, or output from any automated analysis. Your report contains findings derived solely from your own billing and usage data, and the numbers will differ.
Executive Summary
Current Spend
£4,250/mo
Based on 150K tokens/month
Potential Savings
£1,820/mo
43% reduction possible
Implementation Time
2-3 days
Estimated rollout time
Key Findings
- 40% of requests use GPT-4 when GPT-3.5 would suffice
- Missing response caching for repeated queries
- Suboptimal prompt engineering increasing token usage
Cost Breakdown
By Model
£2850
67%
£950
22%
£320
8%
£130
3%
By Usage Pattern
Real-time queries
Optimization potential
£2100
49%
Batch processing
Optimization potential
£1200
28%
Development/testing
Optimization potential
£650
15%
Caching opportunities
Optimization potential
£300
8%
Recommended Fixes
1. Model Selection Optimization
// BEFORE: Always using GPT-4
const response = await openai.chat.completions.create({
model: "gpt-4",
messages: [{ role: "user", content: userInput }],
max_tokens: 1000
});
// AFTER: Smart model selection based on complexity
const model = shouldUseGPT4(userInput) ? "gpt-4" : "gpt-3.5-turbo";
const response = await openai.chat.completions.create({
model,
messages: [{ role: "user", content: userInput }],
max_tokens: 1000
});
function shouldUseGPT4(input) {
// Logic to determine if GPT-4 is actually needed
return input.length > 5000 ||
containsComplexTask(input) ||
requiresLatestKnowledge(input);
}Expected Savings: £1,200/month (42% reduction in model costs)
2. Response Caching Implementation
// BEFORE: No caching
async function getAnswer(question) {
const response = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: question }]
});
return response.choices[0].message.content;
}
// AFTER: Redis-based caching
const redis = new Redis(process.env.REDIS_URL);
async function getAnswer(question) {
const cacheKey = `answer:${hash(question)}`;
const cached = await redis.get(cacheKey);
if (cached) {
return JSON.parse(cached);
}
const response = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: question }]
});
const answer = response.choices[0].message.content;
await redis.setex(cacheKey, 3600, JSON.stringify(answer)); // 1 hour TTL
return answer;
}Expected Savings: £450/month (60% reduction in repeated queries)
3. Prompt Engineering
// BEFORE: Inefficient prompt
const prompt = `Answer this question: ${question}. Be very detailed and thorough.`;
// AFTER: Optimized prompt with clear constraints
const prompt = `Answer concisely in 2-3 sentences:
Question: ${question}
Constraints: Max 150 tokens, focus on key points only.`;Expected Savings: £170/month (30% reduction in token usage)
Implementation Timeline
Week 1
- Implement model selection logic
- Set up Redis caching infrastructure
Week 2
- Deploy caching layer
- Optimize prompt templates
Week 3
- Monitor savings and adjust
- Document new patterns