1Lookup
Controlla in tempo reale se un'email o un numero di telefono sono veri
Incasso mensile: 272.483 USD (fonte indicata nella scheda)
Cosa fa
API che verifica in tempo reale email, numeri di telefono e indirizzi IP (validi, falsi, temporanei, a rischio) e offre altri 34 servizi di dati con un'unica chiave e un unico saldo di crediti.
Come guadagna
Crediti a consumo con 7 giorni di prova, 748 abbonati, quasi 5,7 milioni di dollari incassati in totale dal 2022. Incassi verificati con Stripe.
Rendilo tuo
- Per l'Italia: controllo di codice fiscale, partita IVA (VIES) e PEC.
- Plugin per WooCommerce e moduli di contatto: blocca le registrazioni false.
- Pulizia di liste email da file Excel per chi fa newsletter.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Dato Vero": un servizio di verifica dati per siti e negozi italiani: controlla email, telefono, partita IVA e codice fiscale via API o caricando un file, con crediti a consumo. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con una prova gratuita e i prezzi dei crediti
2. Registrazione e chiave API
3. Verifica singola
4. Verifica di un file CSV
5. Documentazione dell'API e utilizzo
Stile: da sviluppatori: sfondo #0B1120, verde #22C55E per "valido", rosso #EF4444, carattere "JetBrains Mono" per il codice e "Inter" per il testo. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "chiavi_api": impronta della chiave, nome, attiva
- "verifiche": tipo, valore cifrato, esito, crediti, data
- "crediti": saldo e movimenti
Regole di sicurezza obbligatorie:
- ogni utente vede solo le sue chiavi e verifiche
- le chiavi si salvano solo come impronta (hash), mai in chiaro
- i crediti si scalano solo dal server
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Le verifiche
Email: sintassi, dominio con record MX (accetta posta), dominio usa e getta (elenco aggiornato), errori comuni ("gmial.com"). Telefono: formato italiano e internazionale con libphonenumber. Partita IVA: controllo della cifra e verifica sul servizio europeo VIES. Codice fiscale: controllo del carattere finale (codice nei Dettagli tecnici).
L'API risponde in meno di un secondo con esito e motivo. Ogni verifica scala un credito con una funzione del database sicura anche con molte richieste insieme.
Privacy: i valori verificati si salvano cifrati e si cancellano dopo 30 giorni; nei log resta solo l'esito.
4. File CSV e chiavi API
Si carica un CSV di email o contatti: la verifica avviene in coda e si scarica il file con una colonna di esito. Utile per pulire le liste prima di una newsletter.
Pannello delle chiavi API: creazione, revoca, limite di richieste al minuto, grafico dell'utilizzo.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 1.000 verifiche a 9 €, 10.000 a 49 €, 100.000 a 299 €. Ogni nuovo utente riceve 100 crediti gratis. Ogni verifica costa un credito. Mostra sempre in alto quanti crediti restano e, quando finiscono, un riquadro per comprarne altri.
A pagamento riuscito il webhook aggiunge i crediti del pacchetto con la funzione aggiungi_crediti.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Chiavi: controlla nel database che le chiavi API siano salvate solo come impronta e non in chiaro.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Controllo del codice fiscale
Il sedicesimo carattere del codice fiscale è un controllo calcolato dagli altri 15: se non torna, il codice è sbagliato.
const DISPARI: Record<string, number> = {
"0": 1, "1": 0, "2": 5, "3": 7, "4": 9, "5": 13, "6": 15, "7": 17, "8": 19, "9": 21,
A: 1, B: 0, C: 5, D: 7, E: 9, F: 13, G: 15, H: 17, I: 19, J: 21, K: 2, L: 4, M: 18,
N: 20, O: 11, P: 3, Q: 6, R: 8, S: 12, T: 14, U: 16, V: 10, W: 22, X: 25, Y: 24, Z: 23,
};
const valorePari = (c: string) => (/\d/.test(c) ? Number(c) : c.charCodeAt(0) - 65);
export function codiceFiscaleValido(cf: string) {
const c = cf.toUpperCase().trim();
if (!/^[A-Z0-9]{16}$/.test(c)) return false;
let somma = 0;
for (let i = 0; i < 15; i++) somma += i % 2 === 0 ? DISPARI[c[i]] : valorePari(c[i]);
return String.fromCharCode(65 + (somma % 26)) === c[15];
}Email: il dominio accetta posta?
Una Edge Function controlla i record MX del dominio: se non ce ne sono, a quell'indirizzo non può arrivare posta.
const USA_E_GETTA = new Set(["mailinator.com", "10minutemail.com", "guerrillamail.com", "yopmail.com"]);
export async function verificaEmail(email: string) {
const m = /^[^\s@]+@([^\s@]+\.[^\s@]+)$/.exec(email.trim().toLowerCase());
if (!m) return { valida: false, motivo: "formato non valido" };
const dominio = m[1];
if (USA_E_GETTA.has(dominio)) return { valida: false, motivo: "email usa e getta" };
try {
const mx = await Deno.resolveDns(dominio, "MX");
return mx.length ? { valida: true, motivo: "il dominio riceve posta" } : { valida: false, motivo: "il dominio non riceve posta" };
} catch {
return { valida: false, motivo: "dominio inesistente" };
}
}
Pezzi comuni a tutti i progetti
Glossario
- Record MX
- L'indicazione, nel DNS di un dominio, di quale server riceve la sua posta: senza, le email non arrivano.
- VIES
- Il servizio europeo gratuito per verificare se una partita IVA è valida.
