nFuse raises $2M to let small retailers order via WhatsApp
Two former Coca-Cola operators built a messaging-first ordering platform after watching B2B eCommerce initiatives repeatedly fail in fragmented trade. The platform claims 70% retailer adoption and order processing costs up to 20 times lower than traditional digital channels. Bulgarian B2B ordering startup nFuse has raised $2 million from Eleven Ventures and LAUNCHub in a round [ ] This story continues at The Next Web
Two former Coca-Cola operators built a messaging-first ordering platform after watching B2B eCommerce initiatives repeatedly fail in fragmented trade. The platform claims 70% retailer adoption and order processing costs up to 20 times lower than traditional digital channels.
Bulgarian B2B ordering startup nFuse has raised $2 million from Eleven Ventures and LAUNCHub in a round designed to accelerate expansion across the CESEE, Latin American, and Southeast Asian markets its founders know from nearly three decades of combined experience at Coca-Cola.
The platform lets small retailers place orders via WhatsApp, Viber, or SMS using text, voice messages, or photos of empty shelves, with no app to download and no new interface to learn.
The company was founded by Stoyan Ivanov, who spent nearly 20 years at Coca-Cola including as New Ventures Director for Europe, and Stefan Radov, who spent a decade at the company working across distribution, sales, and go-to-market operations.
Their shared starting point was a pattern both had watched for years: FMCG companies investing heavily in B2B eCommerce portals, with adoption in fragmented trade sitting around 15%, implementation timelines of 18 months, and millions of independent small retailers, kiosks, and shops largely ignoring the platforms.
The observation that drove nFuse was behavioural rather than technical. Retailers across emerging markets were already running their businesses through messaging apps, sending photos of empty shelves or voice-messaging orders to sales reps because it was faster than typing into a portal. nFuse is built on that channel rather than against it.
A retailer photographs an empty shelf; the image becomes a confirmed order. Ivanov puts the underlying problem plainly: the platforms were built for the dashboards and data that headquarters wanted, not for the person standing behind a counter who needs to reorder beer before the weekend.
The results the company reports are striking relative to the category. nFuse claims 70% retailer adoption, compared with the roughly 15% typical of B2B ordering apps in fragmented trade, and says its per-order processing cost of around $1 is up to 20 times lower than the cost of orders processed through traditional digital platforms.
The company’s website states clients can go live within 30 days. Fragmented trade, the network of independent retailers that dominate commerce in emerging markets, represents over $5 trillion in global value globally, and in regions including CESEE, Latin America, Africa, and Southeast Asia, these outlets account for the majority of FMCG sales.
Eleven Ventures and LAUNCHub are both Sofia-based venture funds with a track record in B2B software across Central and Eastern Europe. The funding will support expansion across nFuse’s target geographies as the company pushes further into markets where messaging-based commerce is already the behavioural norm rather than an edge case.
Sign in to highlight and annotate this article

Conversation starters
Daily AI Digest
Get the top 5 AI stories delivered to your inbox every morning.
More about
launchplatformstartup
How to Choose The Best Test Management Software For Your Team
Research shows that QA teams who evaluate tools using a structured framework are significantly more likely to be satisfied with their decision a year down the line. What follows is exactly that kind of framework. Selecting a test management platform touches nearly every part of how your team operates on a daily basis. It affects how test cases are built and maintained, how bugs are surfaced and communicated, how teams gauge readiness before a release, and how quality data gets to the right people at the right time. A good fit becomes invisible, quietly supporting the work. A poor fit becomes a source of ongoing friction, producing workarounds that undermine the whole point of having a tool in the first place. The market has no shortage of options, and vendor marketing tends to highlight th

PgBouncer: Database Connection Pooling That Actually Scales
Why Your Database Runs Out of Connections PostgreSQL handles each connection with a dedicated OS process. At 100 connections, it's using 100 processes. At 500, memory is exhausted and queries slow to a crawl. Node.js apps compound this—each serverless function instance wants its own connection pool. PgBouncer sits between your app and PostgreSQL, multiplexing hundreds of app connections onto a small number of real database connections. App instances (500 connections) → PgBouncer → PostgreSQL (20 connections) PgBouncer Modes Session Mode One database connection per client connection. Same as no pooling. pool_mode = session Use only for compatibility. Provides no real benefit. Transaction Mode Database connection is released back to the pool after each transaction. pool_mode = transaction Th

