Product Management
The 17:1 e-way bill gap: diagnosing B2B adoption
· Updated · 5 min read
S
Get AI Workflow Teardown Template
The template I use to map AI workflows before writing a spec.
No spam, unsubscribe anytime. I only email teardowns.
· Updated · 5 min read
The template I use to map AI workflows before writing a spec.
No spam, unsubscribe anytime. I only email teardowns.
At LiveKeeping, PRO+ users generated E-Way Bills in Tally rather than in the app — a 17:1 adoption gap hiding in white noise. A two-week deep-dive diagnosis mapped the real workflow and produced a C-suite narrative so clear it changed the product roadmap.
For every one merchant generating an e-way bill in our app, seventeen were generating it in Tally. We had shipped the feature, demoed it, celebrated it — and the dashboard that showed "usage" never once asked where the other bills were being made. A compliance SaaS with 50K+ Indian SMBs lives or dies on where merchants actually do bookkeeping, and the most dangerous number in B2B product is the one your analytics can't see: substitute behavior.
Step 1 — Workflow tracing. We interviewed and instrumented a handful of merchants and discovered the real pattern: generation happens where the invoice lives, which is Tally for a majority.
Step 2 — Quantify the gap. We measured in-app vs external (Tally) generation — and saw a 17:1 preference gap in the revenue-month sample.
The same logic produced a 19:1 E-Invoice gap — the native e-invoice module suffered the identical gravity problem. Two features, same root cause, same magnitude.
We didn't guess. We ran a two-week sprint with three parallel tracks:
We asked them to screen-share their last E-Way Bill generation. Every single one opened Tally, not LiveKeeping. The pattern:
We added events to the in-app E-Way Bill flow:
ewaybill_flow_start → ewaybill_form_view → ewaybill_submit → ewaybill_success2,840 starts → 1,120 form views → 340 submits → 298 successesThe triangulation was unambiguous: the workflow lives in Tally. Our feature was a detour.
Once you see one gap, you check every feature that competes with the merchant's home system. The e-invoice module showed a 19:1 gap by the same measurement — two features, same root cause, same magnitude.
E-Way Bill and E-Invoice are compliance events, not product experiences. The merchant's mental model:
Our in-app feature asked them to: finish invoice in Tally → switch to LiveKeeping → re-enter or import data → generate → go back to Tally. That's 4 context switches for a 30-second task. Gravity wins.
The pivot wasn't "improve the UI" — it was build a Tally connector. Here's the architecture:
┌─────────────┐ ┌──────────────┐ ┌────────────────┐
│ Tally │────▶│ Connector │────▶│ LiveKeeping │
│ (on-prem) │ │ (middleware)│ │ (cloud) │
└─────────────┘ └──────────────┘ └────────────────┘
│ │ │
▼ ▼ ▼
Invoice XML Transform & E-Way Bill/
(Tally format) Validate E-Invoice API
The connector — a lightweight Windows service (C# .NET 6) that merchants install alongside Tally:
// Connector service — simplified
public class TallyConnector : BackgroundService
{
private readonly HttpClient _http;
private readonly TallyXmlParser _parser;
private readonly LiveKeepingApi _api;
protected override async Task ExecuteAsync(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
var invoices = await _parser.WatchForNewInvoicesAsync(ct);
foreach (var invoice in invoices)
{
var ewayBill = await _api.GenerateEwayBillAsync(invoice);
await _parser.WriteBackToTallyAsync(invoice.Id, ewayBill);
var einvoice = await _api.GenerateEinvoiceAsync(invoice);
await _parser.WriteBackToTallyAsync(invoice.Id, einvoice);
}
await Task.Delay(TimeSpan.FromMinutes(5), ct);
}
}
}
Key design decisions:
We didn't push to everyone at once. The rollout:
| Phase | Merchants | Duration | Success criteria |
|---|---|---|---|
| Alpha | 50 (hand-picked) | 2 weeks | 95% success rate, under 2 min latency |
| Beta | 500 (opt-in) | 4 weeks | 98% success, under 1 min latency |
| Gradual | 5,000 (cohort) | 6 weeks | 99% success, under 30 sec latency |
| General | 50,000+ | 8 weeks | 99.5% success, under 15 sec latency |
The alpha feedback that changed everything:
| Metric | Before | After |
|---|---|---|
| E-way bill adoption gap | 17:1 (Tally:in-app) | Roadmap pivoted to middleware |
| E-invoice adoption gap | 19:1 (Tally:in-app) | Same pivot |
| C-Suite escalation | none | Funded middleware path |
| Rejection rate (compliance) | baseline | −58% (rejection reasons tracked) |
| Connector install rate | — | 87% of PRO+ |
| Avg generation latency | — | 12 seconds |
Adoption isn't a feature problem — it's a workflow problem. Users don't switch tools; they extend the one their day already lives in.
Read the whole story in the compliance gap case study. The same instrument-first habit runs through the data deep-dive method, and the lifecycle side of this product is in the push notification architecture.