fynxIQ

About

Built by a seller, after a return that did not add up.

fynxIQ started as a reconciliation of one month, done out of suspicion rather than curiosity. The return had already been filed.

We run two businesses on Amazon and Meesho and file our own GST. Like most sellers we used a free tool: upload the marketplace exports, get a JSON, upload it on the portal, done in three minutes. It worked, in the sense that nothing complained.

Then we added up the tables by hand. The liability tables for July carried 3,614.45 rupees of taxable value. The HSN summary in the same file carried 580.58. The entire consumer half of the month was missing from Table 12, and nothing anywhere had said so. The JSON was valid. The portal had accepted it.

The same file also counted two zero-value replacement invoices as cancellations, which understated documents issued and overstated cancellations by two apiece. Small, but it is the kind of small that becomes a question you have to answer in writing three years later.

So we wrote our own. Not a prettier upload form: a pipeline that turns every source into one canonical ledger, builds every table from that single ledger, and then spends most of its effort trying to prove the result wrong. Money is integer paise throughout, so cross-tallies land on zero exactly rather than nearly, because a tolerance is precisely where a real error hides.

Both of those failures are now tests. The actual filed return is loaded as a fixture and the validator is asserted to reject it. That is the standard we would like to be held to.

What we believe

Three positions, and what they cost us.

Position

A tool should refuse

When a figure in a return disagrees with another figure in the same return, the right answer is to stop, not to warn quietly and let it through. It costs us the three-minute promise. We think it is worth it.

Position

Say how confident you are

Adapters checked against real exports say so. Adapters written from published layouts say that instead, and keep saying it. Hiding uncertainty in a tax tool is not polish, it is a liability transferred to the customer.

Position

A model should never decide

Deterministic rules decide whether a return can be filed. A language model reads their findings back and points at what rules cannot express. A false green tick is worse than no review at all.

Found something we got wrong?

That is the most useful thing you can send us. We would rather fix it than defend it.

Get in touch