How I replaced 200 lines of Zod refinements with 12
Every project I start ends up with the same validation code. Email with disposable domain blocking. Password with strength rules. Phone number via libphonenumber-js. Username with reserved word checks. All built with .refine() and .superRefine() chains on top of Zod. Different projects, different defaults, forgotten edge cases. The same bugs are showing up in different codebases because I copied the wrong version of the email regex. Here's what a typical registration form looked like before: const schema = z . object ({ email : z . string () . email () . refine ( async ( val ) => { const domain = val . split ( ' @ ' )[ 1 ] const list = await loadDisposableDomains () return ! list . includes ( domain ) }, ' Disposable emails not allowed ' ) . refine (( val ) => ! val . includes ( ' + ' ), '
Knowledge Map
Connected Articles — Knowledge Graph
This article is connected to other articles through shared AI topics and tags.
More in Products

OAuth 2.0 Flows Demystified: Authorization Code, PKCE, and Client Credentials
OAuth 2.0 Is Not Authentication OAuth 2.0 is an authorization framework. It answers: "Can application X access resource Y on behalf of user Z?" OpenID Connect (OIDC) layers authentication on top: "Who is this user?" Most developers use both without realizing it. The Four Flows 1. Authorization Code Flow (Web Apps) The standard flow for web applications with a backend. Browser → Your App → GitHub/Google ("Allow access?") → Your App (with code) → Exchange code for token // Step 1: Redirect user to provider app . get ( ' /auth/github ' , ( req , res ) => { const state = generateRandomString ( 16 ); // CSRF protection req . session . oauthState = state ; const params = new URLSearchParams ({ client_id : process . env . GITHUB_CLIENT_ID ! , redirect_uri : ` ${ process . env . APP_URL } /auth/gi

Why I Built Scenar.io - An AI-Powered DevOps Interview Practice Tool
Why I Built Scenar.io How It Started I was prepping for a Google SRE interview and struggling with the debugging portion. Not the knowledge - I knew the commands, I'd fixed real incidents at work. The problem was practicing under interview conditions: thinking out loud, explaining your reasoning, having someone challenge your approach. I started using Claude in the terminal to simulate it. I'd describe a scenario, ask it to act as a broken server, and practice talking through my debugging process. After a few weeks I realized I was spending more time setting up the prompts than actually practicing. I had this whole system - hidden server states, clue tracking, difficulty levels - and it hit me: this should just be a tool. I looked at what already existed. SadServers makes you type exact co

How to Choose The Best Test Management Software For Your Team
Research shows that QA teams who evaluate tools using a structured framework are significantly more likely to be satisfied with their decision a year down the line. What follows is exactly that kind of framework. Selecting a test management platform touches nearly every part of how your team operates on a daily basis. It affects how test cases are built and maintained, how bugs are surfaced and communicated, how teams gauge readiness before a release, and how quality data gets to the right people at the right time. A good fit becomes invisible, quietly supporting the work. A poor fit becomes a source of ongoing friction, producing workarounds that undermine the whole point of having a tool in the first place. The market has no shortage of options, and vendor marketing tends to highlight th

PgBouncer: Database Connection Pooling That Actually Scales
Why Your Database Runs Out of Connections PostgreSQL handles each connection with a dedicated OS process. At 100 connections, it's using 100 processes. At 500, memory is exhausted and queries slow to a crawl. Node.js apps compound this—each serverless function instance wants its own connection pool. PgBouncer sits between your app and PostgreSQL, multiplexing hundreds of app connections onto a small number of real database connections. App instances (500 connections) → PgBouncer → PostgreSQL (20 connections) PgBouncer Modes Session Mode One database connection per client connection. Same as no pooling. pool_mode = session Use only for compatibility. Provides no real benefit. Transaction Mode Database connection is released back to the pool after each transaction. pool_mode = transaction Th


Discussion
Sign in to join the discussion
No comments yet — be the first to share your thoughts!