Skip to main content

Overview

OpenSight’s Brand Monitoring feature provides comprehensive tracking of your brand’s visibility across ChatGPT, Perplexity, and Google AI Overview. Monitor how often your brand appears in AI-generated responses, track visibility scores, and analyze sentiment trends over time.

Key Features

Multi-Brand Tracking

Monitor multiple brands from a single dashboard with plan-based limits

Real-Time Scores

Get up-to-date visibility scores based on mentions, position, and sentiment

Historical Trends

View 7, 14, 30, or 90-day trend data to track performance over time

Pin Important Brands

Pin your most important brands to keep them at the top of your list

Creating a Brand

1

Navigate to Brands

From your dashboard, click “Add Brand” or navigate to the brands section
2

Enter Brand Details

Provide the following information:
  • Brand Name: The name of your brand (used for mention detection)
  • Website URL: Your brand’s website (domain extracted for tracking)
  • Industry (optional): Helps contextualize your brand
3

Create Brand

Click “Create Brand” - the system will verify you haven’t exceeded your plan limits
Brand limits vary by plan. Free plans allow 1 brand, while paid plans support more. The system checks limits before creation.
// API: POST /api/brands
{
  "name": "Acme Corp",
  "website_url": "https://acme.com",
  "industry": "Technology"
}

Brand Dashboard

The brand dashboard aggregates all visibility data from the latest snapshot:

Dashboard Metrics

The overall visibility score (0-100) is calculated from the latest snapshot across all AI engines:
// From: apps/api/src/services/brand.service.ts:180-292
const dashboard = {
  overallScore: snapshot.overallScore,
  chatgptScore: snapshot.chatgptScore ?? 0,
  perplexityScore: snapshot.perplexityScore ?? 0,
  googleAioScore: snapshot.googleAioScore ?? 0,
  // ...
}

Visibility Score Calculation

OpenSight uses a sophisticated scoring algorithm to calculate brand visibility:
The visibility score is calculated using multiple factors:
// From: packages/analyzer/src/visibility-calculator.ts:23-54
export function calculateVisibilityScore(params: VisibilityParams): number {
  let score = 0;
  
  // Base score for mention
  if (params.mentioned) {
    score += 40;
    
    // Position bonus (degrades for later positions)
    if (params.position !== null && params.position > 0) {
      const positionBonus = Math.max(0, 20 - (params.position - 1) * 2);
      score += positionBonus;
    }
  }
  
  // Sentiment bonus
  if (params.sentimentScore > 0.05) {
    score += 15;
  }
  
  // Citation bonus
  if (params.hasCitation) {
    score += 15;
  }
  
  // Competitor mentioning bonus (fewer competitors = higher score)
  if (params.competitorCount < 3) {
    score += 10;
  }
  
  return Math.min(score, 100);
}
Scoring Breakdown:
  • Mentioned (+40 points): Brand appears in the response
  • Position Bonus (up to +20 points): Earlier mentions score higher
  • Positive Sentiment (+15 points): Sentiment score > 0.05
  • Citation Present (+15 points): Brand URL is cited
  • Low Competitor Mentions (+10 points): Fewer than 3 competitors mentioned

Trend Analysis

Track your brand’s performance over time with customizable date ranges:

Available Time Ranges

  • 7 days: Week-over-week changes
  • 14 days: Two-week trends
  • 30 days: Monthly performance (default)
  • 90 days: Quarterly analysis
// API: GET /api/brands/:id/trends?range=30d
{
  "brandId": "brand-123",
  "rangeInDays": 30,
  "dataPoints": [
    {
      "date": "2024-01-15",
      "overallScore": 72,
      "chatgptScore": 68,
      "perplexityScore": 75,
      "googleAioScore": 73,
      "mentions": 24,
      "sentiment": {
        "positive": 12,
        "neutral": 10,
        "negative": 2
      }
    }
  ]
}
Trends are calculated from visibility snapshots stored in the database. Each snapshot captures a point-in-time view of your brand’s visibility across all AI engines.

Managing Brands

Update Brand Details

Modify brand information at any time:
// API: PATCH /api/brands/:id
{
  "name": "Updated Brand Name",
  "website_url": "https://newurl.com",
  "industry": "SaaS",
  "pinned": true  // Pin to top of list
}

Pin Brands

Pin important brands to keep them at the top of your brand list. Pinned brands are sorted first, followed by creation date.
// From: apps/api/src/services/brand.service.ts:20-36
const userBrands = await db
  .select({...})
  .from(brands)
  .where(eq(brands.userId, userId))
  .orderBy(desc(brands.pinned), desc(brands.createdAt));

Delete Brand

Remove brands you no longer need to track:
Deleting a brand will remove all associated data including visibility snapshots, prompt results, and competitor comparisons. This action cannot be undone.
// API: DELETE /api/brands/:id
// Response: { "success": true }

Mention Detection

OpenSight uses intelligent mention extraction to find your brand in AI responses:
// From: packages/analyzer/src/mention-extractor.ts:24-80
export function extractMentions(
  text: string,
  brandName: string,
  brandUrl: string
): BrandMentionResult {
  // Case-insensitive search for brand name
  const lowerText = text.toLowerCase();
  const lowerBrandName = brandName.toLowerCase();
  
  // Extract domain from URL
  const url = new URL(brandUrl);
  const domain = url.hostname.toLowerCase().replace('www.', '');
  
  // Count mentions of both brand name and domain
  // Calculate position (1-indexed paragraph/sentence position)
  
  return {
    mentioned: mentionCount > 0,
    position: position || null,
    mentionCount
  };
}

Best Practices

  • Use the exact name that appears in AI responses
  • Include common variations or abbreviations
  • Test mention detection with sample queries
  • Check dashboard daily for visibility changes
  • Set up alerts for significant drops (see Alerts & Notifications)
  • Review trends weekly to identify patterns
  • Add competitors to understand market share
  • Track share of voice metrics
  • Identify gaps in visibility (see Competitor Tracking)

API Reference

List Brands

GET /api/brands
Returns all brands for the authenticated user with latest visibility scores.

Get Brand Details

GET /api/brands/:id
Returns detailed information for a specific brand.

Get Brand Dashboard

GET /api/brands/:id/dashboard
Returns aggregated dashboard data from the latest snapshot.
GET /api/brands/:id/trends?range=30d
Returns historical trend data for the specified time range.

Next Steps

Competitor Tracking

Add competitors and track share of voice

AI Engines

Learn about supported AI search engines

Content Scoring

Score your content for AI visibility

Alerts

Set up alerts for visibility changes

Build docs developers (and LLMs) love