CSV Deduper - 100% Private B2B CSV Lead List Cleaner via Telegram
by•
Ultra-fast B2B CSV Deduper & Lead List Cleaner built on Rust + WebAssembly.
Replies
Best
Maker
📌
Hey Hunters! 👋
I built this tool because I was tired of uploading sensitive lead lists and B2B data backups to random websites just to clean duplicates. This is a Telegram Mini App powered by pure Rust + WebAssembly.
Why use it? • 100% Private: Zero backend. Processing happens strictly inside your device's WebView. Your data never leaves your chat. • Blazing Fast: Thanks to Rust compilation, it handles large CSV files easily on the fly without lagging your phone. • No Signup: Launch right inside Telegram and clean your files in seconds.
I'd love to hear your feedback on the performance and UI. Give it a spin at t.me/csv_deduper_bot
Report
The Rust + WebAssembly combo here is a smart call for something crunching huge CSVs, makes the whole thing feel instant instead of dragging. Curious how you handled memory for those massive lead lists under the hood.
Memory management is exactly why we went with Rust here. Under the hood, we don't load or materialize the entire massive CSV file or string into memory.
Instead, we stream the data using csv::ReaderBuilder and process records line-by-line via a single loop iteration. To keep memory consumption at an absolute minimum, our IndexSet stores only unique dedup keys (hashes/strings) rather than full CSV lines.
For whole-row comparison, we join fields using an ASCII Unit Separator (\u{1F}) to avoid collisions without allocations overhead. If a specific column like "email" is picked, only that trimmed field is kept in the unique set.
This keeps the memory footprint tight and deterministic even within a constrained mobile WebView container. Try throwing a nasty file at it!
Report
Cleaned a messy 50k row lead list in seconds right in the browser, no upload needed. The Rust + WASM combo really shows, it handled fuzzy matches way better than the spreadsheets I usually fight with.
Report
Maker
@ykbeyhanljbp Thanks for the feedback, Öykü! Glad to hear it saved you from spreadsheet hell.
You're exactly right — running the Rust engine directly inside the browser via WebAssembly is what allows us to analyze massive datasets instantly without any UI lag.
Appreciate your support and glad the performance met your expectations
Report
Handled a messy 50k row list in seconds and the Rust + WASM combo really does feel snappy compared to my old Python scripts. Wish I'd found this sooner.
Report
Maker
@sultansr23 Thanks, Sultan! Python is great, but compiled Rust to WebAssembly brings that raw native speed straight into the browser container. Glad it felt snappy and saved you some time. Appreciate the support
Report
Rust + WASM for CSV deduping is a smart stack choice and it actually feels snappy on big lists. The matching options are straightforward without burying you in settings.
Report
Maker
@cansel812054 Thanks for the support, Cansel! Keeping the UI clean and the settings straightforward was a priority. Glad you found the matching modes simple and the Rust/WASM core responsive on large datasets.
Report
the rust + wasm choice is genuinely smart for something like this, processing lead lists client-side without round trips to a server just feels right. curious how you handle the larger files though.
Report
Maker
@zehra38pu Thanks, Zehra! Client-side processing via WASM is our core feature for total privacy.
For larger files, we stream the data line-by-line using buffered readers, so we never load the whole file into the browser memory at once. Memory footprint stays tight and deterministic. Appreciate your support!
Report
Was skeptical about wasm doing dedup fast but this actually chewed through a messy 50k row export in seconds. Nice work.
Report
Maker
@tuncaybalnqnxd Thanks for the support, Tuncay! Compiled Rust to WebAssembly allows us to bypass the usual browser performance bottlenecks. Glad the 50k row processing speed met your expectations!
Report
honestly this looks super useful for anyone wrangling messy lead lists. one thing i'd love to see is a fuzzy match toggle for company names, like catching "Acme Inc" vs "ACME Incorporated" since that's where most of my dupes hide. would make the cleanup way more accurate for B2B data imo
Report
Maker
@ceydakl6mhw Thanks for the great feedback, Ceyda! You hit the exact pain point of B2B data cleaning.
Right now, our core engine is optimized for absolute raw speed and 100% exact/deterministic deduplication on client-side WebAssembly to keep it lightweight.
However, adding normalization heuristics (like stripping "Inc", "Ltd", "Incorporated" and converting to lowercase before hashing) is a fantastic idea and totally doable without sacrificing performance. I'll look into adding this toggle in the next update. Thanks for supporting us!
Report
honestly the rust + wasm choice is kind of inspired for something as mundane as deduping csvs, love that you went performance-first on a tool most people would have just shipped as a python script
Report
Maker
@toprakkutbay Thanks, Toprak! You nailed it. Shipping this as a standard Python or Node backend script means handling huge file uploads, server bottlenecks, and scaling costs.
By compiling Rust into WebAssembly, we completely offload the processing to the client side. The user gets native performance inside their local WebView container, and we get zero server overhead. Performance-first was definitely the only way to build this. Appreciate your support!
Report
Ran a messy 12k row file through it and the fuzzy match caught duplicates my spreadsheet formulas kept missing, which is honestly more than I expected from something that loads instantly in the browser.
Replies
Hey Hunters! 👋
I built this tool because I was tired of uploading sensitive lead lists and B2B data backups to random websites just to clean duplicates.
This is a Telegram Mini App powered by pure Rust + WebAssembly.
Why use it?
• 100% Private: Zero backend. Processing happens strictly inside your device's WebView. Your data never leaves your chat.
• Blazing Fast: Thanks to Rust compilation, it handles large CSV files easily on the fly without lagging your phone.
• No Signup: Launch right inside Telegram and clean your files in seconds.
I'd love to hear your feedback on the performance and UI. Give it a spin at t.me/csv_deduper_bot
The Rust + WebAssembly combo here is a smart call for something crunching huge CSVs, makes the whole thing feel instant instead of dragging. Curious how you handled memory for those massive lead lists under the hood.
@savayldzcwyzm Thanks for checking it out, Savaş!
Memory management is exactly why we went with Rust here. Under the hood, we don't load or materialize the entire massive CSV file or string into memory.
Instead, we stream the data using csv::ReaderBuilder and process records line-by-line via a single loop iteration. To keep memory consumption at an absolute minimum, our IndexSet stores only unique dedup keys (hashes/strings) rather than full CSV lines.
For whole-row comparison, we join fields using an ASCII Unit Separator (\u{1F}) to avoid collisions without allocations overhead. If a specific column like "email" is picked, only that trimmed field is kept in the unique set.
This keeps the memory footprint tight and deterministic even within a constrained mobile WebView container. Try throwing a nasty file at it!
Cleaned a messy 50k row lead list in seconds right in the browser, no upload needed. The Rust + WASM combo really shows, it handled fuzzy matches way better than the spreadsheets I usually fight with.
@ykbeyhanljbp Thanks for the feedback, Öykü! Glad to hear it saved you from spreadsheet hell.
You're exactly right — running the Rust engine directly inside the browser via WebAssembly is what allows us to analyze massive datasets instantly without any UI lag.
Appreciate your support and glad the performance met your expectations
Handled a messy 50k row list in seconds and the Rust + WASM combo really does feel snappy compared to my old Python scripts. Wish I'd found this sooner.
@sultansr23 Thanks, Sultan! Python is great, but compiled Rust to WebAssembly brings that raw native speed straight into the browser container. Glad it felt snappy and saved you some time. Appreciate the support
Rust + WASM for CSV deduping is a smart stack choice and it actually feels snappy on big lists. The matching options are straightforward without burying you in settings.
@cansel812054 Thanks for the support, Cansel! Keeping the UI clean and the settings straightforward was a priority. Glad you found the matching modes simple and the Rust/WASM core responsive on large datasets.
the rust + wasm choice is genuinely smart for something like this, processing lead lists client-side without round trips to a server just feels right. curious how you handle the larger files though.
@zehra38pu Thanks, Zehra! Client-side processing via WASM is our core feature for total privacy.
For larger files, we stream the data line-by-line using buffered readers, so we never load the whole file into the browser memory at once. Memory footprint stays tight and deterministic. Appreciate your support!
Was skeptical about wasm doing dedup fast but this actually chewed through a messy 50k row export in seconds. Nice work.
@tuncaybalnqnxd Thanks for the support, Tuncay! Compiled Rust to WebAssembly allows us to bypass the usual browser performance bottlenecks. Glad the 50k row processing speed met your expectations!
honestly this looks super useful for anyone wrangling messy lead lists. one thing i'd love to see is a fuzzy match toggle for company names, like catching "Acme Inc" vs "ACME Incorporated" since that's where most of my dupes hide. would make the cleanup way more accurate for B2B data imo
@ceydakl6mhw Thanks for the great feedback, Ceyda! You hit the exact pain point of B2B data cleaning.
Right now, our core engine is optimized for absolute raw speed and 100% exact/deterministic deduplication on client-side WebAssembly to keep it lightweight.
However, adding normalization heuristics (like stripping "Inc", "Ltd", "Incorporated" and converting to lowercase before hashing) is a fantastic idea and totally doable without sacrificing performance. I'll look into adding this toggle in the next update. Thanks for supporting us!
honestly the rust + wasm choice is kind of inspired for something as mundane as deduping csvs, love that you went performance-first on a tool most people would have just shipped as a python script
@toprakkutbay Thanks, Toprak! You nailed it. Shipping this as a standard Python or Node backend script means handling huge file uploads, server bottlenecks, and scaling costs.
By compiling Rust into WebAssembly, we completely offload the processing to the client side. The user gets native performance inside their local WebView container, and we get zero server overhead. Performance-first was definitely the only way to build this. Appreciate your support!
Ran a messy 12k row file through it and the fuzzy match caught duplicates my spreadsheet formulas kept missing, which is honestly more than I expected from something that loads instantly in the browser.