# Datenbank-Scan

{/* AUTO-SYNCED SOURCE: this page lives in apps/app/src/modules/db-leads/docs/ and is mirrored into the docs app by `bun sync:module-docs`. Edit it in the module, not in apps/docs. */}

<Lead>
Der **Datenbank-Scan** ist das Kernfeature von DB-Leads: Er durchforstet alle importierten Kontakte samt Aktivitäts-Historie nach Verkäufer-Signalen und legt belegte Funde in die Review-Inbox. Das Prinzip: alles durchforsten, gezielt analysieren, gefiltert ausweisen.
</Lead>

## Scan starten

Auf der Tool-Seite startest du den Lauf über den Button **Datenbank-Scan**. Dafür brauchst du die Berechtigung **„DB-Leads scannen“** (`db-leads.scan`). Der Scan läuft im Hintergrund. Du kannst normal weiterarbeiten und siehst Fortschritt und Statistik live auf der Tool-Seite.

<Tip title="Erst importieren, dann scannen">
Der Scan analysiert die **Aktivitäten** deiner Kontakte: E-Mails, Anrufe, Termine, Notizen. Je vollständiger der [onOffice-Import](/tools/db-leads/onoffice-import) (inklusive Aktivitäten), desto mehr hat der Scan zu lesen. Läuft gerade ein Sync, startet der Scan im Anschluss.
</Tip>

## Die zwei Stufen

### Stufe 1: Prefilter (deterministisch, kostenlos)

Der Prefilter prüft **jeden** Kontakt, hier entstehen keine KI-Kosten:

<DefinitionList>
  <DefItem term="Zeitfenster">Nur Kontakte, deren letzter Kontakt innerhalb des Zeitfensters liegt (Standard 5 Jahre, einstellbar 1 bis 15), gehen in die Analyse. Wurde nie kontaktiert, zählt das Anlagedatum. Kontakte außerhalb werden gezählt, aber nicht analysiert: kein KI-Geld für Karteileichen.</DefItem>
  <DefItem term="Ausschlüsse">Kontaktarten, die du unter **Einstellungen → Qualifizierung** ausgeschlossen hast, überspringt der Scan.</DefItem>
  <DefItem term="Frische-Check">Inkrementell: Hat ein Kontakt bereits ein Briefing, das neuer ist als seine neueste Aktivität, gibt es nichts Neues zu analysieren, und er wird übersprungen. So bleibt jeder Folge-Scan günstig.</DefItem>
  <DefItem term="Keyword-Boost">Aktivitäts-Texte werden gegen deine Signal-Keywords geprüft (z. B. „Folgeauftrag“). Treffer kommen in der Analyse zuerst dran. Keywords sind Priorisierung, kein Ausschluss: Die KI findet auch Signale ohne Keyword.</DefItem>
</DefinitionList>

### Stufe 2: KI-Tiefenanalyse (pro Kandidat)

Für jeden Kandidaten aus dem Prefilter erstellt die KI ein strukturiertes Briefing: Verkäufer-Signale, Verkaufsbereitschaft, Zusammenfassung, nächster Schritt. **Jede Aussage trägt einen Beleg**: ein Zitat aus einer konkreten Aktivität mit Datum. Ohne Beleg wird ein Signal verworfen.

Den Schwerpunkt legt die Analyse auf deine **Korrespondenz**: E-Mail-Texte und Gesprächsnotizen aus Telefonaten werden vollständig gelesen. Dort stehen die beiläufigen Sätze, aus denen sich ein Verkauf ankündigt, und dort schaut im Alltag niemand ein zweites Mal hin.

Aus derselben Lektüre entstehen die **Objekt-Hinweise**: Welche Immobilien der Person gehören, wo sie stehen, wie groß sie sind, wann sie gebaut wurden. Sie stehen am Kontakt im Bereich **Eigentum**, jeweils mit dem Satz, aus dem sie stammen. Das ist in dieser Phase die einzige Quelle dafür, denn vor dem Auftrag liegt die Immobilie in keinem Datensatz. Siehe [Eigentum](/tools/db-leads/objekte).

