Trente personnes interviewées par Clara. Un graphe qui se densifie. Des constellations qui émergent. Un livre qui en sort — pas un assemblage de réponses, un monde qu'on traverse. Voici la méthode.
Le test n'est pas "est-ce qu'on peut transcrire des entrevues". C'est : est-ce qu'on peut transformer 20-30 voix en un livre qu'un membre de la famille lit d'un trait, et qu'il garde sur sa table de chevet. Tout le reste est de l'instrumentation pour ça.
Tu ne touches à rien. Tu fais la seed interview. Je m'occupe de tout le reste — agents ElevenLabs, system prompts, tests, invitations Resend, lecture des transcripts, relances, enrichment, mise en page, soumission à l'imprimeur.
Trois itérations, pas une. Seed (1 personne, toi) → First pass (groupe) → Final pass (enrichment ciblé). Chaque passe affine la suivante. Le corpus se densifie, pas se disperse.
Un livre, pas un assemblage. Master agent éditorial qui supervise du jour 1. Il juge à chaque étape : "ça donne un bon livre ou non ?" Si non, on remonte le pipeline.
On réutilise du code qui a fait ses preuves. Pattern enrichment de Glassdoor (anchor verification, corroboration nommée). Schéma Postgres d'Aubainerie (insights/verbatims/quality_audits). Worker Cloudflare + queue + R2. Zéro réinvention.
Solo dev, V1, on coupe les coins ronds. SQLite local d'abord si Postgres ralentit. Pas de migrations propres tant que le schéma bouge. Pas d'admin SPA. Just un script qui livre.
Distinction importante : ces six axes sont les dimensions des données qu'on collecte, pas la structure du livre. La structure du livre, c'est l'angle narratif qu'on choisit à la section suivante. Les axes, eux, sont la grille avec laquelle l'enrichment tague chaque entrevue.
Les époques que les contributeurs ont traversées, ou dont ils ont hérité. Pas de la généalogie sèche : des moments où le contexte historique rentre dans la maison. La crise de 29 dans la cuisine. La Révolution tranquille vue d'un salon. Le moment où une décennie a basculé dans une vie.
Les villes, quartiers, maisons, paroisses, commerces qui reviennent dans les entrevues. Un réseau humain n'est jamais juste des noms — c'est une topographie. Lieux taggés permet plus tard de regrouper, contextualiser, illustrer.
Pas le réseau en bloc — les branches. Une génération, une sous-famille, un cercle d'amis, un milieu professionnel. Permet de raconter sans noyer le lecteur, et chaque sous-groupe a son propre tempo narratif.
Les valeurs, métiers, engagements, silences qui se transmettent sans être nommés. Les thèmes qui traversent plusieurs voix et plusieurs générations sans qu'on les nomme. C'est ce qui rend un livre profond plutôt qu'anecdotique.
Pas la biographie : le moment. Le mariage qui a failli ne pas avoir lieu. Le déménagement de 1947. Le repas du dimanche où quelque chose a basculé. Construits comme des scènes, pas des résumés.
Tu l'as dit : les fiches individuelles ont leur place, mais en annexe ou dans un chapitre, pas dans tous. C'est la matière de référence qui soutient le récit, pas le récit lui-même.
Chaque entrevue est taggée par l'agent d'enrichment sur les six axes. Une scène marquante peut être taggée temporel + sous-famille + thématique. À la fin du first pass, le master agent voit la densité par axe : où on a beaucoup, où on a un trou. Le final pass va combler les trous riches, pas les trous vides.
Tu m'as fait remarquer que mes propositions précédentes étaient cartésiennes. Une avenue qui pose huit questions et empile quarante réponses, c'est un spreadsheet, pas un livre. Une avenue qui prend un sujet central et fait défiler les témoins, c'est le même spreadsheet, transposé.
Le lecteur ne veut pas processer une matrice. Il veut être emporté. J'ai donc renversé l'approche : au lieu de te donner trois avenues à choisir d'avance, je décris la méthode par laquelle le livre va émerger du graphe.
Le graphe que les six dimensions construisent (Section II) est la structure latente du livre. Le travail du Composer n'est pas d'assembler des réponses — c'est de marcher dans le graphe et d'écrire des scènes là où les dimensions convergent.
Chaque entrevue taggée sur les six dimensions devient un ensemble de nœuds reliés. Une maison nommée par trois personnes = un nœud dense. Une décennie traversée par plusieurs branches = une zone. Les nœuds se chevauchent entre contributeurs.
Pas seulement les trous. Une constellation, c'est un ensemble de nœuds qui pulsent ensemble — un lieu à une époque, où plusieurs thèmes reviennent, où plusieurs voix convergent. C'est ça, la matière d'un chapitre vivant.
Pas une liste de témoignages. Une scène. Le Master Editor fournit la voix narrative qui tisse. Les voix des contributeurs entrent quand elles éclairent ce moment du monde — brièvement ici, fortement là, ancrant ailleurs.
Tu n'as pas à choisir maintenant. Le seed et le first pass montrent ce que le graphe est vraiment. Je propose ensuite la structure qui lui correspond — peut-être une de ces trois, peut-être un hybride, peut-être quelque chose que la matière dicte.
Organisé géographiquement et temporellement. La voix narrative emmène le lecteur de lieu en lieu, d'époque en époque. À chaque escale, certaines voix entrent — celles que ce moment du monde fait remonter à la surface. Une même personne peut être présente dans plusieurs escales, sous des angles différents.
Le Cartographer détecte 7-9 constellations principales — convergences de dimensions où plusieurs voix se rencontrent. Chaque chapitre est une constellation : un événement collectif vu depuis trois branches, une cuisine où trois générations sont passées, un métier transmis sans être nommé. La voix narrative tisse, les contributeurs entrent comme des éclats.
Une décennie, une saison, un événement qui s'étire. Le livre suit le temps, pas les sujets. À chaque moment du temps, certaines voix s'expriment — celles que le contexte fait parler. Donne le plus de drive narratif et la plus forte sensation d'être emporté.
Six agents, une hiérarchie claire. Je suis le master agent qui orchestre. Les cinq autres sont des sous-agents Claude que je crée, brieffe, teste, et déploie moi-même via la Claude Agent SDK et l'ElevenLabs API.
Le seul agent qui voit l'ensemble. À chaque palier, je pose une seule question : est-ce que ça donne un bon livre ? Si non, je décide quoi corriger (relancer une entrevue, retagger, redresser un chapitre).
À partir de la lecture du corpus disponible, génère le system prompt de l'agent ElevenLabs pour la prochaine personne. Pas un prompt générique : un prompt contextualisé sur ce qu'on sait déjà, ce qu'on cherche à découvrir, et le rôle de cette personne dans la famille.
Pour chaque entrevue qui débarque dans R2, déclenche le pipeline d'enrichment 5-passes (inspiré directement d'Aubainerie) : extraction d'insights, nettoyage de verbatims, mapping sur les six axes, audit qualité, scoring. Sortie : lignes Postgres queryables.
Après chaque vague d'entrevues, construit le graph du corpus : personnes mentionnées, lieux, événements, et leurs liens. Sort une carte de densité par axe. Identifie les trous riches (où peu de matière mais beaucoup de potentiel) et les zones saturées (où on en a assez).
Le seul agent autorisé à écrire des chapitres. Il interroge le graphe par constellation — pas par interviewé. Compose chaque chapitre comme une scène multi-voix, où plusieurs voix entrent et sortent au service du moment du monde. Préserve les verbatims (jamais réécrits — la voix originale est sacrée).
Prend le manuscrit Markdown et le coule dans un template prêt-imprimerie (HTML/CSS pour PDF avec WeasyPrint en V1, InDesign MCP plus tard). Vérifie les contraintes physiques : bleed, marges, gabarit Lulu hardcover 8×10, pages multiples de 4. Soumet à l'API Lulu, suit le statut.
Ce qui suit est le flow réel. Pas un schéma idéal — l'ordre exact des étapes avec les composants qui les portent.
La flèche pointillée du Cartographer vers Clara est ce qui rend ce système itératif : c'est lui qui décide qui interviewer ensuite, sur quels sujets, à partir des trous identifiés dans le corpus.
J'ai regardé Glassdoor (intelligence extraction) et Aubainerie (interview enrichment + Postgres). Verdict : on porte 80% d'Aubainerie tel quel, on emprunte les patterns de garde-fou de Glassdoor, et on ajoute deux tables. Pas de réinvention.
| Couche | Choix V1 | Origine | Pourquoi pas autre chose |
|---|---|---|---|
| Capture vocale | ElevenLabs Conversational AI · Clara Moreau | Existe déjà · Mémoire Vivante | On a un agent qui marche. On le contextualise par interviewé. |
| Invitations | Resend + lien public Cloudflare | Standard L&L | Frictionless pour des non-techs (oncle de Nathalie) |
| Stockage brut | Cloudflare R2 (audio + transcript JSON) | Aubainerie · pattern direct | Source of truth immuable. Postgres est la projection. |
| Queue | Cloudflare Queue + DLQ | Aubainerie | Retry + dead-letter sans code custom. |
| Enrichment | 5 appels Sonnet/Haiku, tool-use forcé | Aubainerie + Glassdoor | Atomicité par conversation. Schéma JSON garanti par tool_choice. |
| Garde-fous LLM | Anchor verification + corroboration nommée | Glassdoor (glassdoor_intel.py) | Tout verbatim doit exister dans le transcript. Halluciné = drop. |
| Base queryable | Postgres (Hyperdrive) · schéma porté d'Aubainerie + 2 tables | Aubainerie | SQLite local possible si Postgres ralentit le dev. On migre quand stable. |
| Search sémantique | pgvector sur verbatims + insights | Nouveau (Aubainerie n'en a pas) | Le composer doit trouver "tout ce qui parle de la décennie 1940" — keyword ne suffit pas. |
| Mise en page | HTML/CSS print + WeasyPrint → PDF | Standard, pas InDesign en V1 | InDesign MCP est plus tard. WeasyPrint est aujourd'hui. |
| Impression | Lulu API (hardcover 8×10) | voice-memoir-product-summary | API gratuite, pas de minimum, drop-ship direct. |
| Auth | Fail-closed. Bearer token unique. Lien d'entrevue signé. | Règle globale | Secret manquant = denied. Aucun fallback permissif. |
Adapté d'Aubainerie. Ce qui change :
conversations, insights (avec discriminateur), verbatims, enrichment_runs, conversation_tags, quality_audits, conversation_enrichment
entity_mentions (personnes/lieux/événements nommés, par interview) et narrative_threads (les six axes, densité, et liens).
pgvector pour search sémantique sur verbatims et insights — Aubainerie en manquait, on l'ajoute.
Schéma dans migrations/ appliqué hors-bande. Jamais de CREATE IF NOT EXISTS dans un handler.
Je mets debout : Worker Cloudflare + R2 + queue, Postgres avec le schéma porté, agent Clara contextualisé pour ta seed, lien d'invitation, pipeline d'enrichment 5-passes testé sur un transcript bidon.
Livrable : un lien que tu cliques. Tu fais l'entrevue. Le transcript se rend dans Postgres enrichi. Je t'envoie un rapport de premier corpus.
La personne seed n'est pas un contributeur ordinaire. C'est notre guide. Quelqu'un qui connaît bien le réseau et peut me faire visiter le monde — ses lieux, ses époques, ses figures, ses thèmes récurrents. Son entrevue avec Clara est conçue comme une visite guidée, pas comme un témoignage.
À partir de cette visite, je construis un premier graphe partiel et je te présente les constellations émergentes que je vois, ainsi qu'une direction de structure qu'elles suggèrent. Je te propose aussi les contributeurs à inviter au first pass pour densifier les zones les plus prometteuses. Tu valides la direction avant qu'on envoie les invitations.
L'Interview Designer crée un system prompt par personne, calibré sur les zones du graphe que cette voix peut éclairer. Pas un questionnaire générique : une conversation qui creuse les nœuds que cette personne porte. Tu m'autorises chaque envoi.
Au fur et à mesure que les entrevues rentrent, le graphe se densifie et le Cartographer recalcule les constellations en temps réel. À la fin du first pass, je te présente la structure réelle du livre — pas une avenue théorique, ce que la matière dicte.
Le Cartographer me liste deux types de cibles. Les zones du graphe sous-développées qui méritent plus de matière pour devenir des constellations solides. Les voix sous-représentées : personnes dont les autres ont beaucoup parlé, mais qui n'ont pas eu assez de place pour parler d'elles-mêmes.
Les follow-up peuvent être longs — on prend le temps qu'il faut. Personne ne doit se sentir effacé du livre. À la fin, le corpus est final.
Le Composer interroge le graphe par constellation, pas par interviewé. Il écrit chaque chapitre comme une scène multidimensionnelle, où plusieurs voix entrent et sortent au service du moment du monde. Le Master Editor — moi — ajoute la voix narrative qui tisse les constellations entre elles.
Je relis comme un éditeur. Si une scène traîne, je la retravaille. Si une voix manque, je relance. Le critère est unique : est-ce qu'un lecteur extérieur entre dans ce monde ?
Manuscrit Markdown → HTML/CSS print → PDF press-ready (bleed, ICC, page count multiple de 4). Soumission Lulu. Suivi du print job. Tracking forwardé. Le livre arrive chez toi.
C'est le test du goalpost. Tu le tiens dans les mains. Tu le lis d'un trait ou tu le poses ?
La structure réelle émerge après le seed et le first pass — c'est ce que la Section III explique. Ce qui suit est une illustration de ce que peut donner un livre écrit à partir du graphe, pour rendre tangible ce qu'on s'engage à livrer. Pas de questions, pas de biographies : des constellations.
Imagine un livre qui s'ouvre par un seuil — quelques pages où la voix narrative te fait entrer dans le monde. Pas une introduction théorique, une atmosphère. Puis le livre te conduit à travers une série de constellations. Chacune est une scène riche, où plusieurs voix entrent et sortent au service du moment.
Chaque chapitre est multidimensionnel par construction : une constellation contient toujours du temporel, du géographique, des sous-groupes, des thèmes, des moments, et des individus. Le graphe vit dans chaque page.
Les contributeurs apparaissent dans plusieurs constellations — jamais réduits à un témoignage. La voix narrative tisse les transitions. Le lecteur entre dans ce monde comme on entre dans un roman, pas comme on consulte un annuaire. Et un lecteur extérieur peut le lire sans connaître personne : c'est l'atmosphère du monde qui le porte.
Le risque numéro un n'est pas technique. C'est littéraire : on livre un annuaire qui ressemble à un livre. Voici les garde-fous spécifiques contre ça.
Tout verbatim cité doit exister mot-pour-mot dans le transcript source. Si l'agent l'a halluciné, il est droppé. Pattern direct de Glassdoor.
Un fait nommé (personne, lieu, date précise) → 1 source suffit. Une affirmation générique ("c'était une famille soudée") → 3 sources nécessaires. Sinon retiré.
Le Composer ne réécrit jamais une voix. Si quelqu'un dit "j'sais pas, c'tait d'même", ça reste. Remento réécrit, c'est exactement ce qu'il faut éviter.
Moi (Master Editor) je lis chaque chapitre avant qu'il avance. Critère unique : est-ce un bon livre ? Pas "est-ce factuel" — factuel est déjà garanti par α et β.
Tu fais la seed. Je te livre un mini-extrait (10 pages) avant le first pass. Si tu dis "je m'endors", on rectifie l'avenue avant de dépenser sur 30 entrevues.
Pattern Aubainerie : pour chaque interview, audit automatique (l'agent a-t-il bien creusé ? la personne a-t-elle vraiment parlé ?). Les entrevues low-signal sont gated, pas droppées.
Très court. Tu m'as dit de ne pas te déléguer la job. Je tiens parole. Voici les seuls trois points où je ne peux pas avancer sans toi.
| # | Ce qu'il me faut | Pourquoi tu, pas moi |
|---|---|---|
| 1 | Ton accord sur la méthode — le graphe d'abord, structure émergente après le seed | Pas le choix d'une structure d'avance. L'accord pour qu'on procède en construisant le graphe, puis en laissant la structure se révéler. C'est la décision conceptuelle qui change tout. |
| 2 | Identité de la personne seed + liste préliminaire des 5-8 contributeurs du first pass (emails) | La seed est notre guide — quelqu'un qui connaît bien le réseau et peut me faire visiter le monde. Toi seul peux la désigner. |
| 3 | Secrets API : ELEVENLABS_API_KEY, RESEND_API_KEY, LULU_CLIENT_ID/SECRET, ANTHROPIC_API_KEY | Les secrets sont les seuls trucs que je ne peux pas paster moi-même dans Wrangler. Tout le reste, je le fais. |
Quand tu m'envoies ça, je build Itération 0 et je te livre le lien d'invitation pour la visite guidée de la seed. À partir de là, je te montre les premières constellations détectées, et la direction de structure qu'elles suggèrent. Tu juges sur la matière, pas sur une promesse.
Aucun re-prompting requis. Je build, je test, je te livre. Tu reprends le volant uniquement aux trois moments listés ci-dessous.