Skip to main content

15 posts tagged with "digital-commerce"

View All Tags

The Most Dangerous Code Has a Save Button

· 11 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 20

On a Thursday, someone on the finance-ops team opened the admin panel to update a tax table. A new state rate had taken effect: 7.25%. They found the field, typed 7.25, clicked Save, and moved on to the next row. The system stored tax rates as decimals, so 0.0725 meant seven and a quarter percent. The field took 7.25 at face value. For the next two days, every order shipping to that state was taxed at seven hundred twenty-five percent. The first customer to complain had been charged more tax than the price of the goods.

Nobody deployed anything. No pull request was opened. No test ran. No reviewer looked at it. The most expensive behavior change the business made that quarter went out with less scrutiny than a one-line typo fix in the codebase would have received.

This is not a story about a careless employee. It is a story about a system that decided, somewhere along the way, that this particular kind of behavior change did not count as code, and therefore did not deserve any of the protection we give to code.

Name the Dragon

· 14 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 19

There is a system with four thousand tests; all green. They have been green for months. CI is fast, the team trusts it, deploys go out daily, and nobody is embarrassed to say the platform is well covered. Yet, it just shipped a refund larger than the original charge.

That sounds like a testing failure, and in the shallow sense it is. Somewhere there should have been a test that caught it. Somewhere there should have been a case, an assertion, a fixture, a fake payment, a mocked refund, a regression test with the right numbers in the right columns. But that is not the interesting failure. The interesting failure is that the rule was never a thing the system could point at.

A refund cannot exceed the settled charge. Simple sentence. Obvious sentence. The kind of sentence everyone in the room agrees with as soon as the incident review begins. And yet, before the incident, where did that sentence live? A little of it lived in the refund service. A little of it lived in an admin form. A little of it lived in a database constraint. A little of it lived in the payment gateway integration. A little of it lived in the memory of the person who last fixed the related bug. To test the rule, you had to drive the whole platform from the outside and hope the dragon wandered into view.

What Time Is It?

· 12 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 18

A customer adds a jacket to their cart on Friday night. It is on promotion: 30% off, a weekend sale. They get distracted, come back Monday morning, and check out. What do they pay?

There is a correct answer, a defensible answer, and the answer the code actually gives. In a surprising number of systems those are three different numbers, and the last one was chosen by nobody at all. The code's answer turns on one small decision made deep inside a pricing function: when that function needed to know the time, where did it get it?

A Case for Capabilities

· 8 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 15

Operators preparing to support agentic commerce will eventually have to talk about protocols. That may mean MCP, UCP, a marketplace-specific interface, a procurement network, a partner API, or something that has not yet settled into a standard. If they start with a protocol, the first questions tend to be mechanical. Which tools do we expose? Which existing endpoints map to those tools? What schema does this protocol expect? How do we authenticate the caller? How do we serialize the response? Those are all necessary questions, but they are boundary questions. They deal with the outside edge of the system. The deeper question is whether there is a coherent business capability behind that edge.

The Aggregate Cost of Composition

· 10 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 14

Most engineers don't wake up at 3am thinking about chargebacks, but most commerce operators eventually do. A chargeback has a way of turning a small, messy edge case into an expensive, cross-functional incident. Support gets involved. Finance gets involved. Someone pulls logs. Someone else pulls warehouse records. Payment provider screenshots are taken. A bank is now part of the conversation. Whatever the customer's original question was, it has been upgraded from "help me understand" to "prove it." No matter who wins that proof point, the merchant is stuck with the cost of proof.

That cost is not just the refunded transaction. Often, the expensive part is the work required to reconstruct the story. The customer says they were charged twice. The payment provider shows one authorization, one capture, one retry, and maybe a reversal or refund depending on which screen you are looking at. The order management system says the order was accepted. The warehouse says it shipped. The carrier says it was delivered. The promotion engine says the discount was valid at checkout. The customer's email confirmation preserves a total that was true at the moment it was sent. The ledger preserves a different total after tax, shipping, substitution, split shipment, cancellation, or refund logic had its say. Everyone may be telling the truth, locally, and still no one can answer the customer's question cleanly.

It Was Never about the Money

· 9 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 13

The total comes back as 59.666666666667, and somewhere downstream we must ensure that we don't end up with 59.67ontheinvoiceand59.67 on the invoice and 59.66 in the ledger.

The instinct is to reach for more precision. But precision was the easy part. A drifting penny is a symptom. The disease is poor modeling. "Money is not a number. Money is a number plus everything we forget to carry with it."

When Good Enough is Not

· 12 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Functional Programming Isn't Just for Academics — Part 12

A purchasing manager needs 200 units of a replacement part delivered to a job site by Friday. The budget is already approved. The supplier must meet a certification requirement. Substitutions are acceptable, but only if they preserve the tolerance class and do not change the installation procedure.

A person can work through that situation even when the systems involved are messy. They can search a supplier's site, read a product page, notice a message like "usually ships in one to two weeks," and decide whether that is worth a phone call. They can ask whether the warehouse really has enough stock. They can ask whether a substitute part is equivalent. They can judge whether the shipping estimate is conservative or risky. Human beings are very good at operating in the gaps between what a system says and what the business actually means.

Capability Surfaces: A Mediating Architecture for Agent-Native Commerce

· 21 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Abstract

The emergence of autonomous software agents as primary actors in commercial transactions creates a structural integration problem: agents need to interact with thousands of independent merchants, each exposing heterogeneous APIs with incompatible schemas, inconsistent semantics, and varying reliability guarantees. Existing integration patterns — direct REST consumption, EDI, or bespoke connector libraries — scale as O(A × M) where A is the number of agents and M is the number of merchants. We identify this as the agent-merchant integration problem and propose capability surfaces as a mediating architectural pattern that reduces integration complexity to O(A + M).

