Reciprok Docs
Intelligence

Base de connaissances

Comment alimenter, structurer et utiliser la KB des membres

Chaque membre a sa propre base de connaissances, alimentée par lui-même (audio + texte) et par l'équipe Reciprok. C'est le carburant qui rend l'IA pertinente.

Pourquoi une KB ?

La fiche d'un membre dans la base ne dit jamais tout. Les éléments décisifs sont souvent dans la tête du restaurateur :

  • "On est vraiment fait pour les événements d'entreprise haut de gamme"
  • "La salle 2 est parfaite pour les anniversaires intimistes"
  • "On ne fait pas de soirées dansantes après 22h"
  • "Notre chef est étoilé et propose un menu végétarien complet"

Sans cette connaissance, l'IA recommande des lieux corrects mais pas optimaux. La KB est ce qui transforme une recherche "compatible" en recommandation "parfaite".

Sources d'alimentation

1. Audio du membre lui-même

Le membre reçoit un lien dédié (token persistant) qui lui donne accès à un mini-flow :

"Décris ton lieu, tes salles, tes points forts, ta clientèle. Plus tu donnes de détails, mieux on t'enverra des demandes pertinentes."

Il enregistre un audio (libre, peut durer 5 min comme 30 min). Le système :

  1. Upload l'audio sur S3
  2. Transcrit avec Whisper
  3. Stocke la transcription brute (pour audit)
  4. Envoie le texte à Claude pour structuration
  5. Claude découpe en KnowledgeEntry typées

Exemple : un audio de 10 min produit ~15-30 entrées :

{ type: "general_description", content: "Lieu rooftop avec vue panoramique sur Paris..." }
{ type: "ambiance", content: "Ambiance chic et festive, idéal pour clientèle CSP+" }
{ type: "room_description", content: "Salle 1 'Le Belvédère' : 80 places assises, vue Tour Eiffel" }
{ type: "pricing", content: "Privatisation à partir de 5000€ HT le soir" }
{ type: "availability_rule", content: "Pas de soirées dansantes après 22h" }
...

Chaque entrée porte :

  • source: "voice_transcript"
  • sourceRef: { audioUrl, transcriptId, segmentStart, segmentEnd }

2. Mises à jour de disponibilité (texte ou audio)

Via le même lien, le membre peut dire ou écrire :

"Salle 1 indispo le 12 mai au soir, déjà prise pour un mariage."

L'IA interprète :

  1. Identifie le membre (depuis le token)
  2. Identifie la salle (matching sur le nom)
  3. Identifie la date et le créneau
  4. Crée une KnowledgeEntry typée availability_rule (la phrase brute reste consultable par Maxy ; aucun calendrier libre n'est tenu côté membre)

Si une demande active interroge ce membre via magic link, c'est request_availability_check qui porte la réponse définitive.

3. Notes de l'équipe Reciprok

L'équipe peut ajouter manuellement des notes depuis l'interface :

  • Retours après un événement passé
  • Informations récoltées lors d'un audit terrain
  • Préférences du gérant ("prévenir Pierre 48h à l'avance")

source: "manual" ou source: "audit".

Structure d'une KnowledgeEntry

{
  id: uuid,
  memberId: uuid,
  type: enum,                    // catégorisation
  content: text,                 // la connaissance brute
  source: enum,                  // d'où ça vient
  sourceRef: jsonb,              // détails de la source
  embedding: vector(1536),       // pour la recherche sémantique
  createdAt, updatedAt
}

Types

TypeExemple
general_description"Restaurant gastronomique en bord de Seine, ambiance romantique"
room_description"Salle 1 : 80 places assises, vue Tour Eiffel, terrasse extérieure"
pricing"Privatisation à partir de 5000€ HT le soir"
ambiance"Idéal pour clientèle CSP+, événements professionnels haut de gamme"
availability_rule"Fermé tous les lundis, pas de soirées dansantes après 22h"
internal_note"Pierre, le gérant, est très réactif sur WhatsApp. Préfère un appel pour les gros événements."
audit_note"Visite du 15 mars : salle rénovée, photos à refaire"

Sources

SourceDescriptionAuditabilité
voice_transcriptAudio transcrit + structuré par l'IALien vers l'audio original
manualSaisie manuelle par l'équipeLien vers l'auteur
auditNote d'audit terrainLien vers l'audit + auteur
ai_structuredExtrait par l'IA d'un autre contenu (email, conversation)Lien vers la source

Indexation

Embeddings

Chaque KnowledgeEntry a son propre embedding. Permet :

  • De chercher dans la KB par requête sémantique ("Quel lieu propose un menu végétarien complet ?")
  • De pondérer la recherche de membres (l'embedding du membre inclut déjà la concat de ses entries, mais on peut chercher entry par entry pour des requêtes très précises)

Index plein texte

En complément, on indexe content en plein texte (Postgres tsvector) pour les recherches lexicales rapides ("rooftop").

CREATE INDEX knowledge_content_fts_idx
ON knowledge_entry
USING gin (to_tsvector('french', content));

Utilisation par l'IA

Lors d'une recherche de membres pour une demande, l'IA peut :

  1. Filtrer par type, ne charger que les entries pricing et availability_rule pour vérifier la compatibilité
  2. Chercher par requête, "Quel lieu mentionne du végétarien ?"
  3. Exploiter le tout, l'embedding du membre intègre déjà les entries (via le texte concaténé)

Le tool get_member_knowledge (côté IA) permet de récupérer :

get_member_knowledge({
  memberId: "...",
  types?: ["pricing", "availability_rule"],
  query?: "végétarien",
  limit?: 10,
})

Workflow de structuration

Quand un audio arrive depuis le lien personnel d'un membre :

Mise à jour vs ajout

Quand un membre re-enregistre un audio :

  • Pas d'écrasement automatique. Les anciennes entries restent (avec leur source).
  • L'IA peut détecter les conflits ("ancien : 80 places ; nouveau : 100 places")
  • Marqué comme superseded dans la metadata (mais entry conservée pour historique)

Modération

L'équipe Reciprok a une vue sur la KB de chaque membre :

  • Liste des entries avec source
  • Possibilité de rejeter / corriger une entry IA
  • Possibilité d'ajouter des entries manuelles
  • Historique des modifications

Cela permet de garder un humain dans la boucle, surtout au début.

Évolution

À terme :

  • KB partagée entre membres similaires (un truc qui marche pour les rooftops du 8ème peut s'appliquer à d'autres)
  • KB cross-sourcée (réseaux sociaux du membre, avis Google, articles de presse), uniquement avec son accord
  • Auto-structuration d'autres formats (PDF de plaquette commerciale, site web)

On this page