MarketWatch Intel
← All resources

Ravi Narayanan · 2026-01-22 · 7 min read

What "deterministic first" actually means

Engineering note. We get asked once a month by founders whether MarketWatch is "AI-powered." The honest answer is: about one quarter of it, and the boring three quarters do most of the work.

When founders ask whether our product is "AI-powered" they tend to mean: does a language model decide what to flag. The answer is no, and we are quite proud of that.

Every week the Compass pipeline runs through three layers. The first is data collection — scraping, sitemap diffs, ad-library scrapes, social-listening pulls, news-feed polling. That is mechanical engineering. Nothing intelligent happens here; we just have to have done it reliably for a year before anyone trusts the next two layers.

The second is the rules engine. It is seven rules of TypeScript. They are: a price cut on a tracked SKU above a configurable percentage; a new product launch detected via sitemap diff; a stockout signal on a hero SKU; a social mentions volume spike above a configurable multiple of rolling average; a news mention above a per-source severity threshold; a paid-ad-creative spike above a configurable multiple of rolling average; and a review-sentiment shift above a configurable absolute drop. If a competitor's data crosses any of those thresholds, we have a finding. If it does not, we don't. There is no language model in this layer at all. We can show the customer the rules. They can edit them. They can audit every alert against the underlying signal because the rule that fired the alert is recorded in the audit log.

The third layer is the narrative. This is where the language model lives. Gemini 2.0 Flash takes the deterministic findings and writes the brief — a headline, a summary, a finding card per anomaly with a recommendation, a week-ahead paragraph. The model never invents a finding. It never asks for an alert that the rules engine did not already trigger. Its job is purely linguistic: turn the findings into editorial that a human will read and act on. We then run a voice-fidelity lint over the output before it is ever delivered, and re-prompt or fall back to deterministic English if the lint fails.

The reason we work this way is simple. We are accountable for what we send. If a customer challenges a finding, we have to be able to explain it without saying "the model thought so." The deterministic-first architecture means we can — every finding has a rule ID, a threshold, and a citation. The language model layer is fast, expressive, and fundamentally optional. The customers who would refuse to use a language-model-driven product accept ours, because the language model layer is the icing, not the cake.

It is, frankly, a less fashionable architecture than the alternative. We're going to stay this way.

Tags: #editorial · #engineering