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

# Réputation & Certification

> Le système de niveaux qui garantit la qualité des annotateurs sur la durée.

## Vue d'ensemble

Chaque utilisateur qui annote via une app partenaire possède un **score de réputation** allant de 0 à 100. Ce score est calculé automatiquement à partir de ses réponses aux [golden tasks](/guides/golden-tasks).

Le score détermine son **niveau de certification**, visible dans l'app partenaire.

***

## Niveaux de certification

| Niveau     | Score minimum | Golden tasks minimum | Description                          |
| ---------- | ------------- | -------------------- | ------------------------------------ |
| ⚪ Unranked | —             | \< 10                | Nouvel annotateur, pas encore évalué |
| 🥉 Bronze  | ≥ 40          | ≥ 10                 | Fiabilité de base établie            |
| 🥈 Silver  | ≥ 60          | ≥ 50                 | Annotateur régulier et fiable        |
| 🥇 Gold    | ≥ 75          | ≥ 200                | Expert reconnu                       |
| ⭐ Expert   | ≥ 90          | ≥ 500                | Niveau le plus élevé                 |

Les **deux conditions** (score ET nombre de réponses) doivent être remplies simultanément.

***

## Évolution du score

| Événement                      | Impact                        |
| ------------------------------ | ----------------------------- |
| Golden task — bonne réponse    | **+ 1**                       |
| Golden task — mauvaise réponse | **- 3**                       |
| Score plancher                 | 0 (ne descend pas en dessous) |
| Score plafond                  | 100                           |
| Score initial                  | 50                            |

### Exemple de progression

```
Départ : score 50, 0 réponses → Unranked

+10 bonnes réponses  → score 60, 10 réponses → Bronze  🥉
+40 bonnes réponses  → score 100, mais plafonné à 100
                       50 réponses  → Silver  🥈  (si score ≥ 60)

-3 mauvaises réponses en séquence → score 97 → toujours Silver
```

***

## Isolation par développeur

Le score de réputation est **par (développeur, utilisateur)** — un même utilisateur peut avoir des scores différents dans des apps différentes.

Cela permet à chaque développeur d'avoir sa propre mesure de qualité, indépendante des autres apps.

```typescript theme={null}
// Score de l'utilisateur "user_123" dans votre app
const rep = await dloopiq.getUserReputation('user_123')
// → score spécifique à votre clé API
```

***

## Intégrer la certification dans votre app

### Exemple React Native

```typescript theme={null}
import { DLoopIQ } from '@dloopiq/sdk'

const LEVEL_CONFIG = {
  Unranked: { color: '#9ca3af', emoji: '⚪', label: 'Débutant' },
  Bronze:   { color: '#92400e', emoji: '🥉', label: 'Bronze' },
  Silver:   { color: '#6b7280', emoji: '🥈', label: 'Argent' },
  Gold:     { color: '#d97706', emoji: '🥇', label: 'Or' },
  Expert:   { color: '#7c3aed', emoji: '⭐', label: 'Expert' },
}

function UserBadge({ userId }) {
  const [rep, setRep] = useState(null)

  useEffect(() => {
    dloopiq.getUserReputation(userId).then(setRep)
  }, [userId])

  if (!rep) return null

  const config = LEVEL_CONFIG[rep.certification]

  return (
    <View style={styles.badge}>
      <Text style={{ color: config.color }}>
        {config.emoji} {config.label}
      </Text>
      <Text style={styles.accuracy}>
        Précision : {Math.round(rep.accuracy * 100)}%
      </Text>
      {rep.nextLevel && (
        <ProgressBar
          label={`Vers ${rep.nextLevel.level}`}
          value={rep.score}
          max={rep.nextLevel.requiredScore}
        />
      )}
    </View>
  )
}
```

### Motiver les utilisateurs

```typescript theme={null}
// Après chaque réponse, montrer la progression
const result = await dloopiq.completeTask({ ... })
const rep = await dloopiq.getUserReputation(userId)

if (rep.nextLevel) {
  showToast(`${rep.nextLevel.missingAnswers} réponses avant ${rep.nextLevel.level} !`)
}
```

***

## Consulter la réputation via l'API REST

```bash theme={null}
curl "https://dloopiq.onrender.com/api/v1/sdk/reputation/user_abc123" \
  -H "Authorization: Bearer <apiKey_développeur>"
```

```json theme={null}
{
  "userId": "user_abc123",
  "score": 73,
  "goldenTasksAnswered": 62,
  "correctAnswers": 51,
  "accuracy": 0.82,
  "certification": "Silver",
  "nextLevel": {
    "level": "Gold",
    "requiredScore": 75,
    "requiredAnswers": 200,
    "missingScore": 2,
    "missingAnswers": 138
  }
}
```

***

## Impact sur le consensus

À l'avenir, les annotateurs de niveau supérieur pourront voir leurs réponses pondérées plus fortement dans le calcul du consensus. Pour l'instant, toutes les réponses ont le même poids.
