← Dashboard
Q001 ·Product ·Metrics ·Engagement

Define an engagement metric for a social product

Easy High frequency

A PM asks: what engagement metric should we track for a social product like Instagram? Give us something we can report weekly to leadership.

Key Insight

"Engagement" is not a metric. It's a concept that only becomes measurable once you pick what event qualifies, over what window, counted how. The interview is testing whether you can make those choices deliberately — not whether you can recite DAU.

The three choices every engagement metric makes
  1. What counts as active. Session open, feed scroll, post seen, post created, comment, message, reaction. Each implies a different product intent. A "session open" metric rewards notifications pushing users to the app. A "message sent" metric rewards real interaction. Pick the event closest to the user behavior your product is trying to produce.
  2. What window. DAU = unique account-ids that emit the active event in one calendar day. MAU = unique over trailing 30 days. WAU sits between. Weekly reporting cadence doesn't mean WAU; it usually means reporting DAU7 (average DAU over the week) + MAU + DAU/MAU.
  3. What unit of counting. Account-id (not device) for consumer social. Device-level double-counts the same person across phone + tablet + web. Account-id under-counts shared accounts but those are rare for Meta-scale consumer.
The default I'd ship

For Instagram specifically: Daily Interacting Users (DIU) — unique account-ids per day that emitted one of {post, comment, reaction, message sent, story reply}, computed in UTC, deduped by account.

This is defensible because:

  • It rewards producing content (post, message), not just consuming (scroll). Consumption is easy to lift with a dark pattern; production is harder to game and correlates with retention.
  • It's computable off one events table in a single query.
  • Paired with plain DAU (any session) as a guardrail-metric, it catches the "redefinition juicing" trap — if DIU goes up but DAU goes down, you've cannibalized passive users, and that's a bad trade.
Why not just DAU?

DAU answers "did the app open." That's a proxy for notification effectiveness, not for product health. A push-notification arms race can lift DAU for months while the product quietly dies. Use DAU as a guardrail-metric below DIU — but if you only track one number, track the interaction one.

Why not just MAU?

MAU answers "how wide is the reach." For a mature product, MAU is slow to move; a bad week won't show up for 3–4 weeks. For a growing product, MAU lags because new users take time to fall out of the 30-day window if they churn. Weekly leadership reporting wants something that responds to this week's changes.

DAU/MAU ratio (stickiness)

DAU/MAU is a cleaner signal of engagement depth than either one alone. A product with DAU/MAU = 0.5 has users coming back every other day on average — very sticky. 0.2 is "comes back once a week." Meta consumer products run 0.5–0.7; that range is what you'd frame as healthy.

Segmenting — always, not just on exception

Report the metric globally plus split by new-vs-returning, by country (US/EU/ROW), by platform (iOS/Android/web). A 3% global lift that is +8% US / -2% everywhere else isn't the same story as 3% across the board. simpsons-paradox lurks whenever you aggregate across heterogeneous segments — surfacing the splits in the weekly report kills ambiguity before leadership asks.

Interviewer

What engagement metric would you ship for Instagram, reported weekly to leadership?

I'd define Daily Interacting Users (DIU) — unique account-ids per calendar day that emit at least one of {post, comment, reaction, message sent, story reply} — and report DIU7 (rolling 7-day average), MAU, and DAU/MAU as the stickiness ratio.

The reasoning is I'd pick an active event that's producing something rather than just opening the app. A scroll-only metric is easy to juice with a push notification arms race. An interaction metric is harder to game and correlates better with 30-day retention.

I'd pair DIU with plain DAU as a guardrail-metric. If DIU moves up while DAU moves down, it means we cannibalized the passive-consumption tier to boost interactions — that's almost always a bad trade at scale, and the guardrail catches it.

Reporting: global number plus splits by new-vs-returning, region (US/EU/ROW), and platform. simpsons-paradox hides here — a flat global number can mask divergent trends, so the splits aren't optional.

Self-rate:
Interviewer · Follow-up

What if the PM says "we want just one number, make it simple." Which one?

Then DIU, and I'd push back on "just one" specifically about the guardrail.

The tradeoff I'd make visible: you can have one headline number, but removing the DAU guardrail means we can't tell the difference between real engagement growth and cannibalized passive use. A PM who only sees DIU will greenlight features that shift passive users into reluctant interactors — at which point headline DIU rises while user sentiment drops, and by the time it shows up in retention we've already shipped three follow-up features on top.

So one headline: DIU. One guardrail that you don't need to look at every week but that flags when it diverges: DAU. That's the minimal defensible setup.

Self-rate:
Interviewer · Follow-up

Someone on the team says "DAU/MAU is 0.55, that looks fine." Is that a good answer?

It's a number without a reference point. The question is: 0.55 compared to what?

Three comparisons matter.

  • Itself over time. If we were at 0.58 last quarter, 0.55 is a 5% relative decline in stickiness — bad.
  • Peers. For consumer social, 0.5–0.7 is the healthy band. 0.55 sits inside that. For a B2B tool where users log in Monday–Friday, 0.2 is healthy and 0.55 would be extraordinary.
  • Segments. If 0.55 globally is 0.70 US / 0.35 elsewhere, the headline masks a real problem in non-US markets. The aggregate is only as useful as the slice underneath it.

The broader point for the team: "that looks fine" is a statement without a decision behind it. The metric should answer a question — "are we getting stickier, same, or weaker" — and 0.55 in isolation answers nothing.

Self-rate:
Interviewer · Follow-up

