Odoo vs Dynamics 365, from a studio that implements both
No sales deck: where each platform wins, the costs nobody puts in proposals, and when the answer is neither.
Ravindu Withana
9 min read
Odoo · Dynamics 365 · ERP

Written when we learn something worth passing on. No drip sequences, no content calendar — if there is nothing interesting, we do not write.
Latest · 20 October 2026 · 8 min read
Retrieval grounds answers in your documents; fine-tuning changes behaviour. The sequence that works, and what each one costs.
No sales deck: where each platform wins, the costs nobody puts in proposals, and when the answer is neither.
Ravindu Withana
9 min read
Odoo · Dynamics 365 · ERP

Fields nobody owns, integrations deferred to phase two, activity metrics as targets — all preventable, none in the sales deck.
Ravindu Withana
7 min read
Salesforce · CRM · Implementation

Data before modules, rehearsed migrations, and training the users instead of the approvers.
Ravindu Withana
9 min read
Odoo · ERP · Implementation

Why we have spent seven years talking clients out of full rewrites, and what we do instead.
Ravindu Withana
7 min read
Engineering · Architecture

Seven checks — labelled sets, decline thresholds, shadow mode — that separate a measured system from a promising demo.
Ravindu Withana
8 min read
AI · RAG · Evaluation

Lab scores are useful and they are not the same thing as fast. How we baseline and fix real-user performance.
Bhashana Bogoda
6 min read
Performance · Front-end

Evaluation harnesses, confidence thresholds and shadow mode — how we keep retrieval systems from failing quietly.
Ravindu Withana
8 min read
AI · Evaluation

Most design systems fail for organisational reasons. What we learned getting one to 94% adoption.
Kalindu Gayanjith
6 min read
Design systems · Process

The commitments we make on AI work, stated as practices you can hold us to rather than as claims about capability.
01
The evaluation harness ships before the feature does. If you cannot measure whether an answer got better, you have changed the system, not improved it.
02
The system runs against live traffic silently for at least a week before it answers a single real question.
03
Confidence thresholds that escalate to a human instead of guessing. A refusal costs seconds; a confident wrong answer costs a customer.
04
Every answer stores the retrieved documents, their scores, the prompt and the model version.
05
Cost per resolved task is tracked from week one, alongside accuracy, in the same dashboard.
06
Most retrieval failures are data problems, not prompt problems. We fix chunking and metadata before reaching for prompt engineering.
Embed, retrieve top-k, generate. The honest starting point.
Fails quietly on the questions you care most about. It has no way to say "I do not know", so it will confabulate a confident answer from three loosely related passages.
Semantic and lexical search fused with reciprocal rank fusion.
Roughly doubles the retrieval budget and adds a fusion parameter that needs tuning against a real query set.
A model plans queries, calls tools, and iterates until it can answer or gives up.
Cost and latency both multiply per hop, and it is much harder to evaluate. We cap it at a fixed number of iterations for this reason.
Retrieval anchored to a knowledge graph of real entities and their relations.
Requires reliable entity data to start with, and graph upkeep becomes an ongoing cost rather than a one-off.
The answer is retrieved, checked against its sources, and revised if the check fails.
Doubles inference cost for a measurable accuracy gain, but the checker needs its own evaluation or you are just adding confidence.
Our shortlist, with the honest caveat each time. We are not model-agnostic in the unhelpful sense — these are the ones we have measured against client workloads.
Strongest general tool-calling and instruction following, plus the most reliable structured output we have measured.
Long-context work where most of the document actually matters, and careful, low-hallucination analysis.
Very large context windows, multimodal input, and competitive cost on high-volume tasks.
Data that cannot leave your infrastructure, or predictable high-volume cost after the hardware is bought.
Strong European-hosted options and efficient small models for classification workloads.
Cost-sensitive workloads where a hosted open-weight model clears your quality bar.
Every engagement we publish numbers for. If a metric did not move, the case study says so and explains why — which is rarer than it should be.
Product and platform work, reported against a baseline we captured in week one.
All case studies →Retrieval and extraction work, each gated behind an accuracy number before launch.
ERP and automation implementations, reported the same way.
No drip sequences. If there is nothing interesting, we do not write.