## Woher ein Hinweis stammt

Zu jedem Signal hält der Scan fest, worauf es beruht. Das steht auch an jedem Fund, damit du in einer Sekunde siehst, ob sich ein Anruf lohnt:

<DefinitionList>
  <DefItem term="Aus dem Verlauf">Die Person hat es selbst gesagt oder geschrieben: E-Mail, Gesprächsnotiz, Termin-Notiz, Bemerkung. Dazu steht das Datum. Das ist die Entdeckung, und daraus entsteht ein Fund.</DefItem>
  <DefItem term="CRM-Feld">Ein Feld, das dein Büro pflegt. Es gibt der Einschätzung den Rahmen: wie dieser Kontakt geführt wird, was schon besprochen ist, wo er im Prozess steht. Eine Bewertungsanfrage bedeutet etwas anderes, wenn im Statusfeld bereits „Alleinauftrag erteilt“ steht. Genau dafür nutzt die Analyse deine Felder.</DefItem>
  <DefItem term="Stammdaten">Kontaktart, Merkmal, Herkunft des Datensatzes. Ordnet ein wie ein CRM-Feld.</DefItem>
</DefinitionList>

**Ein Fund braucht mindestens einen Beleg aus dem Verlauf.** Der Grund: Was ausschließlich in deinen eigenen Feldern steht, weißt du bereits. Die Funde-Ansicht ist eine Arbeitsliste für Neues, keine zweite Ansicht deiner Stammdaten. Das Briefing bleibt in jedem Fall am Kontakt, es wandert nur nicht in die Liste.

**Das Alter zählt mit.** Bemerkungen sind inhaltlich das Wertvollste in deiner Datenbank und oft mehrere Jahre alt. Ein Hinweis aus dem letzten Jahr wiegt deshalb schwerer als derselbe Satz von 2019. Alte Hinweise verschwinden nicht, sie landen im untersten Band. Bei einem CRM-Feld ist das Datum unbekannt: du weißt, was der Stand ist, aber nicht, seit wann.

## Verkäufer-Score & Bänder

Aus den belegten Signalen berechnet das Tool deterministisch einen **Verkäufer-Score von 0 bis 100**. Kein Modell entscheidet, gleiche Signale ergeben immer denselben Score:

<DefinitionList>
  <DefItem term="Heiß (Score ab 60)">Starke, aktuelle Verkaufssignale, zum Beispiel ein erwähnter Folgeauftrag plus eine Marktwert-Anfrage. Zuerst durcharbeiten.</DefItem>
  <DefItem term="Warm (40 bis 59)">Deutliche Hinweise, aber noch nicht zwingend: ein ausgelaufener Alleinauftrag oder ein einzelnes Lebensereignis.</DefItem>
  <DefItem term="Beobachten (20 bis 39)">Ein einzelnes belegtes Signal, zum Beispiel eine beiläufige Erwähnung eines Folgeauftrags. Kommt in die Inbox, weil ein Blick darauf wenig kostet und ein übersehener Verkaufsauftrag viel.</DefItem>
  <DefItem term="Kein Fund (unter 20)">Zu schwach. Erst ab **Score 20** wird ein Fund angelegt, und nur mit einem Beleg aus dem Verlauf.</DefItem>
</DefinitionList>

Ein einzelnes, klar belegtes Kernsignal aus dem Verlauf reicht für einen Fund. Das ist Absicht: Die Inbox kostet dich einen Blick, ein übersehener Verkaufsauftrag kostet eine Provision.

## Empfindlichkeit einstellen

Ab wann ein Kontakt als Fund erscheint, stellst du selbst ein: unter Einstellungen, Datenbank-Scan, im Bereich **Empfindlichkeit**. Niedriger heißt mehr Funde und mehr Arbeit, höher heißt weniger und dafür die klareren Fälle. Ein gepflegter Bestand verträgt eine höhere Einstellung als ein über zwanzig Jahre gewachsener.

