Past the accounting tool.
FinTech software development.
CQUELLE built a transaction-categorization platform for a US financial advisory firm on ASP.NET Core, React, PostgreSQL and a finance-pretrained BERT model, where every classification, remap and split is traceable to a person and a timestamp. Most financial software development should start with a packaged tool; this one stopped where the firm's own taxonomy began.
Configure first, and build where the firm's rules begin
A packaged accounting or categorization tool is the right first answer for most finance teams: it ships with its own chart of accounts and vendor rules, and someone else maintains it. Fintech software development starts to pay for itself only where your firm's taxonomy, its audit duty or its separation between clients is the product, and the tool's defaults have become the thing your analysts work around.
That point is usually visible before anyone writes code. If analysts re-key transactions from the tool into their own framework by hand, the framework is the asset and the tool is a data source. The advisory firm behind this page was in exactly that position, and errors from the manual step were flowing into client deliverables.
What a packaged tool handles, and what it could not
Five capabilities a packaged finance tool does well, set against what one advisory firm asked us to build because the packaged version could not carry its rules. Every row points at the same delivered platform.
| What a packaged tool handles | What a client asked us to build instead | Where we built it |
|---|---|---|
| What a packaged tool handlesCategorizing transactions against the tool's own chart of accounts. | What a client asked us to build insteadThe firm's taxonomy is the source of truth, so the classifier proposes a category from inside that framework or abstains and routes the line to a reviewer. A system that suggests a category outside the framework is one the firm cannot use. | Where we built itThe advisory-firm platform |
| What a packaged tool handlesMapping a vendor name to a category once and reusing it. | What a client asked us to build insteadChart-of-account labels are free text: two clients in the same industry name the same expense five ways, and one client's labels drift across years. The per-tenant classifier learns that client's wording from the reviewer's own remaps. | Where we built itThe advisory-firm platform |
| What a packaged tool handlesSplitting a transaction across categories. | What a client asked us to build insteadSplits carry audit-preserving lineage and must sum to the original to the cent before they can be saved. | Where we built itThe advisory-firm platform |
| What a packaged tool handlesA shared model that improves from every customer's corrections, with no training work for you. | What a client asked us to build insteadEach client is a tenant with its own classifier, fine-tuned on a finance-pretrained BERT model from that reviewer's confirmations and remaps, retrained nightly with the previous version kept so a regression is visible the next morning. | Where we built itThe advisory-firm platform |
| What a packaged tool handlesAn activity log of who changed what. | What a client asked us to build insteadEvery classification, remap and split is attributable to a person and a timestamp, and the ingest log records the source and the operator who authorized the connection. | Where we built itThe advisory-firm platform |
The platform behind the table
Transaction categorization with a human in the loop
2 developers, 6 months
The constraint came first: the model may propose a category from inside the firm's taxonomy, or abstain, and never invent one. The firm's analysts had been moving every client's QuickBooks transactions into that framework by hand, in spreadsheets, so the taxonomy was encoded as the rule the classifier has to satisfy.
Two gates sit before anything is accepted without review. One is the model's confidence. The other is a set of explicit rules per tenant: period-end balance checks, split-sum checks, prohibited mappings and vendor allow-lists.
The React review queue was built with the senior analysts in the room, around the way they already worked in spreadsheets: confirm, remap, split or defer, from the keyboard. Underneath is an ASP.NET Core API over a multi-tenant PostgreSQL schema, audit-trailed end to end, with a Python service on PyTorch beside it. Only ambiguous transactions reach a person.
Does money handling from another sector count?
Adjacent work
The money side of a veterinary M&A platform
This is money handling from an adjacent sector, not a payments licence: the ledger of a marketplace and practice platform for a US veterinary M&A company.
Money there is an append-only transaction ledger with more than sixty transaction types. A charge stays pending until the Stripe webhook confirms it, and failures revert automatically.
Roughly twenty distinct payment scenarios reconcile through one webhook path.
When fintech software development is the wrong spend
- A packaged tool already matches your chart of accounts.
- If nobody re-keys anything by hand, configure the tool. Custom categorization earns its cost only where your taxonomy is the asset.
- You need a licensed payments or banking core.
- Nothing on this page is a payment institution's core or a trading engine. The money handling here is reconciliation and ledgers inside a product, and a licensed core deserves a vendor that can show one running.
- You want the model to book without a reviewer.
- The platform here was built so a person confirms what the model is unsure of. A system that books with nobody answering for it is a different design, and not one we would put our name to.
- You want a fixed price before anyone has seen the data.
- How your clients' free-text labels vary decides how much of the work is a model and how much is rules. Real transactions come first; the scope follows.
Questions a finance team asks first
What does fintech software development at CQUELLE cover?
Which stack did the categorization platform run on?
How do you keep one client's data and model away from another's?
Can the model categorize transactions without a person checking?
Do you build payment processing?
Bring the spreadsheet your analysts work around
Start with the rule the packaged tool cannot hold, or the export your analysts re-key by hand. Thirty minutes with the founder, who still writes code, is enough to place it on one side of the line or the other, and a good share of these calls end with configure the tool and spend the money elsewhere.
Show us the rule it cannot hold
Or describe it in the form, and expect a reply inside 48 hours.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.