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 ​