Context
Nous réunissons les sources autorisées pertinentes pour le projet.
Organizarea muncii Développement & démonstrations
Taskin explore la transformation des discussions et du contexte de projet en engagements, priorités et étapes de travail. L’objectif est de maintenir le lien entre une tâche et la conversation dont elle est issue.
Taskin
Nous réunissons les sources autorisées pertinentes pour le projet.
Nous identifions les décisions et les choses à faire pour vérification par l’équipe.
Nous organisons les responsabilités et le suivi des étapes confirmées.
La reconstitution des décisions et des priorités sans perdre le contexte.
Propositions de tâches issues des discussions, révisées avant utilisation.
Une direction pour la coordination entre les personnes et les agents IA.
Les fonctions et les connexions sont en développement. Nous ne supposons pas que toute décision extraite automatiquement soit correcte ou approuvée.
Taskin en détail
Taskin est un board de travail qui a une particularité : il n’attend pas que vous y saisissiez les tâches. Il lit ce qui s’est déjà passé — appels, mails, calendrier, messages, commits, sessions de travail — et propose ce qui devrait être fait, avec la preuve à partir de laquelle la proposition est apparue.
La distinction qu’il construit est entre ce qui a été observé et ce qui a été décidé. Une tâche proposée automatiquement ne devient pas un engagement tant qu’une personne ne confirme pas le responsable, le délai et la formulation. Cette règle n’est pas une promesse d’interface, mais une restriction imposée dans la base de données : un agent ne peut pas clôturer une tâche, et toute écriture qui en clôt une doit déclarer qui l’a demandée. Une écriture sans nom est refusée.
Nous l’utilisons sur nous-mêmes. Presque tout ce qui est intéressant dedans est apparu parce qu’il nous manquait quelque chose de concret dans l’exploitation de notre propre entreprise, et les commentaires dans le code citent des comptages réels en production et des incidents datés — y compris un cas où une routine quotidienne est restée silencieuse onze jours d’affilée sans que personne ne le sache.
50 routes sur 49 pages : équipes, cycles, projets, tâches, boîte de réception, feuille de route, plan de la journée, clients avec dossier et historique, dépenses récurrentes, facturation, pointage et sessions de travail, performances, chat interne, administration et membres. La base comporte 90 tables, construites à partir de 81 migrations.
Des routines programmées sur le serveur, pas des temporisateurs dans le processus — car un temporisateur se perd à chaque redeploy. Chaque exécution passe par un enveloppe qui écrit un journal et traite même une réponse HTTP 200 comme un échec si elle contient une liste d’erreurs, avec alerte sur Telegram. L’enveloppe existe parce qu’avant, une commande qui échouait silencieusement a laissé le briefing quotidien mort pendant onze jours.
14 outils via HTTP — lecture (listage, recherche, ma file d’attente, la file des agents, résumé du board, personnes, agents, projets) et écriture (création, mise à jour, attribution, déplacement, commentaire). Chaque jeton d’accès est lié à un profil réel, donc l’activité sur le board consigne qui l’a demandée. Un agent IA et un collègue travaillent sur la même liste, avec les mêmes règles.
Telegram, comme bot propre avec écoute permanente, y compris la transcription des messages vocaux. Quatre boîtes mail (trois Gmail et une Microsoft 365), lues exclusivement en mode lecture. Google Calendar. Appels téléphoniques, via un tronc SIP, y compris des appels de rappel initiés par le board. Obsidian. LinkedIn. Les modèles passent par une passerelle propre compatible OpenAI, et le moteur d’exécution des agents utilise une boucle d’outils via OpenRouter.
« Un agent ne clôt pas une tâche » est une fonction dans la base de données, pas une phrase dans une description d’outil. Elle y est arrivée parce que la première version ne fonctionnait pas : elle identifiait l’acteur d’une manière qui donnait un résultat vide pour un service automatisé, donc la règle ne s’appliquait nulle part. Maintenant, l’acteur est résolu à partir de trois sources successives et, si cela ne peut pas être établi, la demande est refusée.
Données et fonctionnement
De l'exploration à l'implémentation
Nous ne connectons pas tout. Une source — en général le mail ou Telegram — et un projet réel, pour voir sur des données réelles ce que le système propose et quelle part de ce qu’il propose est utile.
La période pendant laquelle le système propose et l’équipe ne fait que confirmer ou rejeter est celle qui indique s’il vaut la peine de continuer. Une proposition rejetée est aussi informative qu’une proposition acceptée.
Qui peut clôturer quoi, ce qu’est un délai et ce qu’il advient d’une tâche sans responsable. C’est aussi ici que se décide si les agents ont le droit d’écrire sur le board, et dans quelles conditions.
La livraison se fait par rsync vers une machine, pas un conteneur : l’interface comme répertoires statiques servis par nginx, le collecteur et le serveur MCP comme services systemd. La vérification d’état compare le paquet servi à celui construit et revient en arrière s’ils ne correspondent pas.
Il fonctionne en production et c’est le board sur lequel nous dirigeons notre entreprise. Les chiffres : 566 commits, le dernier le 4 septembre 2026 ; 81 migrations qui construisent 90 tables ; 171 politiques d’accès au niveau des lignes ; 563 cas de test automatisés dans 38 fichiers ; 21 routines planifiées sur le serveur plus 9 boucles dans le processus ; 14 outils MCP ; 35 endpoint sur le collecteur. Ce que ce n’est pas : un service en libre-service. Il n’existe pas de bouton permettant à une équipe externe de le lancer seule — il s’installe.
Non, et la restriction est dans la base de données, pas dans l’interface. Une fonction de type garde empêche un agent de clôturer une tâche, et toute écriture qui en clôture une doit déclarer l’acteur ; si l’acteur ne peut pas être établi, la requête est refusée. Il vaut aussi la peine d’expliquer pourquoi la règle est ainsi : la première version identifiait l’acteur par une fonction qui renvoyait vide pour un service automatique, donc elle ne s’appliquait nulle part. Un audit interne l’a trouvée, et la migration qui l’a corrigée explique en commentaire exactement ce qui ne fonctionnait pas.
En vrai, avec du code et une routine planifiée : Telegram (bot propre, écoute permanente, transcription des messages vocaux), quatre boîtes mail — trois Gmail et une Microsoft 365 — en lecture seule, Google Calendar, appels téléphoniques via un trunk SIP, Obsidian, LinkedIn, plus les sessions de travail et l’activité git lues depuis l’ordinateur de la personne. Les modèles passent par une passerelle propre compatible OpenAI ; le moteur d’exécution des agents fonctionne sur OpenRouter. Ce qui n’est PAS connecté, bien que notre page d’intégrations l’affiche : Slack, GitHub, Jira, Notion, Figma, Zapier, Dropbox, Google Drive, Microsoft Teams, GitLab, Outlook. Nous avons cherché dans le code et il n’existe aucune ligne pour aucun d’eux. Cette page est une grille marketing et doit être corrigée.
Non, malgré le nom d’un écran dans l’application. Cet écran correspond en fait à l’appairage d’un appareil via code QR, dans le style auquel les gens sont habitués avec WhatsApp Web — d’où le nom. Il n’existe aucun appel vers une API WhatsApp. Plus encore : ce flux n’est pas utilisé, et ses tables sont vides, ce que constate même la migration qui a revu leurs permissions.
L’utile n’est pas que nous ayons des politiques d’accès, mais que nous ayons trouvé les failles et les ayons réparées une à une, chaque migration expliquant ce qui ne fonctionnait pas. Un audit interne d’août a découvert que les trois gardes pour les agents étaient toutes inertes. Une autre garde s’est révélée fail-open — la vérification était entièrement sautée, pas refusée — et a été inversée pour échouer fermé. Le troisième problème était subtil et général : dans Postgres, une nouvelle fonction est exécutable par défaut par tout le monde, donc l’octroi explicite de droits ne restreignait rien ; on a vérifié en production qu’une clé anonyme arrivait dans le corps de la fonction, puis on a révoqué le droit par défaut. Au niveau du dépôt, une garde refuse les push directs sur la branche principale et bloque les fichiers de secrets, car un dépôt privé sur un compte personnel ne peut pas avoir de protection de branche de la part de GitHub.
Trois choses que nous préférons dire. Les types générés pour la base de données sont obsolètes depuis janvier et contiennent des tables d’un projet totalement sans rapport, ce qui a forcé 101 conversions de type forcées dans 26 fichiers — cela fonctionne, mais cela fait perdre la vérification à la compilation précisément là où elle serait utile. Le vérificateur de style signale 161 erreurs héritées et ne bloque pas la livraison. Et 36 tests sont sautés dans l’intégration continue parce qu’ils nécessitent une clé de modèle qui n’y existe pas. Aucun n’arrête le produit ; les trois relèvent d’une dette réelle.
Par rsync, pas par conteneur : l’interface arrive dans un répertoire statique servi par nginx, le collecteur et le serveur MCP tournent comme services systemd. L’intégration continue exécute les tests et construit ; la livraison ne démarre que si ceux-ci ont réussi sur la branche principale, via un exécuteur propre qui a le droit d’exécuter exactement deux scripts et rien d’autre. Chaque action externe dans le pipeline est fixée à son empreinte complète, pas à un label, après la compromission d’une action populaire en mars 2026. La vérification d’état lit quel paquet est référencé par la page servie et revient en arrière si ce n’est pas le plus récent — règle écrite après un incident réel du 3 septembre 2026. Les migrations de base de données restent manuelles, délibérément.
Exemple illustratif
Un scénario d’utilisation, sans données client ni résultats commerciaux attribués.
Un appel se termine par une promesse. Personne ne l’écrit nulle part, et une semaine plus tard, personne ne se souvient ni de ce qui a été promis, ni à qui.
L’appel entre dans le board par une routine programmée, comme une trace avec lien de retour à la source. Une boucle le relie au dossier client approprié et propose une tâche avec responsable et délai. La proposition reste une proposition : la gate dans la base de données ne permet pas à un agent de la clôturer, et l’écriture qui la clôturerait doit déclarer qui l’a demandée.
La tâche apparaît avec le contexte dont elle résulte attaché, afin qu’un collègue qui n’a pas participé à l’appel puisse comprendre ce qu’il faut faire sans reconstruire la discussion. Une personne confirme le responsable, le délai et la formulation — ou rejette la proposition, ce qui est tout aussi informatif.
Ce este necesar:Sursa trebuie conectată efectiv, cu acces autorizat, și trebuie să existe un acord al echipei asupra a ce înseamnă o sarcină atribuită. Sistemul nu presupune consimțământul nimănui.
Possibilités de collaboration
Connexion des sources autorisées, organisation de l’information et revue des actions par l’équipe, avec accès séparé par rôles.
Nous définissons un pilote autour d’un processus réel : utilisateurs, données, intégrations, coûts et critères d’acceptation. L’extension suit après l’évaluation du résultat.
Nous établissons les exigences d’accessibilité, d’hébergement, de protection des données et d’interopérabilité. Toute connexion avec des services AGE ou STISC nécessite la validation de l’éligibilité, de l’accès et des approbations.
Ce sont des scénarios d’adaptation, non des déclarations sur des contrats ou partenariats existants. Les fonctions proposées sont confirmées dans le périmètre de travail du projet.
Discuter d'un piloteUn assistant connecté aux informations de votre entreprise, dans les canaux où vos clients vous écrivent.
PlatformăCronberry réunit sources autorisées, conversations et relations dans un espace de recherche et de coordination.
Développement & démonstrationsMegaforms explore la collecte de réponses par formulaires conversationnels, réponses vocales et transcription comprises.
Développement & démonstrationsRacontez-nous votre processus. Ensemble, nous décidons ce qui vaut la peine d'être construit, ce que nous pouvons connecter et comment nous vérifions le résultat.