Synlogica Book a call

Under the hood — for technical reviewers

GRIP — the decision engine

Synlogica's proprietary probabilistic engine. Combines hard SOP/GxP rules with Monte Carlo simulation and Bayesian inference. Returns distributions of outcomes with confidence intervals — not single point estimates. Powers the Transport and Negotiation modules. The Quality module ships with a separate dedicated Arrhenius probabilistic engine (see the Arrhenius shelf-life whitepaper for the math).

Why probabilistic, not deterministic

Pharma operational decisions are not exact: a tender outcome is not "yes" or "no" but a probability conditioned on demand, carrier capacity, lane history and competitor pricing. A supplier's reaction to a counter-offer is not certain but a distribution over Accept / Counter / Walk. A batch's remaining shelf-life after a temperature excursion is not a single number but a confidence interval driven by Arrhenius kinetics and historical stability data.

GRIP returns the full distribution — and recommends an action against it with the operator's risk tolerance applied. This means:

The three pillars

1. Hard rules layer

Your SOPs, GxP thresholds, GDP requirements, tenant-specific business logic. Deterministic gates that must be passed before any probabilistic reasoning happens. Auditable as code — versioned, signed.

2. Probabilistic models

Monte Carlo for tender outcomes and lane risk. Bayesian inference for supplier price-elasticity updates from each negotiation round. Note: shelf-life impact (Quality module) runs on a separate dedicated Arrhenius engine — same general primitive, independent codebase + validation pack.

3. Decision policy layer

Translates distribution → recommended action under your risk tolerance. Configurable (conservative / balanced / opportunistic). Every recommendation is logged with the policy version that produced it.

Sibling: the Quality module's Arrhenius engine

The Quality module ships with a separate, dedicated probabilistic engine — not GRIP — built around Arrhenius kinetics for shelf-life impact assessment after temperature excursions. The math is the same general primitive (k(T) = A · exp(−Ea / RT) integrated over the actual sensor profile, with Monte Carlo uncertainty propagation), but the engine, the parameter library and the validation pack are independent. We split them deliberately: Quality runs on the QP's desk and is validated GAMP 5 Cat 4 against IQ/OQ scripts focused on excursion review, while GRIP runs on the operational data hub for Transport + Negotiation decisions with different acceptance criteria.

Full mathematical walkthrough lives in the Arrhenius shelf-life modelling whitepaper — activation-energy sourcing, sensor calibration error propagation, spatial inhomogeneity adjustments, when peak-temperature dominates vs cumulative exposure, and a worked 6-hour excursion at 14°C with full distribution output.

Example 1 — Bayesian price-elasticity in the Negotiation module

Each supplier has a latent price-elasticity distribution that GRIP estimates and updates after every interaction. Prior comes from category benchmarks (Fastmarkets, ICIS, LME, Argus); posterior is updated via Bayes' rule after each round of price exchange:

P(elasticity | observed)P(observed | elasticity) · P(elasticity)

Prior: log-normal(μ = category benchmark, σ = market volatility)
Likelihood: function of supplier's counter-response to your last offer
Posterior: updated distribution used to recommend next BATNA / target / ceiling

This is why the Negotiation module's "recommended counter-offer" comes with a calibrated expected acceptance probability — not a gut guess. After 3-5 rounds with a supplier, the posterior converges and recommendations become tighter.

Example 2 — Monte Carlo for tender coverage in the Transport module

Given the production plan and active tender lanes, what's the probability that you cover 95% of your transport demand over the next quarter without spot freight exposure?

GRIP runs 10,000 Monte Carlo simulations sampling from internal distributions:

External signal layer

The Monte Carlo sampler also pulls live external feeds into the input distributions, so every recommendation reflects the actual current operating environment, not a stale baseline:

Output: distribution of "coverage rate × spot exposure cost × landed cost" outcomes, conditioned on the current external state. Transport then surfaces the lanes contributing most to the tail risk (worst-case 5%) and recommends a mini-tender for them before invoices reconcile. Every recommendation carries the input-data lineage hash, so the auditor can replay the exact decision with the exact external snapshot that informed it.

Auditability — model versions in every decision

Every decision package output by Terminus includes:

When an auditor asks "why did the model recommend X two years ago?" — we replay the exact GRIP version with the exact same inputs and get the exact same output. Bit-for-bit reproducibility is the operational requirement, not a nice-to-have.

What GRIP is NOT

Want the deep technical brief?

30-minute call with Adam Karpiński — engineering specifics, model parameters, validation approach for your category.

Book a call →