Neben dem Regler steht, was die Einstellung am letzten Lauf bewirkt hätte, zum Beispiel "bei dieser Einstellung wären es 47 Funde gewesen statt 12". Das kostet keinen neuen Scan: Gerechnet wird auf den Kontakten, die bereits bewertet wurden.

<Callout tone="note" title="Richtwert, kein Versprechen">
Die Vorschau sagt, was gewesen wäre. Der nächste Lauf sieht neue Aktivitäten und kann deshalb abweichen.
</Callout>

## Auswertung: was aus den Funden wurde

Unter demselben Reiter steht, was aus deinen Funden geworden ist: wie viele du angenommen hast, wie viele davon zu einem Erfolg wurden, und welche Signale bei dir wirklich tragen. Wenn "Lebensereignis" bei dir in drei von vier Fällen zum Termin führt und "Reaktion" in keinem, weißt du, worauf du schauen musst.

**Was als Erfolg zählt, bestimmst du.** Unter Einstellungen, Pipeline, kannst du jede Phase als Erfolg kennzeichnen. Beim einen Büro ist das "Termin vereinbart", beim nächsten erst "Auftrag erteilt". Erreicht ein Kontakt nach einem angenommenen Fund eine solche Phase, wird das automatisch beim Fund vermerkt. Du musst nichts nachtragen.

Darunter steht, warum du Funde verworfen hast. Häuft sich ein Grund, liegt das selten an dir: Meist schlägt der Scan zu breit vor. Erklärt ein Grund fast jeden vierten verworfenen Fund, schlägt das Tool dir eine strengere Empfindlichkeit vor. Vorgeschlagen, nie automatisch geändert.

<Callout tone="note" title="Quoten erst ab acht Fällen">
Eine Quote aus drei Fällen springt zwischen 0 und 100 Prozent, je nachdem wie einer davon ausgeht. Deshalb steht dort "noch zu wenig", bis genug entschiedene Funde vorliegen. Ein Fund von gestern, der noch läuft, zählt nicht als Misserfolg.
</Callout>

## Aus den Ergebnissen lernen

Wenn du magst, passt das Tool die Bewertung selbst an: Signale, die in deinem Haus häufiger zum Auftrag führen, wiegen mit der Zeit schwerer, Signale mit wenig Ertrag wiegen leichter. Der Schalter dafür steht unter **Einstellungen · Datenbank-Scan**, und er ist **ausgeschaltet**, bis du ihn einschaltest.

So läuft es ab:

<DefinitionList>
  <DefItem term="Wann">Nach jedem Scan, und nur wenn genug Funde entschieden sind. Aus drei Fällen wird nichts abgeleitet.</DefItem>
  <DefItem term="Woran gemessen">An deiner eigenen Erfolgsquote, nicht an einem festen Wert. Ein Signal mit 20 Prozent ist gut, wenn dein Haus bei 8 Prozent liegt.</DefItem>
  <DefItem term="Wie viel">Höchstens ein kleiner Schritt je Lauf. Ein einzelner Ausreißer stellt deine Bewertung nicht um.</DefItem>
  <DefItem term="Die Grenzen">Kein Signal fällt unter die Hälfte seines Ausgangswerts, keines steigt über das Anderthalbfache.</DefItem>
</DefinitionList>

<Callout tone="note" title="Es bewegen sich nur die Gewichte">
Es kommt kein neues Merkmal dazu und es fällt keines weg. Welche Merkmale überhaupt bewertet werden dürfen, ist eine geprüfte Liste und keine Frage der Statistik. Verschoben wird nur, wie schwer ein bereits geprüftes Merkmal wiegt.
</Callout>

In der Auswertung steht unter **Wie sich die Bewertung angepasst hat** jede Änderung mit Datum, Richtung und Begründung, samt der Zahlen, aus denen sie folgte. Ein Klick auf **Zurücksetzen** stellt alle Gewichte auf ihre Ausgangswerte; der Verlauf bleibt stehen, damit nachvollziehbar bleibt, was vorher galt.

Schaltest du den Schalter aus, bleiben die Gewichte auf ihrem aktuellen Stand stehen. Ausschalten und Zurücksetzen sind zwei verschiedene Dinge.