A capability surface is a semantic contract layer that sits between a merchant's internal microservices and external agents. It exposes deterministic, versioned, discoverable operations with explicit input/output schemas and error semantics, enabling any compliant agent to transact with any compliant merchant without bespoke integration. We formalize the pattern, specify its required properties, and ground the analysis in a concrete three-party scenario (manufacturer, procurement agent, logistics provider) interacting across an open market without pre-built integrations.

We examine the Model Context Protocol (MCP) as a production-validated mechanism for expressing capability surfaces, and the Universal Commerce Protocol (UCP) as an early domain-specific vocabulary layer. We discuss open problems in contract governance, registry trust, and agent identity that the architecture does not yet resolve.

The Economics of Agent-Mediated Commerce: Competitive Restructuring in B2B Markets

· 17 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Abstract

Agent-mediated commerce — in which software agents autonomously discover suppliers, evaluate constraints, and execute transactions without human involvement at each step — is restructuring competitive dynamics in B2B markets. This paper analyzes the economic implications of this transition, identifying which traditional competitive advantages are durable in agent-evaluated markets and which erode, how the cost structure of supplier discovery changes, and what this means for the strategic positioning of manufacturers, distributors, and platform providers.

We argue that the transition to agent-mediated purchasing functions analogously to a market design change: it replaces attention-based competition (UX, SEO, merchandising) with operations-based competition (data completeness, interface reliability, fulfillment accuracy). This shift disproportionately favors organizations that have invested in operational excellence over those that have invested in human-attention capture. We further argue that capability surfaces — semantic contract layers enabling agent-to-merchant interaction without bespoke integrations — function as market infrastructure that reduces supplier discovery costs and changes the economics of direct manufacturer-to-buyer engagement.

A Protocol Stack for Agent-Native Commerce: MCP, Domain Profiles, and Open Interoperability

· 19 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Abstract

The growth of autonomous software agents as commercial actors — buyers that discover suppliers, evaluate constraints, and execute transactions without human involvement — creates a practical interoperability problem: how should agents and merchants communicate when they have no prior relationship and no bespoke integration? This article presents a protocol stack perspective on the emerging answer: a layered architecture combining the Model Context Protocol (MCP) as a general capability mechanism, commerce-domain profiles as shared vocabularies, and capability registries as discovery infrastructure. We examine the stack's current state, its gaps, and the open engineering problems that the community must resolve to support agentic-commerce at production scale.

The Invisible Buyer Has Arrived

· 12 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

Something happened recently in B2B procurement that most sellers don't know about yet.

A construction company's software placed an order for 200 precision industrial components — ISO certified, shipped to Denver, all-in for $38,000 — without a human making a single purchasing decision after the initial instruction was given. The software found the supplier, evaluated three alternatives, confirmed availability and certification, arranged freight, and submitted the order. The construction firm's project manager received a structured confirmation email with the purchase order, tracking number, and certification documents.

The supplier that won the business? They didn't win it with a great website. They didn't win it with SEO or a smooth checkout flow or a compelling product description. They won it because their product data was complete, their availability signal was machine-readable, and their API didn't return ambiguous strings when the software asked a yes-or-no question.

The supplier that lost? They had equivalent products. They lost because their availability field returned "usually ships in 1–2 weeks" instead of a structured value. The software couldn't parse that into a procurement decision and moved on.

This is the shift. And it's not coming — it's here.

Unpacking Agentic Commerce

· 3 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

For three decades, commerce has centered on human buyers navigating browsers, apps, and IoT devices. Humans absorb ambiguity — tolerating unclear checkout processes, mysterious promotions, shifting shipping estimates, and surprise totals. If the brand is strong enough, they might still purchase despite friction.

Agentic commerce marks a fundamental shift: acknowledging that buyers aren't always human. Automated agents operate differently from people. They lack emotional attachment to brands and won't retry after failures. Instead, agents follow intent within constraints and systematically avoid unreliable paths.

An Introduction to Reactive Commerce

· 3 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

If your commerce platform drives critical revenue and the services it provides are difficult to predict in nature or scale — or if optimizing user experience depends on near-real-time responses to changing signals — reactive commerce warrants attention. Reactive commerce orchestrates digital discovery, selling, purchasing, and merchandising while adhering to the Reactive Manifesto's principles.

Headless Commerce: Advice for Goal Hangers

· 5 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

So, you are considering headless commerce and have made your way through the talks, videos, and articles but still have doubts? The very first thing you need to do is understand who you are and what you are trying to do, so you can properly dissect the arguments for or against a headless approach. The headless commerce value proposition is blended across numerous stakeholders: providers, consumers, and end users. This means that there may be perfectly valid arguments for going one way or the other that may not apply to your decision. Knowing what you are looking for will help you discard the noise and concentrate on what matters for you and your organization.

Agility and the Headless Commerce Debate

· 7 min read
Tony Moores
Founder & Principal Consultant, TJM Solutions

So, you are considering headless commerce and have made your way through the talks, videos, and articles but still have not decided what to do? The arguments for transitioning to headless commerce are numerous and touch several domains. It is useful to categorize the value proposition by the segments they impact:

  • Providers — Those whose business is the building, delivery, and/or maintenance of digital commerce platforms.
  • Consumers — Those who subscribe to commerce platforms and/or services as a vehicle to grow their core business.
  • Users — Those who are immersed in a digital commerce experience.

The return on investment in headless commerce is different for each group. As agility is perhaps the most often cited benefit of headless commerce, let's use that as an example.