OpenAI — Integrity Measurement — Product Sense & Metrics
Role context: Data Scientist, Integrity Measurement (Applied Foundations) · Est. study time: 40 min · 5 practice questions
What this role actually is
Most "product sense" prep imagines a consumer product with a signup funnel and a revenue number. This role is different, and the difference is the whole point. There is no funnel to optimize. The "product" you own is a measurement system: a pipeline that turns a safety policy into a trustworthy number for how much of a rare, severe harm is happening on OpenAI's platforms, and how well the response to it is working.
OpenAI frames safety as core to its mission and leans hard on one principle in particular: rigorous measurement. In its own words, "safety research requires standardizable measurement… being able to quantify risks effectively guides research direction and prioritization," and evaluations "start with measurement goals, often guided by a threat model" (OpenAI, "How we think about safety and alignment"). The Applied Foundations team defends the platform against abuse and scaled attacks; the Integrity pillar owns the systems that find and respond to bad actors. As those enforcement systems mature, the pressing question becomes: are they working, and how much harm is left? Answering that, robustly enough to set goals and report externally, is this job.
So the mental model to bring is closer to a public-health epidemiologist estimating disease prevalence, or a census bureau designing a survey, than a growth analyst reading an A/B dashboard. The craft is design-based sampling, estimation under measurement error, and using LLMs as scalable labelers.
The harms being measured
The harms here are severe, rare, and often about behavior rather than a single piece of content. The distinction between an activity-based and a content-based problem is one this team cares about a great deal, and it is worth being precise about: a content harm is "this image violates policy"; an activity harm is "this network of accounts is running a coordinated influence operation." The second is a pattern of behavior, which is far harder to sample and label than one image.
From OpenAI's public writing, the verticals a measurement DS might own include:
| Harm vertical | What it looks like | Public reference |
|---|---|---|
| Child safety | CSAM, CSEM, AI-generated CSAM (AIG-CSAM) | Safety by Design commitments; partners NCMEC, Thorn |
| Violent / sexual / self-harm content | Production Moderation API harm categories | omni-moderation model |
| State-affiliated threat actors | Accounts used for phishing, malware research, OSINT | Disrupting state-affiliated actors |
| Covert influence operations | Deceptive networks pushing propaganda | Disrupting deceptive uses |
| Financial abuse & scaled attacks | Fraud, payment abuse, automated abuse | Applied Foundations charter |
Every one of these is a low base rate (rare), a high cost per instance (severe), and often network-shaped. That combination is exactly what makes the measurement statistically hard, and why the team needs a specialist.
The measurement journey
Instead of a user funnel, the journey to map is the life of a measurement: how a policy definition becomes a daily number you can trust. In practice, a prevalence pipeline like this has four stages.
Two design choices in that pipeline are worth internalizing now, because interview questions circle back to them constantly:
- You sample by design, not by convenience. Because violations are rare, uniform sampling burns the label budget on obviously-safe content. You draw a probability sample weighted toward high-exposure and high-risk items, then reweight by the known sampling probabilities so the estimate stays unbiased. This is the difference between a survey and an anecdote.
- The thing that flags content is not the thing that grades it. The production enforcement model's scores are used only to prioritize what to review, never as the label. Grading your enforcement with its own scores is "grading your own homework," and it systematically makes you look better than you are (the selective-labels problem). The LLM labeler is kept independent on purpose.
Metrics by domain
A measurement DS owns a small, sharp set of numbers. They split into three groups: how much harm there is, how good the response is, and how much you can trust the measurement itself.
How much harm (the top-line):
- Exposure-weighted prevalence — the fraction of impressions (views) that landed on violating content, not the fraction of items. One item can get one view or a million, so weighting by impressions reflects what users actually experienced: where is impressions to item and is its violation label.
- User reach — the fraction of daily active users who saw at least one violating impression. Prevalence and reach can diverge: a small amount of content hitting many users is a different problem than a lot of content hitting a few.
How good the response is:
- Recall / catch rate — of the true violations out there, what share did enforcement catch? This measures response quality, which is invisible in prevalence alone.
- Precision of enforcement — of the items enforcement acted on, what share truly violated? False positives here mean punishing good users.
How much you can trust the number:
- CI half-width and effective sample size (ESS) — how precise the estimate is. A prevalence number with no interval is not a measurement, it's a guess.
- Labeler sensitivity and false-positive rate — how good the LLM labeler is against a human-labeled gold set. These gate the whole metric and feed the label-error correction.
- Minimum detectable effect (MDE) — the smallest change the metric can reliably catch. If the MDE is bigger than the change you care about, the metric can't support a goal or an A/B test.
Expect to be asked how you would build a metric that can carry a goal or an A/B test when prevalence itself cannot. That is a real, recurring problem on this team: when base rates are tiny, absolute prevalence is too noisy to move in an experiment, so you need a surrogate metric (a calibrated score-bucket estimate) and delta-focused inference instead.
The data you'd look at daily
The tables here look nothing like a product analytics job, because the thing being built is an estimate rather than a funnel. Three do most of the work (example columns and rows):
1. The daily sample — one row per sampled item, with everything needed to weight it back up:
| item_id | surface | impressions | risk_score | sample_prob | weight | llm_label | human_label |
|---|---|---|---|---|---|---|---|
| i_88213 | chat | 412,000 | 0.91 | 0.240 | 4.2 | violating | violating |
| i_90114 | chat | 6 | 0.88 | 0.020 | 50.0 | violating | — |
| i_77650 | api | 1,900,000 | 0.04 | 0.310 | 3.2 | clean | — |
| i_81002 | chat | 38 | 0.02 | 0.001 | 1000.0 | clean | clean |
Three columns are the craft of the role. risk_score decides who gets looked at and never becomes the label — that separation is what stops the measurement from grading its own homework. sample_prob is the probability that item was drawn, and weight is its inverse: item four stands in for a thousand others, which is how a sample of tens of thousands can describe a population of billions.
That last row is also the danger. A weight of 1000 means one labelling mistake on that row moves the whole estimate, which is why effective sample size matters more than raw sample size here.
2. Labeler calibration against the gold set — one row per policy, refreshed on a fixed cadence:
| policy | gold_n | sensitivity r | false_pos f | agreement | drift_30d |
|---|---|---|---|---|---|
| child_safety | 2,400 | 0.94 | 0.004 | 0.97 | −0.01 |
| violent_content | 1,800 | 0.88 | 0.011 | 0.93 | −0.04 |
| self_harm | 2,100 | 0.81 | 0.019 | 0.89 | −0.02 |
| covert_influence | 900 | 0.62 | 0.031 | 0.74 | −0.09 |
This table gates every number the team publishes. A labeler that catches 62% of true cases and falsely flags 3.1% is not measuring prevalence, it is measuring itself, until the estimate is corrected for both. And drift_30d is why the gold set gets refreshed rather than built once: the covert-influence labeler has lost nine points in a month, most likely because the behaviour changed underneath a prompt that did not.
3. The published estimate — one row per policy × day, and the only table anyone outside the team sees:
| policy | sampled_n | ess | raw_prev | corrected_prev | ci_95 | mde |
|---|---|---|---|---|---|---|
| child_safety | 48,000 | 31,200 | 0.0041% | 0.0038% | [0.0031, 0.0045] | 18% |
| violent_content | 48,000 | 29,800 | 0.0210% | 0.0224% | [0.0198, 0.0250] | 11% |
| self_harm | 48,000 | 22,400 | 0.0163% | 0.0189% | [0.0141, 0.0237] | 26% |
| covert_influence | 48,000 | 9,100 | 0.0090% | 0.0142% | [0.0071, 0.0213] | 51% |
Read the last row and the last column together. Effective sample size collapsed to 9,100 from the same 48,000 labels because the weights were spiky, and the minimum detectable effect is 51% — meaning this metric cannot see anything smaller than a halving. Reporting it as a number without that caveat, or setting a goal against it, is the mistake this role exists to prevent.
What the dashboards look like at OpenAI
A mature measurement dashboard is not a single line. It's a prevalence trend with confidence bands, drill-downs, and health diagnostics, all from one daily sample.
Prevalence trend (illustrative): a 7-day smoothed prevalence line per policy, with a shaded 95% CI band and vertical markers for interventions (a policy change, a new enforcement model). The band is the honest part: it's what tells a VP whether last week's dip is real or noise.
| Day (rel.) | Prevalence (illustrative index) | 95% CI |
|---|---|---|
| −14 | 100 | [92, 108] |
| −7 | 98 | [91, 105] |
| 0 (intervention) | 97 | [90, 104] |
| +7 | 84 | [78, 90] |
| +14 | 79 | [73, 85] |
Drill-downs from one sample: the same daily sample re-sliced by surface, viewer geography, or content age, so a team can localize a change without commissioning a new study. This "one global sample, many pivots" property is a core design goal.
Health diagnostics: CI half-width, ESS vs raw sample size (a big gap warns of heavy weights), sample positive rate, and the tracked labeler quality over time. When the metric wobbles, these tell you whether the cause is sampling noise, labeler drift, or a real shift in the world.
All of this ultimately feeds decisions: a goal ("cut prevalence of policy X by 20% this half"), a guardrail (page on-call if it jumps), an escalation (a new harmful pattern to investigate), or an external report. A measurement that doesn't drive one of those isn't done.
Quick check
What is the product you own in this role?
Why is the production enforcement model's score used to choose what gets reviewed, but never as the label itself?
Practice Questions
What would you measure to know if OpenAI is on top of a severe harm vertical?
Metrics frameworkMediumFor a severe harm like child-safety content, name the small set of metrics you'd track, and why each one earns its place.
Before you reveal: say your answer out loud, as if you were in the real interview — get your reasoning across clearly first. There is no single correct answer: reading what the interviewer is really after and defending your own thinking is what makes an answer strong.
Three groups, because "how much harm" alone doesn't tell you whether you're winning:
- How much harm. Exposure-weighted prevalence (share of impressions on violating content) as the top line, plus user reach (share of DAU exposed at least once). Track both because a little content hitting many users is a different problem than a lot hitting few.
- How good the response is. Recall (of true violations, how many enforcement caught) and precision (of enforced items, how many truly violated). Prevalence going down could mean less harm, or it could mean enforcement got sloppy and stopped flagging things, recall separates those.
- How trustworthy the number is. CI half-width / ESS (is the estimate precise enough to act on) and labeler quality against a gold set (is the LLM labeling well enough to believe).
For child safety specifically, add the operational reality: confirmed cases feed mandated reporting to NCMEC, and AIG-CSAM is a distinct sub-vertical. The point of the framework is that a single prevalence line, with no response metrics and no uncertainty, is not enough to run a safety program on.
Why weight prevalence by impressions instead of counting violating items?
Metric designMediumTwo teams propose different top-line metrics: (A) the fraction of content items that violate policy, (B) the fraction of impressions that landed on violating content. Which do you pick, and why?
Pick (B), impression-weighted, and be able to say why in one sentence: it reflects what users actually experienced.
The mechanism: content exposure is wildly unequal. Most items get almost no views; a few get millions. An item-weighted metric treats a violating post seen by one person the same as one seen by ten million, so it can look terrible while barely any user is affected, or look fine while a single viral violating item reaches everyone. Weighting by impressions ties the number to real user harm:
The trade-off to acknowledge: impression-weighting makes the metric sensitive to a small number of very-high-view items, so a single viral item can swing the daily estimate. That's a genuine property to monitor (you keep the sampled high-weight items around for drill-down), not a reason to abandon the design, because item-weighting would hide exactly the harm you care most about.
Why not just use the enforcement model's scores as the measurement?
Measurement integrityHardThe production system already scores every item for how likely it is to violate policy. A colleague suggests: just threshold those scores and report the fraction above the threshold as prevalence. What's wrong with that?
This is grading your own homework, and it systematically understates true harm.
The enforcement model is trained and thresholded to catch violations. Anything it already catches gets removed or down-ranked, so it never appears in the impressions you'd measure, and anything it misses (false negatives) scores low and wouldn't cross your threshold. Measuring prevalence off the same scores you enforce with means you only ever "see" the harm your model already recognizes, and you're blind to the harm it fails on. This is a version of the selective-labels problem (Lakkaraju et al., 2017): the labels you observe are censored by the very system you're evaluating.
The fix, and the design OpenAI and Pinterest both use, is to keep the labeler independent of the enforcement model. Draw a probability sample of impressions (including content the model scored as safe), and label it fresh with an LLM governed by the policy, not by the enforcement threshold. The enforcement score can still be used to prioritize which items to sample (efficiency), but never as the label (integrity). The reweighting in the estimator then removes any bias that prioritization introduced.
Prevalence is too noisy to move in an A/B test — what metric do you report instead?
Metric designHardA team runs an experiment they expect to modestly reduce exposure to a rare harm. Prevalence is so low that per-arm confidence intervals overlap and nothing looks significant. What do you give them?
Two moves, and they compose.
First, switch from absolute levels to the delta. Experimenters care about treatment−control, not the absolute prevalence in each arm. Absolute per-arm estimates carry all the calibration/measurement noise; the difference cancels much of the shared noise. So compute a daily delta and test whether it's consistently one sign, e.g. with a day-level sign test over the experiment window (Xu et al., 2026). A small, consistent shift that's invisible in overlapping absolute intervals can be clearly significant in the deltas.
Second, use a surrogate for prevalence instead of running a fresh LLM-labeling job per arm per day (too slow and costly). Calibrate a score-bucket map once offline: bucket the model score, estimate each bucket's true prevalence from a labeled sample, then estimate any arm's prevalence from impression logs alone as , where is that arm's share of impressions in bucket . The experiment's effect shows up as a shift in the bucket distribution between arms, which you can read from logs cheaply and continuously.
The one-line answer an interviewer wants: report a delta-focused surrogate metric, not absolute prevalence, when base rates are too low for the top-line to move. This is exactly the "metrics for goaling or A/B when prevalence isn't suitable" the JD names.
The daily prevalence number is jumping around — is it a real problem?
DiagnosisHardYour daily prevalence estimate for one policy has been swinging week to week. Leadership wants to know if harm is spiking. How do you figure out what's going on before you answer?
Don't answer "harm is up" until you've ruled out the two boring explanations, because in practice they dominate.
Work through the sources of the swing in order:
- Sampling noise. Is the swing inside the confidence intervals? At low base rates, daily CIs are wide. Check ESS, not just raw sample count, heavy inverse-probability weights can make the effective sample much smaller than it looks. If the moves fit inside the CI band, there may be nothing to explain; smooth to a 7-day average (the standard error shrinks by ) and look again.
- Labeler drift / decision quality. The paper's own finding is that day-to-day wobble is often driven more by ambiguous edge cases and labeler behavior than by sampling (Dobi et al., 2026, §11.4). Did the LLM model version change? Did the policy prompt get edited? Re-check labeler quality against the gold set for the period. If decision quality slipped, more labels won't fix it, prompt iteration and targeted human review will.
- Topic / content-mix shift. Did the composition of content change (a news event, a seasonal surface change) so the mix moved even if per-type prevalence didn't? Drill down by surface and content age from the same sample.
- A genuine spike. Only after 1–3 are ruled out do you escalate a real harm increase, and now you can do it with a drill-down showing where it concentrated, which is what actually helps the response team.
The senior move is refusing to read raw daily wobble as signal, and knowing that at this base rate, measurement noise and labeler drift are the usual culprits, not the world getting worse overnight.