## Der Lauf im Hintergrund

Während des Scans zeigt die Tool-Seite den Live-Status mit vier Zahlen: **geprüft**, **analysiert**, **Funde** und **außerhalb des Zeitfensters**, zum Beispiel „3.482 geprüft · 214 analysiert · 12 Funde · 1.240 außerhalb des Zeitfensters (5 Jahre)“.

<DefinitionList>
  <DefItem term="Fortsetzbar">Wird der Lauf unterbrochen, setzt er am gespeicherten Stand wieder auf. Nichts wird doppelt analysiert.</DefItem>
  <DefItem term="Läuft immer durch">Ein gestarteter Scan stoppt nie mittendrin: Die KI-Analysen des Scans sind im DB-Leads-Add-on enthalten und verbrauchen keine Credits. Standardmäßig arbeitet EIN Lauf die gesamte Datenbank in Etappen selbstständig ab, bis alle Kandidaten analysiert sind (skaliert auf 15.000+ Kontakte). Optional setzt du unter Einstellungen ein **KI-Limit pro Lauf**: Dann endet der Lauf sauber am Limit, z. B. „500 von 890 Kandidaten analysiert“, und der nächste Scan macht genau dort weiter (der Frische-Check überspringt bereits Analysierte).</DefItem>
  <DefItem term="Abbrechen">Jederzeit möglich. Bereits geschriebene Funde bleiben erhalten.</DefItem>
  <DefItem term="Voll-Scan als Stapel">Ein Voll-Scan reicht alle Kontakte auf einmal beim KI-Anbieter ein, statt sie einzeln abzuarbeiten. Das Ergebnis kommt in bis zu 24 Stunden, du bekommst eine Benachrichtigung, und der Lauf braucht bis dahin nichts von dir. Die Scan-Karte sagt dir, dass eingereicht wurde. Der normale Scan (nur Neues) läuft weiter sofort.</DefItem>
  <DefItem term="Reagiert nichts mehr">Gibt es fünf Minuten lang keinen Fortschritt, sagt die Scan-Karte das. Solche Läufe werden automatisch geschlossen, ein neuer Scan macht dort weiter, und bereits gefundene Ergebnisse bleiben.</DefItem>
</DefinitionList>

## Was ist enthalten?

Der Datenbank-Scan ist Teil des DB-Leads-Add-ons:

<DefinitionList>
  <DefItem term="Datenbank-Scan (inkrementell)">Analysiert nur Kontakte mit neuen Aktivitäten seit der letzten Analyse. Im Add-on enthalten, jederzeit startbar.</DefItem>
  <DefItem term="Voll-Scan">Analysiert alle Kontakte im Zeitfenster komplett neu. Im Add-on ist ein festes Kontingent an Voll-Scans pro Monat enthalten; das Limit greift nur beim Start, nie mitten im Lauf.</DefItem>
  <DefItem term="Einzel-Briefings">Ein manuell angestoßenes KI-Briefing für einen einzelnen Lead wird wie gewohnt über dein Credit-Guthaben abgerechnet.</DefItem>
  <DefItem term="BYOK (ab Max-Plan)">Optional läuft die KI über deinen eigenen Provider-Key (Einstellungen → REOS AI). Dann zahlst du die KI direkt beim Anbieter, ohne Credits. Verfügbar ab dem Max-Plan.</DefItem>
</DefinitionList>

## Funde prüfen

Neben Board und Liste gibt es die Ansicht **Funde**, die Review-Inbox des Scans. Jeder Fund zeigt Score, Band, die Signale mit Beleg-Zitaten und einen Einzeiler. Drei Aktionen:

<DefinitionList>
  <DefItem term="Annehmen">Der Lead wandert in die empfohlene Pipeline-Phase. Ab hier ist es normale Akquise-Arbeit. Braucht die Berechtigung zum Qualifizieren (`db-leads.qualify`).</DefItem>
  <DefItem term="Verwerfen">Mit optionalem Grund. Deine Gründe helfen, Prefilter und Analyse weiter zu verbessern.</DefItem>
  <DefItem term="Später">Wiedervorlage: der Fund wird geparkt. Kommen bei einem nächsten Scan neue Signale dazu, taucht er wieder auf.</DefItem>
