Building a Production LLM Platform for Live Shopping and Trust & Safety

whatnot · E-commerce · 2026 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.4 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Enterprise LLM platform for live-shopping operations, trust and safety, support, and seller workflows

Whatnot needed an internal LLM platform that let product, operations, policy, and engineering teams ship trustworthy production LLM workflows quickly, despite non-deterministic outputs, weak ground truth, tool-access complexity, provider reliability concerns, and the need for domain experts to improve prompts and evaluations without waiting on engineering for every change.

Constraints:

Architecture

Whatnot organized its LLM Platform around velocity, trust, and reliability. The platform provides a UI for self-serve prompt experimentation, post-exposure logging that measures only cases where prompt variants differ, a Python-defined tool registry that exposes reusable functions through a shared catalog, LLM-as-judge calibration workflows owned by domain experts, and reliability primitives such as multi-provider routing, fallback behavior, observability, caching, rate limiting, and guardrails. Existing data/platform foundations and a consolidated codebase made it easier to expose company capabilities through the platform.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  platform-ui[Platform UI] --> prompt-experimentation-framework[Prompt experimentation framework]
  platform-ui --> tool-registry[Tool registry]
  platform-ui --> llm-judge-calibration-workflow[LLM judge calibration workflow]
  prompt-experimentation-framework --> core-llm-service[Core LLM service]
  tool-registry --> core-llm-service
  core-llm-service --> shared-middleware[Shared middleware]
  shared-middleware --> provider-routing[Provider routing]
  shared-middleware --> observability-layer[Observability layer]
  tool-registry --> company-tooling-ecosystem[Company tooling ecosystem]
  prompt-experimentation-framework --> feedback-and-analytics-data[Feedback and analytics data]
  llm-judge-calibration-workflow --> feedback-and-analytics-data
  feedback-and-analytics-data --> observability-layer
  core-llm-service --> production-workflows[Production workflows]
  production-workflows --> observability-layer
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Platform UI Self-serve surface for prompt experimentation, tool attachment, evaluation workflows, and team iteration. Prompt experimentation framework, Tool registry, LLM judge calibration workflow, Core LLM service
Prompt experimentation framework Experimentation system that lets teams test prompt variants under product-flow guardrails and post-exposure logging. Platform UI, Core LLM service, Feedback and analytics data
Tool registry Shared catalog where engineers register Python tools once and prompt authors browse schemas and attach tools safely. Platform UI, Core LLM service, Company tooling ecosystem
Core LLM service Central LLM execution layer used by production and operational workflows. Platform UI, Prompt experimentation framework, Tool registry, Provider routing, Shared middleware
Shared middleware Common platform layer for guardrails, caching, rate limiting, observability hooks, and other reliability primitives. Core LLM service, Provider routing, Observability layer
Provider routing Multi-provider routing and fallback layer for LLM availability and predictable performance. Core LLM service, Shared middleware
LLM judge calibration workflow Domain-expert workflow for annotating outputs, defining rubrics, calibrating judges, and reusing judges in backtesting or online evaluation. Platform UI, Feedback and analytics data, Core LLM service
Feedback and analytics data Production outputs, experiment outcomes, labels, edge cases, and data-mined examples used to measure and improve workflows. Prompt experimentation framework, LLM judge calibration workflow, Observability layer
Observability layer Monitoring layer for reliability, output quality, regressions, provider issues, and product drift. Shared middleware, Feedback and analytics data
Company tooling ecosystem Existing order lookup, shipment details, refund eligibility, ticket updates, internal tooling, logging, analytics, and product systems exposed through tools. Tool registry
Production workflows Trust-review, support-agent, seller-policy, and operational workflows that run on the platform. Core LLM service, Tool registry, Observability layer

Data flow

