Skip to content

Studio

Ankik Ledger: One Trusted Number First

How I built Ankik around one trusted balance — from scattered notebooks to a typed ledger — and what it taught me about MVPs.

Dhanji Bhagat

Dhanji Bhagat

Founder & Principal Engineer

6 min read
AnkikMVPfounder story

I did not start Ankik to build a product. I started it because operating a real business ran on scattered truth.

Notebooks. Excel sheets. WhatsApp threads. Invoices and PDFs in a chat. The data existed — it just never answered the simple question: where do we stand?

My first instinct was the usual one: model the whole business on day one. Every report, every role, every edge case he could name in a single sitting.

It failed quietly. A dense system no one finishes onboarding leaves the notebook open next to the app.

What finally worked was narrower: one trusted number first.

ONE TRUSTED NUMBER — FROM NOTEBOOK TO LEDGER

  1. 01

    Before

    notebooks — Excel sheets — WhatsApp threads “where do we stand?” takes afternoon

  2. 02

    One entry path

    opening balance — clean ledger entry party → quotation → invoice

  3. 03

    Trusted number

    balanceInCents: bigint status: reconciled | pending | disputed money is not a float

Owner’s language wins

Screens named after how they talk about work — not how the DB stores rows. Empty states explain what to do next, not “no rows”.

What I learned

I started by observing real business operations. The hard part wasn’t “more reports” — it was a single correct balance people trust before any dashboard.

Notebook → one entry path → one trusted balance. Reports came after trust, not before.

The idea that was too big

When books live across notebooks, spreadsheets, and chats, the fantasy is that software can mirror every report from the start — job profit, party outstanding, pending payments, quotation-to-invoice chain, all at once.

That fantasy ships a system that does many things thinly and earns no habit.

We learned what we now enforce in scope pruning: name one primary user and one primary job in one sentence. If you need three sentences, you have three products.

For Ankik, that sentence became: show the owner where he stands today, from a ledger he can trust.

One entry path before any dashboard

We cut to a single entry path: opening balance, a clean ledger entry, and a view that answers “where do we stand?” before multi-entity dashboards.

In product terms that means:

  • Parties — one place for customers and vendors
  • Quotations that become invoices without losing the thread
  • Purchases and expenses tied to the job that owns them
  • A balance people will actually keep updated because the entry path is fast

Reports for the questions that used to take half an afternoon came later. They attached to a ledger habit that already existed.

This is the same 14-day core we describe in how we ship in 28 days — a slice a stranger can finish, not a catalog of all future reports.

Money is not a float — a typed boundary

The cheapest bug in accounting software is treating money as a float and status as a string — it drifts by ₹0.01 and hides who owes what.

We drew a boundary early:

export interface AccountLedger {
  readonly id: string;
  readonly partyId: string;
  readonly balanceInCents: bigint;
  readonly status: "reconciled" | "pending" | "disputed";
}

That interface is not clever. It is a promise: precision is integer cents, state is explicit, and “we’ll fix currency later” is not an option.

It is the same lesson from our MVP pillar — typed, validated schema boundaries beat a clever engine that sells a demo.

The boundary also shaped the interface. We named screens after how the shop talks about the work, not how the database stores rows. “Who still owes us?” beat “parties table.”

Why this matters for your MVP

If you are shaping an MVP, the Ankik story is not about accounting. It is about habit.

The surface that earns habit in your product is probably not the full vision. It is the one trusted number or action that, if correct, makes the user return.

We price that distinction in our cost breakdown — $1,200 can be enough for a fair test when the scope is one trusted job on production infra. Larger surfaces are phased.

Our products are not side projects. As we wrote in products teach better than pitches, ownership is how we learn the cost of every awkward default before we bring it to your product.

I still consider Ankik beta. Multi-user signup and business setup are live, but we keep tightening the ledger habit rather than shipping every report at once.

If you want that same bar on your MVP, Name Your One Trusted Number With Us — we agree it in writing before we write a scope contract.

BOOK A CALL

Ready to turn your idea into a live product?

Schedule a 15-minute scoping call with Dhanji below. We'll discuss your scope, timeline, and tech strategy honestly.