new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
LeadPilot repère les prospects oubliés dans un export CRM, estime le chiffre d'affaires récupérable et rédige la relance à envoyer. Ce n'est pas un CRM. Stack : Next.js 15 (App Router) · TypeScript · Tailwind CSS v4 · shadcn/ui · Supabase. En développement uniquement (404 en production) : catalogue des composants sur /ui, aperçus sans connexion remplis avec des données d'exemple sur /ui/apercu (dashboard), /ui/apercu/prospect, /ui/apercu/priorites, /ui/apercu/dossiers et /ui/apercu/dossiers-a-risque.README 전문 보기 ↗
LeadPilot repère les prospects oubliés dans un export CRM, estime le chiffre d'affaires récupérable et rédige la relance à envoyer. Ce n'est pas un CRM.
Stack : Next.js 15 (App Router) · TypeScript · Tailwind CSS v4 · shadcn/ui · Supabase.
npm install
cp .env.example .env.local # URL, clé publishable Supabase et URL du site
npm run dev # http://localhost:3000
| Commande | Rôle |
|---|---|
npm run dev | Serveur de développement (Turbopack) |
npm run build | Build de production |
npm run lint | ESLint |
npx tsc --noEmit | Vérification des types |
npm test | Tests unitaires (lecture des CSV : montants, dates, étapes, colonnes) |
npm run test:db | Tests du schéma, du calcul et de la Row Level Security (Postgres embarqué, sans Docker) |
npm run db:push | Applique les migrations au projet Supabase lié |
npm run db:types | Régénère src/types/database.ts depuis le projet lié |
En développement uniquement (404 en production) : catalogue des composants sur /ui, aperçus sans connexion remplis avec des données d'exemple sur /ui/apercu (dashboard), /ui/apercu/prospect, /ui/apercu/priorites, /ui/apercu/dossiers et /ui/apercu/dossiers-a-risque.
npx supabase login
npx supabase link --project-ref <ref-du-projet>
npm run db:push
npm run db:types
npx supabase config diff # toujours relire : en non-interactif, config push applique sans demander
npx supabase config push
En production, remplacer site_url et additional_redirect_urls dans supabase/config.toml par l'URL publique.supabase/templates/) : nécessitent un SMTP personnalisé. Sur l'offre gratuite avec l'envoi par défaut, Supabase refuse toute modification des modèles ; l'email reste en anglais et son lien (flux PKCE, ?code=) doit être ouvert dans le navigateur qui a demandé la connexion. Une fois le SMTP configuré (Authentication > SMTP Settings), décommenter les sections [auth.email.template.*] de supabase/config.toml et refaire config push : le lien passe alors en token_hash et fonctionne depuis n'importe quel navigateur..env.local (ou les variables de l'hébergeur) : NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, NEXT_PUBLIC_SITE_URL.cdg1, vercel.json), à côté de la base Supabase (eu-west-3).NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, NEXT_PUBLIC_SITE_URL (URL publique exacte, sans / final) ; pour l'envoi par e-mail, BREVO_API_KEY (secrète), BREVO_SENDER_EMAIL, BREVO_SENDER_NAME. La seule clé secrète est BREVO_API_KEY, lue côté serveur ; la clé service_role / sb_secret_ de Supabase n'est jamais utilisée par l'application. Les variables NEXT_PUBLIC_ sont figées au build : après une modification, redéployer.https://<domaine>/** (garder http://localhost:3000/** pour le développement). À faire dans le tableau de bord plutôt qu'avec config push, dont le fichier local pointe vers localhost.npm run test:db.L'écran Importer accepte un CSV (10 Mo, 5 000 lignes max), séparé par virgules ou points-virgules, en UTF-8 ou en encodage Excel français. Colonnes reconnues automatiquement (noms FR/EN, HubSpot, Pipedrive, Salesforce) : entreprise, contact, email, téléphone, montant, date dernier contact, statut, notes (* obligatoires). Voir public/exemple-prospects.csv.
recalculer_prospects() calcule oubli, probabilité, CA récupérable et score (formule de l'architecture produit). Un recalcul de tous les comptes tourne chaque nuit à 3 h UTC (pg_cron).Le score (0 à 100) compare le CA récupérable d'un prospect à celui de la meilleure affaire ouverte du compte (= 100). Le CA récupérable vaut montant × poids de l'étape × fraîcheur du contact. La fiche prospect l'explique : un verdict en une phrase, les facteurs (montant, étape, silence) classés par influence avec leurs points, et une cascade « prospect moyen du compte → score ». Les points sont des valeurs de Shapley : chaque facteur est comparé au prospect moyen du compte et la somme retombe exactement sur le score. Sur le dashboard, survoler un anneau de score affiche le même résumé.
Sur la fiche d'un prospect, « Préparer la relance » complète un modèle rédigé à l'avance (src/lib/followups/templates.ts), sans aucun appel à une API d'IA ni coût par relance :
direct, formel, chaleureux), soit 15 variantes.prepareFollowup, données relues en base) et enregistrée dans relances (modele_ia = modele:<scénario>). Tant qu'elle n'a été ni copiée ni ouverte dans Gmail, changer de modèle ou de ton réécrit le même brouillon. Le texte reste modifiable avant envoi.mail.google.com/mail/?view=cm) : aucune connexion Google, aucun OAuth, aucune API. LeadPilot n'envoie rien : le message part quand l'utilisateur clique sur « Envoyer » dans Gmail. « Copier le message » reste disponible pour tout autre client mail. Ouvrir ou copier horodate la relance (copiee_le) ; l'interface parle alors de relance « copiée ou ouverte », jamais « envoyée ».En plus de Gmail, une relance peut être envoyée depuis LeadPilot via l'API transactionnelle officielle de Brevo (POST https://api.brevo.com/v3/smtp/email, clé dans l'en-tête api-key).
POST /api/relances/envoyer (src/app/api/relances/envoyer/route.ts) : vérifie l'origine de la requête, la session, la configuration, que la relance et le prospect appartiennent au compte (RLS + filtre explicite), l'opposition à la prospection, l'adresse du destinataire, que le texte est identique à l'aperçu, la limite de 30 envois par heure et par compte, et que l'expéditeur est déclaré et actif dans Brevo (GET /v3/senders, jamais supposé). La relance est ensuite réservée de façon atomique (envoi_statut = 'en_cours') : un double clic ou deux onglets ne peuvent pas l'envoyer deux fois.envoi_statut = 'envoyee', date, adresse et identifiant Brevo (brevo_message_id) enregistrés ; le message n'est plus modifiable et le dossier passe en « Relancé ». En cas d'échec, envoi_statut = 'echec' avec un message sans détail technique ni clé ; on peut réessayer.BREVO_SENDER_NAME <BREVO_SENDER_EMAIL> ; les réponses vont à l'adresse du compte LeadPilot (replyTo).prospects.opposition_prospection_le) bloque tout contact depuis LeadPilot, Gmail compris, et passe le dossier en « Ignoré ».BREVO_API_KEY, BREVO_SENDER_EMAIL, BREVO_SENDER_NAME. Sans elles, le bouton reste désactivé.supabase/migrations/20261009120000_envoi_email_brevo.sql (colonnes ajoutées, aucune donnée modifiée).Pour essayer l'application sans fichier : se connecter une fois, remplacer l'adresse dans supabase/demo-data.sql puis l'exécuter dans le SQL Editor.
| Écran | Route |
|---|---|
| E1 Connexion | /connexion |
| E2 Import et réglages | /import |
| E3 Tableau de bord | /tableau-de-bord |
| E4 Liste des prospects | /prospects |
| E5 Fiche prospect et relance | /prospects/[id] |