</DefinitionList>

Pro Lead gibt es **höchstens einen offenen Fund**: Neue Scans aktualisieren Score und Signale des offenen Funds, statt die Inbox zu fluten.

### Zu mehreren arbeiten: „Nächster Fund"

Über der Liste steht **Nächster Fund**. Ein Klick übernimmt den obersten freien Fund, öffnet den Kontakt und reserviert ihn für die Zeitsperre aus **Einstellungen → Allgemein → Warteschlange**. Solange sie läuft, bekommt niemand sonst diesen Fund als nächsten angeboten. Wer gleichzeitig klickt, bekommt den darunter, nie denselben.

Reserviert heißt **nicht** gesperrt. Der Fund bleibt in Liste, Board und Suche sichtbar, und jede Kollegin mit der Berechtigung zum Qualifizieren kann ihn trotzdem annehmen, verwerfen oder zurückstellen. An der Zeile steht dann, wer ihn hält und bis wann. Die Zeitsperre ist eine Absprache, kein Riegel.

Drei Dinge geben einen Fund wieder frei: die Entscheidung darüber, das Ablaufen der Zeitsperre, und die Einstellung `0` (dann wird weiter vergeben, aber nichts reserviert). Wer den Tab schließt, muss nichts freigeben.

**Auch am Kontakt sichtbar.** Auf dem Board und in der Liste trägt ein reservierter Kontakt eine kleine Marke mit dem Vornamen und der Uhrzeit, bis zu der die Reservierung läuft. Arbeiten mehrere an demselben Kontakt (er kann mehrere Funde haben), steht das ebenfalls dort. Die Marke verschwindet von selbst, sobald die Zeit abgelaufen ist. Auch hier gilt: Der Kontakt lässt sich öffnen und bearbeiten wie jeder andere.

## Das Zeitfenster (X Jahre)

Das Zeitfenster unter **Einstellungen → Datenbank-Scan** steuert, was der Scan analysiert **und** was die Inbox zeigt:

- Angezeigt werden nur Funde, deren Lead einen letzten Kontakt **innerhalb** des Fensters hat. Änderst du das Fenster, passt sich die Anzeige **sofort** an: Funde werden ein- oder ausgeblendet, nie gelöscht.
- Kontakte außerhalb des Fensters werden im Scan gezählt, aber nicht analysiert. Du siehst also, wie viel Potenzial außerhalb liegt. Drehst du das Fenster hoch, sind diese Kontakte beim nächsten Scan automatisch Kandidaten.

<Callout tone="note" title="AGG-konform by design">
Verkäufer-Signale stammen ausschließlich aus **Aussagen der Person** in den Aktivitäten, niemals aus persönlichen Merkmalen wie Alter oder Familienstand. „Das Haus wird uns zu groß“ als Aussage zählt; ein Geburtsdatum zählt nie. Der Score kennt nur Signal-Kategorien, und die Entscheidung über jeden Fund trifft ein Mensch.
</Callout>

## Häufige Fragen

<Faq>
  <FaqItem q="Warum wurde ein bestimmter Kontakt nicht analysiert?">
    Drei mögliche Gründe: letzter Kontakt außerhalb des Zeitfensters, Kontaktart ausgeschlossen, oder das Briefing ist bereits aktueller als die neueste Aktivität (Frische-Check). Die Scan-Statistik weist die Übersprungenen getrennt aus.
  </FaqItem>
  <FaqItem q="Verpasse ich Signale außerhalb des Zeitfensters?">
    Der Scan analysiert sie bewusst nicht: Ein Kontakt, dessen letzter Kontakt sechs Jahre zurückliegt, ist selten ein sinnvoller Lead. Keyword-Treffer außerhalb des Fensters werden aber gezählt: Du entscheidest, ob sich ein größeres Fenster lohnt.
  </FaqItem>
</Faq>
