Airbnb, Booking.com, VRBO, Plumguide. Quarante-six plateformes PMS. Plus le direct. Repull est à la fois channel manager et agrégateur de PMS — et tout le template est open source.
La forme du problème
Les acteurs en place te forcent leur schéma, leur UI et leur relation de facturation avec tes utilisateurs. Repull inverse le rapport — ton schéma, ton UI, ta facturation. Nous, on s'occupe juste des adapters de canaux.
Pousse annonces, photos, calendriers, tarifs et messages vers Airbnb, Booking.com, VRBO et Plumguide via un seul schéma. Vingt-six endpoints Airbnb, onze endpoints Booking, à portée de main.
Hostaway, Guesty, Cloudbeds, Mews, OwnerRez — connecte une fois, lis avec la même forme quelle que soit la plateforme upstream. Les adapters PMS sont open source aussi.
Repull normalise tout sur un schéma par défaut sensé. Si le tien est différent, définis-le une fois avec le Custom Schema Builder, pose le header X-Schema, et chaque réponse revient avec tes noms de champs.
Cas concret
repull-channel-manager, c'est l'app Next.js complète — calendrier, réservations, connexions, messagerie, avis — qui tourne sur l'API Repull. Les fonctions IA dedans tournent sur Vanio AI. Clone, pointe sur ton workspace Repull, et tu as un channel manager qui tourne aujourd'hui.
Un git clone, un npm install, un fichier .env avec ta clé API Repull. Le déploiement Vercel se fait en un clic après ça.
Chaque client à toi a son propre workspace Repull — clés API scopées, données scopées. Ton app est la couche multi-tenant par-dessus.
Grille calendrier, drawer de réservation, inbox de messages, flux d'approbation des avis — chaque écran est à toi à étendre. La couche data ne bouge pas ; l'UI est à toi.
git clone https://github.com/ivannikolovbg/repull-channel-manager cd repull-channel-manager npm install cp .env.example .env.local # add REPULL_API_KEY + REPULL_WORKSPACE_ID npm run dev
import { Repull } from '@repull/sdk'
const repull = new Repull({
apiKey: process.env.REPULL_API_KEY!,
workspaceId: process.env.REPULL_WORKSPACE_ID!,
})
// Push a property to every connected channel
await repull.properties.create({
title: 'R-Sable 1302',
bedrooms: 2,
city: 'Radium Hot Springs',
channels: ['airbnb', 'booking', 'vrbo'],
photos: [...],
amenities: ['wifi', 'parking', 'hot-tub'],
})
// Or only Airbnb, with platform-specific fields:
await repull.properties.create({
title: 'R-Sable 1302',
...,
channels: ['airbnb'],
airbnb: { instantBook: true, minNights: 2 },
})Pourquoi l'open source compte ici
Les connecteurs Repull vivent en public. Si on disparaissait demain, tu aurais toujours le code qui parle à Airbnb. C'est un choix délibéré, pas une formule marketing.
Chaque adapter est open source sur GitHub. Le template de channel manager est open source. Les SDKs sont open source. Tu peux forker toute la stack.
Vois exactement comment Repull parle à Airbnb. Ouvre un bug, envoie une PR, ou copie une fonction. Le code, c'est la doc.
Issues, releases et roadmap sur GitHub. Les demandes de nouveaux connecteurs passent en review de PR dans la semaine.
Une clé API en 30 secondes. Connecte un PMS ou liste en direct, et chaque canal est à un appel d'écriture.