Bankstatemently
Trasforma gli estratti conto in PDF in file Excel
Incasso mensile: 375 USD (fonte indicata nella scheda)
Cosa fa
Converte gli estratti conto bancari in PDF in file CSV, Excel o per programmi di contabilità.
Come guadagna
Ha entrate ricorrenti ogni mese, verificate su TrustMRR. Prezzi e piani esatti sono indicati sul sito del progetto.
Rendilo tuo
- Per le banche italiane e per i commercialisti, che ricevono estratti conto in PDF dai clienti.
- Attenzione alla privacy: file cancellati subito dopo la conversione.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Estratto in Excel": converte gli estratti conto bancari in PDF in file Excel o CSV ordinati (data, descrizione, entrate, uscite, saldo), con il controllo che i conti tornino. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con un esempio e i prezzi
2. Registrazione e accesso
3. Caricamento del PDF: tutto viene letto nel browser
4. Anteprima della tabella con il controllo dei saldi
5. Esportazione in Excel, CSV o formato per il gestionale
Stile: sobrio e affidabile: sfondo bianco, verde #15803D, grigio #374151, carattere "Inter", tabella stile foglio di calcolo con i totali in fondo. 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:
- "conversioni": nome della banca, periodo, numero di movimenti, esito del controllo, data. I movimenti NON si salvano
- "profili": piano e pagine convertite nel mese
Regole di sicurezza obbligatorie:
- i dati dei movimenti non lasciano il browser e non si salvano sul server
- ogni utente vede solo il registro delle sue conversioni
- il piano non si modifica dal browser
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. Lettura nel browser e controllo dei saldi
Il PDF viene letto nel browser con pdf.js (codice nei Dettagli tecnici): nessun dato bancario viene caricato sul server. Mostra in grande: "Il tuo estratto conto non lascia il tuo computer".
Dal testo si ricavano le righe dei movimenti con regole per i formati delle principali banche italiane (data, data valuta, descrizione su più righe, importo con la virgola). Per i formati non riconosciuti, l'utente indica una volta quali colonne sono cosa.
Controllo dei conti: saldo iniziale + entrate − uscite deve dare il saldo finale stampato. Se torna, spunta verde; se no, evidenzia la pagina dove probabilmente manca un movimento.
4. Esportazione
Esportazione in Excel (.xlsx) con le colonne Data, Descrizione, Entrate, Uscite, Saldo, i totali e il formato numerico italiano; in CSV; e in formati di importazione per i gestionali più usati.
Categorie automatiche facoltative (stipendio, affitto, utenze, carburante) con regole sulle parole della descrizione, modificabili dall'utente e salvate nel browser.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 9 € al mese. Gratis l'utente ha: 5 pagine al mese. Con il piano Pro sblocca: pagine illimitate, più conti, categorie automatiche ed esportazione per i gestionali.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
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. Privacy: apri la scheda Rete degli strumenti del browser durante una conversione: non deve partire nessuna richiesta con i dati dell'estratto conto.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Leggere il PDF nel browser
Estrae le righe di testo da ogni pagina del PDF con pdf.js, raggruppando i pezzi di testo che stanno alla stessa altezza.
import * as pdfjs from "pdfjs-dist";
pdfjs.GlobalWorkerOptions.workerSrc = new URL("pdfjs-dist/build/pdf.worker.mjs", import.meta.url).toString();
export async function righeDelPdf(file: File): Promise<string[][]> {
const pdf = await pdfjs.getDocument({ data: await file.arrayBuffer() }).promise;
const pagine: string[][] = [];
for (let n = 1; n <= pdf.numPages; n++) {
const contenuto = await (await pdf.getPage(n)).getTextContent();
const perRiga = new Map<number, { x: number; testo: string }[]>();
for (const pezzo of contenuto.items as { str: string; transform: number[] }[]) {
const y = Math.round(pezzo.transform[5]); // altezza sulla pagina
if (!perRiga.has(y)) perRiga.set(y, []);
perRiga.get(y)!.push({ x: pezzo.transform[4], testo: pezzo.str });
}
pagine.push(
[...perRiga.entries()]
.sort((a, b) => b[0] - a[0]) // dall'alto in basso
.map(([, pezzi]) => pezzi.sort((a, b) => a.x - b.x).map((p) => p.testo).join(" ").trim())
.filter(Boolean),
);
}
return pagine;
}I conti tornano?
Converte gli importi in formato italiano e controlla che saldo iniziale più movimenti dia il saldo finale, lavorando in centesimi per evitare errori di arrotondamento.
// "1.234,56" -> 123456 centesimi; "-45,00" -> -4500
export function centesimi(importo: string): number {
const pulito = importo.replace(/[^\d,-]/g, "").replace(",", ".");
return Math.round(Number(pulito) * 100);
}
type Movimento = { data: string; descrizione: string; entrata: number; uscita: number }; // centesimi
export function controllaSaldi(saldoIniziale: number, movimenti: Movimento[], saldoFinale: number) {
const calcolato = movimenti.reduce((s, m) => s + m.entrata - m.uscita, saldoIniziale);
return {
ok: calcolato === saldoFinale,
differenza: (saldoFinale - calcolato) / 100, // in euro: il movimento che probabilmente manca
entrate: movimenti.reduce((s, m) => s + m.entrata, 0) / 100,
uscite: movimenti.reduce((s, m) => s + m.uscita, 0) / 100,
};
}
Pezzi comuni a tutti i progetti
Glossario
- CSV
- Un file di testo con i dati separati da virgole, che si apre con Excel.
- pdf.js
- La libreria gratuita di Mozilla che legge i PDF direttamente nel browser.
- Elaborazione nel browser
- I dati vengono letti dal computer dell'utente e non arrivano mai a nessun server: il modo più sicuro per la privacy.