A team builds or improves an LLM workflow in the platform UI by editing prompts, selecting reusable tools from the tool catalog, and running guarded experiments through the product experimentation framework. Outputs and production data feed trust workflows where deterministic checks and calibrated LLM judges evaluate quality. Production use routes through the core LLM service, shared middleware, provider routing, observability, caching, rate limits, and guardrails so teams inherit platform reliability rather than rebuilding it.

4 supporting quotes
“If someone has a better idea for how the system should behave, they should be able to test it directly in the platform instead of writing code”article, stated
“engineers should be able to define a tool once in Python, register it, and have it automatically show up in a shared catalog for prompt authors.”article, stated
“LLM judges help because they can score open-ended responses against a rubric in a way that is much closer to human review.”article, stated
“adding multi-provider support, moving toward fallback behavior by default, investing in observability, and layering in platform primitives like caching, rate limiting, and guardrails.”article, stated

Why this architecture

Whatnot built a platform rather than feature-specific LLM plumbing because most production value came from iteration loops, tool access, evaluation, and reliability around the model. The platform makes domain experts first-class contributors, gives prompt authors reusable tools without custom wiring, uses calibrated judges to measure open-ended quality, and centralizes reliability so teams inherit fallbacks, observability, caching, rate limits, and guardrails.

4 supporting quotes
“Calling the model is the easy part. The hard part is everything around it: there is less stable ground truth, inputs are harder to constrain, outputs are non-deterministic, and the system is much easier for users to push in unintended directions.”article, stated
“a meaningful share of the improvement does not come from rebuilding the model. It comes from changing the prompt, refining the examples, attaching the right tools”article, stated
“the people best positioned to make those changes are PMs, Ops leads, Policy Experts, and other subject matter experts”article, stated
“The goal is simple: when a team ships on top of the platform, they should inherit a more reliable system by default, rather than having to assemble one from scratch.”article, stated

Models used: LLM provider models · LLM-as-a-judge evaluators · multi-provider LLMs

Scale

Alternatives considered (roads not taken)

Treat prompt experiments like ordinary A/B exposures

Rejected because: Most LLM prompt variants produce identical outputs, diluting signal when standard A/B frameworks count every request.

“A standard A/B framework still counts all of those cases as exposures, even when the user experience did not actually change.”article, stated
“That dilutes the signal and makes it harder to detect whether a prompt update really helped. So we changed the way exposure is logged: we only count an exposure when the two prompt variants produce different outputs.”article, stated

Attach tools as one-off code to individual LLM features

Rejected because: Reusable business functions needed to be discoverable, schema-inspectable, and safe to test across prompts and teams.

“is why we built around a tool registry instead of treating tools as one-off code attached to individual features. Internally, the goal was straightforward: engineers should be able to define a tool once in Python, register it, and have it automatically show up in a shared catalog for prompt”article, stated
“From there, PMs and engineers can browse available tools, inspect their schemas, understand what they do, and attach them to prompts without having to wire up custom agent loops or read through implementation details or write access control.”article, stated

Rely only on deterministic checks for quality

Rejected because: Mechanical checks show whether required fields/tool calls exist, not whether the answer did the right thing for the user.

“Deterministic checks (valid JSON, correct tool calls, required fields) are table stakes in many workflows, but they only tell you whether the system satisfied a mechanical requirement, not whether it did the right thing for the user.”article, stated
“they only tell you whether the system satisfied a mechanical requirement, not whether it did the right thing for the user.”article, stated

Let each team rebuild reliability primitives

Rejected because: Provider failures, availability, performance, caching, rate limits, observability, and guardrails are platform concerns.

“and confidence that provider issues will not immediately take their product down. That is why we have treated reliability as a platform concern, not something each team should rebuild for itself. Concretely, that has meant adding multi-provider support, moving toward fallback behavior by default,”article, stated
“The goal is simple: when a team ships on top of the platform, they should inherit a more reliable system by default, rather than having to assemble one from scratch.”article, stated

Copy the architecture without similar platform foundations

Rejected because: The approach depends on prior investments in data stack, logging, analytics, tooling, and consolidated business logic.

