Skip to content

DSA Compliance

The Digital Services Act (DSA) establishes content moderation requirements for platforms operating in the EU. Vettly provides infrastructure to meet key DSA obligations.

Key Requirements

Article 17: Statement of Reasons

When content is restricted, platforms must provide:

  1. The restriction applied (removal, suspension, demotion, etc.)
  2. Relevant facts and circumstances
  3. The legal or policy basis
  4. Clear and user-friendly explanation
  5. Information about redress options

How Vettly Helps

typescript
const decision = await vettly.check({
  content: post.body,
  context: { userId: user.id }
})

if (decision.action !== 'allow') {
  // Generate DSA-compliant statement of reasons
  const statement = await vettly.generateStatementOfReasons({
    decisionId: decision.id,
    language: 'en' // Localized
  })

  // Returns:
  {
    restriction: 'Content removal',
    factualBasis: 'Content scored 0.67 for harassment category',
    legalBasis: 'Platform Terms of Service, Section 4.2',
    explanation: 'Your content was removed because it violated our community guidelines against harassment.',
    redress: {
      internalAppeal: 'https://platform.com/appeal',
      outOfCourtSettlement: 'https://platform.com/dispute-resolution',
      judicialRedress: 'You may also seek redress through the courts.'
    }
  }
}

Article 20: Internal Complaint-Handling

Platforms must provide:

  1. Easy and accessible complaint mechanism
  2. Free of charge
  3. Timely handling (reasonable timeframes)
  4. Human review (not solely automated)

How Vettly Helps

Vettly's appeals workflow meets these requirements:

typescript
// Easy complaint mechanism
const appeal = await vettly.createAppeal({
  decisionId: decision.id,
  userId: user.id,
  reason: 'User explanation'
})

// Track handling time
const metrics = await vettly.getAppealMetrics({
  from: '2024-01-01',
  to: '2024-01-31'
})
console.log(`Average resolution time: ${metrics.averageResolutionTime}`)

// Human review tracking
const appeal = await vettly.getAppeal(appealId)
console.log(`Reviewed by: ${appeal.resolution.reviewerId}`)

Article 24: Transparency Reporting

Platforms must publish annual reports including:

  1. Number of content moderation orders received
  2. Measures taken against illegal content
  3. Complaint handling statistics
  4. Automated decision-making information

How Vettly Helps

typescript
const report = await vettly.generateDSATransparencyReport({
  period: '2024',
  includeMethodology: true
})

// Returns structured data for your annual report:
{
  period: '2024',

  contentModeration: {
    totalDecisions: 5000000,
    byAction: {
      removed: 50000,
      demoted: 25000,
      labeled: 100000
    },
    byCategory: {
      illegalContent: 12000,
      termsViolation: 88000
    }
  },

  complaints: {
    received: 4500,
    resolved: 4350,
    upheld: 3900,
    overturned: 450,
    averageResolutionTime: '18 hours'
  },

  automatedDecisions: {
    percentage: 98.5,
    humanReviewedPercentage: 15,
    appealedPercentage: 0.09
  },

  methodology: {
    aiProviders: ['OpenAI', 'Perspective'],
    humanReviewProcess: 'All appeals and flagged content reviewed by trained moderators',
    qualityAssurance: 'Monthly audits of decision accuracy'
  }
}

Implementation Checklist

Statement of Reasons

  • [ ] Configure statement templates for each action type
  • [ ] Set up localization for EU languages
  • [ ] Include redress information in all statements
  • [ ] Test delivery to users
typescript
await vettly.configureStatementOfReasons({
  templates: {
    removal: {
      en: 'Your content was removed because...',
      de: 'Ihr Inhalt wurde entfernt, weil...',
      fr: 'Votre contenu a été supprimé car...'
    }
  },
  redress: {
    internalAppeal: 'https://platform.com/appeal',
    outOfCourtSettlement: 'https://platform.com/dispute',
    judicialRedress: 'standard' // Uses template text
  }
})

Complaint Handling

  • [ ] Enable appeals workflow
  • [ ] Set up reviewer accounts
  • [ ] Configure notification templates
  • [ ] Track resolution times
typescript
await vettly.configureAppeals({
  enabled: true,
  notifyOnReceived: true,
  notifyOnResolved: true,
  targetResolutionTime: '48h',
  escalateAfter: '72h'
})

Transparency Reporting

  • [ ] Schedule automated report generation
  • [ ] Set up data export pipeline
  • [ ] Configure retention for report data
typescript
await vettly.configureTransparencyReporting({
  schedule: 'annual',
  retentionPeriod: '5 years',
  exportFormat: 'json',
  destination: {
    type: 's3',
    bucket: 'compliance-reports'
  }
})

Audit Preparation

When EU authorities request information:

typescript
// Generate authority-ready export
const export = await vettly.generateRegulatoryExport({
  authority: 'Digital Services Coordinator',
  period: '2024-Q1',
  scope: 'full', // or 'summary'
  format: 'pdf',
  includeSamples: true,
  sampleSize: 1000
})

Best Practices

  1. Be proactive - Generate reports before they're requested
  2. Document everything - Every decision, every appeal, every policy change
  3. Localize properly - Statements in user's language
  4. Track metrics - Resolution times, overturn rates, appeal volumes
  5. Train reviewers - Document your human review process

Next Steps