33800 Docs

← Retour

Task : NeedFinder v2 MVP - Multi-domaines + Persistance

Date : 13/01/2026 17:05 Duree : ~45 min Statut : TERMINE


Objectif

Transformer NeedFinder d'un collecteur IT en detecteur d'opportunites multi-domaines avec tracking de persistance.


Realisations

Phase 1 : Elargissement Collecte

Avant : 8 subreddits (IT uniquement) Apres : 27 subreddits sur 7 domaines

Domaine Subreddits Posts collectes
tech SomebodyMakeThis, AppIdeas, indiehackers, startups, SideProject, webdev, selfhosted, Entrepreneur 176
work freelance, digitalnomad, WorkOnline 36
health loseit, fitness, ADHD, sleep, mentalhealth 35
productivity productivity, getdisciplined, declutter 34
finance personalfinance, frugal, FIRE, povertyfinance 24
education GetStudying, languagelearning 20
family Parenting, NewParents 17

Total : 342 posts (vs 157 avant)

Phase 2 : Persistance Tracking

Nouvelles tables SQL :

-- Historique quotidien des mentions
CREATE TABLE need_history (
    id SERIAL PRIMARY KEY,
    need_id UUID REFERENCES detected_needs(id),
    snapshot_date DATE NOT NULL,
    mention_count INTEGER,
    total_engagement INTEGER,
    avg_score DECIMAL(5,2),
    UNIQUE(need_id, snapshot_date)
);

-- Tendances calculees
CREATE TABLE need_trends (
    id SERIAL PRIMARY KEY,
    need_id UUID REFERENCES detected_needs(id) UNIQUE,
    trend_type VARCHAR(20), -- rising, stable, declining, spike
    persistence_score INTEGER, -- 0-100
    growth_rate DECIMAL(5,2),
    days_active INTEGER
);

Fonctions PostgreSQL :

Vue opportunités :

CREATE VIEW opportunity_matrix AS
SELECT *,
  CASE
    WHEN persistence_score >= 70 AND opportunity_score >= 60 THEN 'high_opportunity'
    WHEN persistence_score >= 50 AND opportunity_score >= 40 THEN 'medium_opportunity'
    ELSE 'emerging'
  END as opportunity_level
FROM detected_needs;

API v2 - Nouveaux Endpoints

Endpoint Description
GET /api/stats Stats avec breakdown par domaine et persistance
GET /api/needs?domain=X&min_persistence=Y Filtrage par domaine/persistance
GET /api/opportunities?level=high Besoins haute opportunité
GET /api/trending Besoins rising ou spike
GET /api/needs/:id/history Historique d'un besoin

Fichiers Modifies

Fichier Modification
src/collectors/reddit.ts 27 subreddits, 7 domaines, patterns enrichis
src/collectors/hackernews.ts Schema public, table raw_posts
src/cron/scheduler.ts recordDailySnapshot() apres collecte
src/db/client.ts Schema public
src/index.ts API v2 avec endpoints persistance
docker-compose.yml Network supabase_default

Configuration Deployement

Container : needfinder-collector-dev (dev-portainer) Port : 5200 Network : supabase_default (acces direct PostgreSQL) Schedule : Toutes les 6h (00h, 06h, 12h, 18h UTC)


Test API

# Stats avec domaines
curl http://192.168.1.51:5200/api/stats | jq '.domains'

# Besoins trending
curl http://192.168.1.51:5200/api/trending

# Besoins haute persistance
curl "http://192.168.1.51:5200/api/needs?min_persistence=50"

Prochaines Etapes

  1. Dashboard HTML : Ajouter filtres domaine/persistance sur needfinder.html
  2. Analyse IA : Retraiter les 185 posts non analysés
  3. Faisabilité : Phase 3 (croisement avec GitHub/APIs)