> ## Documentation Index
> Fetch the complete documentation index at: https://gtmapis.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# B2B Quality Scoring

> Understand how we score emails for B2B outbound value

# B2B Outbound Quality Scoring

Not all valid emails are equally valuable for B2B outbound. Our smart scoring system categorizes emails based on their actual worth for cold outreach.

## Quality Levels

<CardGroup cols={3}>
  <Card title="High" icon="star" iconType="solid">
    **Personal emails** - Real people, decision-makers

    ✅ Charged: 1 credit
  </Card>

  <Card title="Low" icon="star-half-stroke">
    **Role-based emails** - Generic inboxes

    🆓 FREE: 0 credits
  </Card>

  <Card title="None" icon="ban">
    **Invalid/Risky** - Don't exist or unverifiable

    🆓 FREE: 0 credits
  </Card>
</CardGroup>

## High Quality Emails (1 credit)

**Characteristics**:

* Personal name in local part (john, sarah.smith)
* Not a generic role-based address
* Verified mailbox existence
* Not a catch-all domain
* Individual mailbox signal

**Examples**:

```
john@company.com          → High quality ✅
sarah.williams@corp.io    → High quality ✅
david.chen@startup.co     → High quality ✅
```

**B2B Outbound Value**: 🟢 **Maximum**

* Direct access to individual
* Better for personalized outreach
* More likely to be decision-makers

## Low Quality Emails (FREE)

**Role-Based Detection**:

We automatically identify generic business email addresses:

| Category            | Examples                       | Why Low Value                     |
| ------------------- | ------------------------------ | --------------------------------- |
| **Information**     | info@, contact@, hello@        | Shared inbox, low personalization |
| **Support**         | support@, help@, service@      | Not decision-makers               |
| **Sales/Marketing** | sales@, marketing@, inquiries@ | Bombarded with outreach           |
| **Admin**           | admin@, office@, team@         | Generic, no specific owner        |
| **HR/Careers**      | hr@, careers@, jobs@           | Wrong department for B2B sales    |

**Complete Role-Based List**:

```
info, contact, hello, support, help, service, sales, marketing,
inquiries, admin, office, team, hr, careers, jobs, press, media,
billing, finance, legal, compliance, privacy, security, abuse,
noreply, no-reply, postmaster, webmaster, hostmaster
```

**Why We Don't Charge**:

* 📬 Shared inbox (multiple people)
* 🤖 Often monitored by junior staff or automation
* 📉 Lower individual attribution than personal emails
* 🗑️ Higher spam report rates
* ⏰ Time-wasting for SDRs

<Warning>
  Even though role-based emails are **valid** and will receive mail, they have poor ROI for outbound campaigns.
</Warning>

## Zero Quality Emails (FREE)

**Categories**:

### 1. Catch-All Domains

```json theme={null}
{
  "email": "anything@catchalldomain.com",
  "result": "risky",
  "b2b_outbound_quality": "none",
  "credits_charged": 0,
  "charge_reason": "Catch-all domain - cannot verify individual mailbox"
}
```

**Why Risky**:

* Can't verify if specific mailbox exists
* Unknown deliverability
* Could bounce in practice
* Wasted sending reputation

### 2. Invalid Emails

```json theme={null}
{
  "email": "notreal@fakeemail123.com",
  "result": "invalid",
  "b2b_outbound_quality": "none",
  "credits_charged": 0,
  "charge_reason": "Domain has no MX records"
}
```

### 3. Unknown Verification

```json theme={null}
{
  "email": "someone@restrictiveserver.com",
  "result": "unknown",
  "b2b_outbound_quality": "unknown",
  "credits_charged": 0,
  "charge_reason": "SMTP verification not permitted"
}
```

## Quality Score Examples

### Scenario 1: Tech Startup Founder

```json theme={null}
{
  "email": "sarah@techstartup.io",
  "result": "valid",
  "is_role_based": false,
  "is_free_provider": false,
  "b2b_outbound_quality": "high",
  "credits_charged": 1,
  "charge_reason": "Valid personal email with high B2B outbound quality"
}
```

✅ **Charge 1 credit** - High-value personal email

### Scenario 2: Generic Support Inbox

```json theme={null}
{
  "email": "support@techstartup.io",
  "result": "valid_role_based",
  "is_role_based": true,
  "b2b_outbound_quality": "low",
  "credits_charged": 0,
  "charge_reason": "Role-based email - free for low B2B value"
}
```

🆓 **FREE** - Low-value shared inbox

### Scenario 3: Catch-All Domain

```json theme={null}
{
  "email": "randomname@catchall.com",
  "result": "risky",
  "is_catchall": true,
  "catchall_confidence": "high",
  "b2b_outbound_quality": "none",
  "credits_charged": 0,
  "charge_reason": "Catch-all domain - cannot verify individual mailbox"
}
```

🆓 **FREE** - Can't verify existence

## Credit Behavior Example

For a 1,000-email list with 400 High-Value Validations, 300 role-based emails, 200 catch-all results, and 100 invalid results, the final charge is 400 credits. The role-based, catch-all, invalid, risky, and unknown results are finalized at 0 credits.

## Free Provider Detection

We also flag free email providers (but still charge for valid personal emails):

```javascript theme={null}
{
  "email": "john@gmail.com",
  "is_free_provider": true,
  "free_provider_domains": ["gmail.com", "yahoo.com", "outlook.com"]
}
```

**Common Free Providers**:

* Gmail, Yahoo, Outlook/Hotmail
* AOL, iCloud, Proton
* And 50+ others

<Info>
  Free provider emails are still **charged** if they're personal (not role-based) since they can be valid B2B contacts (freelancers, small business owners).
</Info>

## API Response Fields

Every validation includes B2B quality metadata:

```typescript theme={null}
interface ValidationResult {
  // Core validation
  email: string;
  result: 'valid' | 'valid_role_based' | 'risky' | 'invalid' | 'unknown';

  // B2B quality indicators
  b2b_outbound_quality: 'high' | 'low' | 'none' | 'unknown';
  is_role_based: boolean;
  is_free_provider: boolean;
  is_catchall: boolean;

  // Credit information
  credits_charged: 0 | 1;
  charge_reason: string;
}
```

## Best Practices

### For List Cleaning

1. **Filter by `b2b_outbound_quality: "high"`** for best results
2. **Skip `valid_role_based`** emails unless needed
3. **Remove `risky`** emails (catch-all domains)
4. **Archive `invalid`** for future reference

### For Cost Optimization

1. **Deduplicate first** before uploading
2. **Filter obvious role-based** locally (info@, support@)
3. **Batch validate** to reduce overhead
4. **Use test keys** during development

### For Campaign Success

1. **Prioritize high-quality emails** in sequences
2. **Separate campaigns** for role-based vs personal
3. **Monitor bounce rates** per quality tier
4. **A/B test** messaging for each quality level

## Next Steps

<CardGroup cols={2}>
  <Card title="Credit System" icon="coins" href="/concepts/credit-system">
    Learn how credits work and pricing
  </Card>

  <Card title="Result Categories" icon="list" href="/concepts/result-categories">
    Complete list of all validation results
  </Card>
</CardGroup>