“big reason we were able to build the platform quickly, and with a small team, is that Whatnot had already spent years investing in the foundations underneath it. This was the result of earlier platform work across the company: [building the modern data”article, stated
“Teams operating across many languages, many microservices, and many ownership boundaries would have a much harder time following the same path.”article, stated

Patterns

prompt-versioning (experimentation)

The platform lets non-engineers test prompt variants through guarded product experimentation flows and measures only output-changing exposures.

“they should be able to test it directly in the platform instead of writing code, updating an SDK, or waiting on a deployment.”article, stated
“we only count an exposure when the two prompt variants produce different outputs.”article, stated

tool-use-orchestration (tool-platform)

Engineers register reusable Python tools once, and prompt authors attach them to prompts through a discoverable shared catalog.

“engineers should be able to define a tool once in Python, register it, and have it automatically show up in a shared catalog for prompt authors.”article, stated
“look up an order, fetch shipment details, check refund eligibility, or update a ticket.”article, stated

llm-as-judge (evaluation)

Domain experts annotate examples, define rubrics, calibrate LLM judges, and reuse them in backtesting or online evaluation.

“This is why we invested in LLM-as-a-judge and calibration workflows that let the domain expert teach the evaluator directly.”article, stated
“Evaluation rubrics are owned by product teams closest to the use case who can clearly define what “good” means.”article, stated

fallback-degradation (reliability)

The platform adds multi-provider support and fallback behavior so provider issues do not immediately take production workflows down.

“adding multi-provider support, moving toward fallback behavior by default”article, stated
“provider issues will not immediately take their product down.”article, stated

observability-tracing (platform-reliability)

Observability is a shared reliability primitive that lets teams monitor performance, agreement, degradation, and product drift over time.

“investing in observability, and layering in platform primitives like caching, rate limiting, and guardrails.”article, stated
“monitor agreement over time, and catch degradation before it turns into product drift.”article, stated

safety-policy-enforcement (trust-and-safety)

Guardrails and evaluation support real operational workflows such as trust-review harassment reports, support resolution, seller policy answers, and ticket updates.

“helping a trust reviewer process a harassment report in minutes instead of hours”article, stated
“layering in platform primitives like caching, rate limiting, and guardrails.”article, stated

Tradeoffs

Build for domain-expert participation

Chose self-serve prompt experiments, tool attachment, and judge calibration for PMs, Ops leads, and policy experts over engineering-only LLM iteration workflows.

Rationale: The people closest to the user experience often know how the answer should behave and can critique outputs better than generic platform engineers.

“the people best positioned to make those changes are PMs, Ops leads, Policy Experts, and other subject matter experts”article, stated
“it should work for everyone, not just a single group of people.”article, stated

Use post-exposure logging for LLM experiments

Chose count only output-changing prompt-variant exposures over counting every request assigned to an A/B variant.

Rationale: Experiment power improves when measurement focuses on requests where the user experience actually changed.

“only count an exposure when the two prompt variants produce different outputs.”article, stated
“focus measurement on the cases where the experiment could actually matter”article, stated

Centralize reusable tools

Chose shared Python tool registry and catalog over custom agent loops and one-off feature code.

Rationale: Reusable tools reduce wiring, access-control duplication, and implementation-detail exposure for prompt authors.

“attach them to prompts without having to wire up custom agent loops or read through implementation details or write access control.”article, stated
“The tool catalog makes reusable functions discoverable and self-serve”article, stated

Use calibrated LLM judges for open-ended quality

Chose domain-expert-trained LLM judges over brittle rules, similarity metrics, and manual spot checking alone.

Rationale: Open-ended LLM outputs need rubrics closer to human review, and manual spot checks do not scale.

“They replace a lot of the brittle rules, similarity metrics, and manual spot checking that do not scale well”article, stated
“can score open-ended responses against a rubric in a way that is much closer to human review.”article, stated

Make reliability a shared platform concern

Chose multi-provider support, fallbacks, observability, caching, rate limiting, and guardrails in the platform over each product team assembling reliability separately.

Rationale: Production workflows should inherit availability and operational safety by default.

“Reliability is what turns an LLM demo into infrastructure.”article, stated
“not something each team should rebuild for itself.”article, stated

Gotchas (what bit them)

Calling the model was the smallest part of production LLM work.

Root cause: LLM products need iteration, trust, reliability, constraints, feedback loops, and operational infrastructure around non-deterministic outputs.

Resolution: Whatnot built a platform with velocity, trust, and reliability pillars instead of treating model API calls as the product.

“Making the API call is the small box, maybe even smaller than the one in that original diagram.”article, stated
“The hard part is giving teams the ability to iterate fast, trust that the system is working, and know that it is getting better.”article, stated

Self-serve experimentation can become unsafe if it bypasses product guardrails.

Root cause: Prompt changes are easy for non-engineers to make, but production systems still need rigor.

Resolution: Self-serve prompt experiments run through the same experimentation framework and guardrails as app product flows.

“making experimentation self-serve does not mean making it loose.”article, stated
“These experiments still run through the same experimentation framework and guardrails used in the our app product flow”article, stated

Standard A/B exposure counting diluted prompt experiments.

Root cause: Two prompt variants often produce identical outputs, so many counted exposures do not represent a changed user experience.

Resolution: Whatnot logs exposure only when variants produce different outputs.

“two prompt variants return the same output most of the time.”article, stated
“we only count an exposure when the two prompt variants produce different outputs.”article, stated

Fluent examples can create false confidence.

Root cause: LLMs can produce convincing answers even when the underlying behavior is weak, and deterministic checks miss human-quality failures.

Resolution: Whatnot uses inspection, measurement, repeated review, calibrated LLM judges, and evolving human-review examples.

“LLMs are especially good at creating false confidence: a few strong examples can make a system look much better than it really is”article, stated
“using data mining to automatically surface weird, rare, or high-value examples for human review”article, stated

Fragmented architectures make LLM platform integration harder.

Root cause: Many languages, microservices, and ownership boundaries complicate exposing business logic as reusable tools.

Resolution: Whatnot benefited from consolidated business logic and prior investments in platform foundations.

“so much of Whatnot’s business logic is consolidated in a single codebase”article, stated
“Teams operating across many languages, many microservices, and many ownership boundaries would have a much harder time following the same path.”article, stated

Evaluation

Whatnot evaluates LLM workflows through guarded experiments, post-exposure logging, deterministic checks, calibrated LLM-as-judge rubrics, domain-expert annotations, backtesting, online evaluation, agreement monitoring, product-drift detection, and data-mined human-review samples.

Metrics: output-changing prompt exposure rate · deterministic validity checks such as JSON, required fields, and tool calls · LLM judge rubric scores · judge agreement over time · production degradation and product drift · rare/high-value examples surfaced for human review · prompt iteration speed

4 supporting quotes
“supporting both deterministic and non-deterministic evaluation.”article, stated
“Evaluation rubrics are owned by product teams closest to the use case who can clearly define what “good” means.”article, stated
“teams can attach it to a real production use case, monitor agreement over time, and catch degradation before it turns into product drift.”article, stated
“using data mining to automatically surface weird, rare, or high-value examples for human review”article, stated

Outcomes

The source emphasizes platform scale qualitatively rather than volume metrics: non-engineer prompt authors, reusable company tools, production workflows, 10x+ faster prompt iteration, minutes-vs-hours trust review, and inherited reliability for teams shipping on the platform.

4 supporting quotes
“allowed us to build the LLM Platform at Whatnot.”article, stated
“makes prompt iteration meaningfully faster (10x+ faster).”article, stated
“The LLM Platform exists to make those kinds of experiences reliable, improvable, and trustworthy at scale.”article, stated
“Everything around it is what makes it work for people.”article, stated