How would you handle bots or accounts that aren't real users in this definition?

Two layers.

Layer 1 — filter at the event level. Before counting, strip events from accounts our trust-and-safety signal classifies as automated: signup velocity, device reputation, known fraudulent IP blocks. This is a stable upstream filter maintained by the integrity team; we consume their labels. No need to rebuild it in the metric pipeline.

Layer 2 — diagnostic sanity checks. Even with upstream filtering, I'd keep DIU_raw and DIU_filtered both in the pipeline, and alert if the gap exceeds its usual 2–3%. A sudden jump in the gap is the signature of either (a) a new bot campaign we haven't caught, or (b) an integrity classifier overfit that's wrongly excluding real users. Either way you want to know.

One trap: don't filter aggressively inside the DIU calculation itself. If you exclude "low-engagement" accounts to "clean up the number," you've redefined the metric and lost the ability to detect engagement expansion into that tail. Bot filtering is binary (real or not real); engagement-level filtering is analysis, not metric-definition.

Self-rate:
Interviewer

What engagement metric would you ship for Instagram, reported weekly to leadership?

Candidate

I'd define Daily Interacting Users (DIU) — unique account-ids per calendar day that emit at least one of {post, comment, reaction, message sent, story reply} — and report DIU7 (rolling 7-day average), MAU, and DAU/MAU as the stickiness ratio.

The reasoning is I'd pick an active event that's producing something rather than just opening the app. A scroll-only metric is easy to juice with a push notification arms race. An interaction metric is harder to game and correlates better with 30-day retention.

I'd pair DIU with plain DAU as a guardrail-metric. If DIU moves up while DAU moves down, it means we cannibalized the passive-consumption tier to boost interactions — that's almost always a bad trade at scale, and the guardrail catches it.

Reporting: global number plus splits by new-vs-returning, region (US/EU/ROW), and platform. simpsons-paradox hides here — a flat global number can mask divergent trends, so the splits aren't optional.

Interviewer

What if the PM says "we want just one number, make it simple." Which one?

Candidate

Then DIU, and I'd push back on "just one" specifically about the guardrail.

The tradeoff I'd make visible: you can have one headline number, but removing the DAU guardrail means we can't tell the difference between real engagement growth and cannibalized passive use. A PM who only sees DIU will greenlight features that shift passive users into reluctant interactors — at which point headline DIU rises while user sentiment drops, and by the time it shows up in retention we've already shipped three follow-up features on top.

So one headline: DIU. One guardrail that you don't need to look at every week but that flags when it diverges: DAU. That's the minimal defensible setup.

Interviewer

Someone on the team says "DAU/MAU is 0.55, that looks fine." Is that a good answer?

Candidate

It's a number without a reference point. The question is: 0.55 compared to what?

Three comparisons matter.

  • Itself over time. If we were at 0.58 last quarter, 0.55 is a 5% relative decline in stickiness — bad.
  • Peers. For consumer social, 0.5–0.7 is the healthy band. 0.55 sits inside that. For a B2B tool where users log in Monday–Friday, 0.2 is healthy and 0.55 would be extraordinary.
  • Segments. If 0.55 globally is 0.70 US / 0.35 elsewhere, the headline masks a real problem in non-US markets. The aggregate is only as useful as the slice underneath it.

The broader point for the team: "that looks fine" is a statement without a decision behind it. The metric should answer a question — "are we getting stickier, same, or weaker" — and 0.55 in isolation answers nothing.

Interviewer

How would you handle bots or accounts that aren't real users in this definition?

Candidate

Two layers.

Layer 1 — filter at the event level. Before counting, strip events from accounts our trust-and-safety signal classifies as automated: signup velocity, device reputation, known fraudulent IP blocks. This is a stable upstream filter maintained by the integrity team; we consume their labels. No need to rebuild it in the metric pipeline.

Layer 2 — diagnostic sanity checks. Even with upstream filtering, I'd keep DIU_raw and DIU_filtered both in the pipeline, and alert if the gap exceeds its usual 2–3%. A sudden jump in the gap is the signature of either (a) a new bot campaign we haven't caught, or (b) an integrity classifier overfit that's wrongly excluding real users. Either way you want to know.

One trap: don't filter aggressively inside the DIU calculation itself. If you exclude "low-engagement" accounts to "clean up the number," you've redefined the metric and lost the ability to detect engagement expansion into that tail. Bot filtering is binary (real or not real); engagement-level filtering is analysis, not metric-definition.

Interviewer

Good.

How to do a mock interview
  1. 1
  2. 2

    Copy this question and paste it as your first message. This briefs the interviewer — they won't start asking yet.

    View prompt
    A PM asks: what engagement metric should we track for a social product like Instagram? Give us something we can report weekly to leadership.
  3. 3

    Switch to voice mode (mic icon in the chat input). Say "I'm ready, let's begin" — the interviewer will start asking one sub-question at a time. Aim for 4–6 turns.

  4. 4

    When the interviewer says "thank you, that's all I had", exit voice mode, then paste this prompt.

    View prompt
    Print the full transcript of our conversation as alternating "Interviewer:" and "Candidate:" lines. Strip any <<AudioTranscription: ...>> wrappers from spoken input — include only the spoken content inside them. Include every exchange verbatim otherwise. Do not paraphrase, summarize, or skip turns. Do not add commentary.
  5. 5

    Copy ChatGPT's response, paste it below, and run the debrief.

Shortcuts
SpaceReveal next 123Status FFocus TTranscript NNotes EscClose concept Prev / next