09Signal Garden
30:00 MOCK

8090-oriented system design rehearsal · mock 09

Turn noise into evidence-backed work.

A realistic 30-minute interviewer–candidate dialogue about multichannel feedback ingestion, privacy-safe normalization, duplicate detection, evolving themes, and controlled Work Order creation.

System
Multi-tenant feedback intelligence + Work Order bridge
Actors
Customer, support, PM, analyst, privacy admin, delivery team
Deep dives
PII-safe dedupe · versioned themes with evidence
Clock
12 questions · 00:00–30:00
Difficulty
Enterprise data product with probabilistic clustering
Practice-only numbers. Every volume, latency, cost, and organization count on this page is an invented mock constraint—not an 8090 company fact.

Before the clock

A theme is a hypothesis, not a fact.

The system may suggest that many comments describe one customer problem. It must still preserve who said what, which exact spans support the theme, what access policy applies, and who approved downstream work.

Research dossier ↗
Feedback item

One immutable source event: a ticket message, Slack post, survey response, app event, transcript segment, or email revision.

Canonical signal

A privacy-processed, language-normalized representation that still points back to authorized source spans.

Duplicate cluster

Items believed to report the same underlying event or repeated transport. Exact duplicates and semantic near-duplicates have different semantics.

Theme version

A time-bounded hypothesis with label, summary, membership evidence, exclusions, model/configuration, reviewer, and supersession lineage.

Opening promptDesign Signal Garden. It ingests feedback from Slack, support tools, email, surveys, product telemetry, and call transcripts; detects PII and duplicates; groups evidence into evolving themes; and proposes traceable Work Orders. Cover full-stack UX, distributed processing, security, evaluation, failures, and rollout.
Starting question

Frame authority before algorithms

Interviewer

We receive 20 million feedback items per month for 400 enterprises. Build the complete application. Where do you start?

Candidate

I will separate five states that are easy to collapse: source event, privacy-safe canonical signal, duplicate hypothesis, theme hypothesis, and approved Work Order. The source is immutable evidence; model outputs are versioned proposals. A PM—not a clustering job—authorizes a Work Order.

I need to clarify source edit/delete semantics, tenant and channel ACLs, languages, acceptable PII handling, whether one item may support multiple themes, and the harm of a false merge versus a missed cluster. I will design for at-least-once connectors, idempotent stages, tenant-isolated search, source-span citations, and reversible human curation.

Clarification

Requirements, actors, and exclusions

Interviewer

What exactly is in scope, and which user journeys matter most?

Candidate

Actors are customers who submit feedback, source-system principals, support and product operators, privacy administrators, engineers receiving Work Orders, and auditors. The core loop is: connect a source → durably ingest → classify privacy and language → normalize → exact/near dedupe → embed and assign candidate themes → let a PM inspect supporting and contradicting evidence → approve, split, merge, dismiss, or create a Work Order → measure whether the resulting change resolves the signal.

Functional requirements include backfill and incremental sync, source edits/deletes, evidence search, theme trend/impact views, structured feedback API, and Work Order traceability. NFRs: P95 API ingest acknowledgement under 300 ms after durable receipt, first theme update under ten minutes, 99.95% ingest availability, seven-year configurable audit, EU/US residency, and deletion lineage. I exclude training a foundation model and replacing the source helpdesk.

Ingest

Never lose receipt

Persist tenant, source key, payload hash, cursor, ACL snapshot, and raw-object pointer before acknowledging.

Protect

Minimize early

Detect/classify PII before broad indexing or any external model call.

Understand

Keep uncertainty

Theme membership is scored, versioned, and reviewable—not a mutable label on the item.

Act

Human authority

Work Orders pin theme version and evidence spans; dismissed proposals remain auditable.

Correctness

What must never happen

Interviewer

Give me the invariants you would encode and monitor.

Candidate
  1. No source acknowledgement before immutable receipt and an outbox event commit.
  2. No source event, canonical text, embedding, cache entry, or log crosses a tenant or source ACL.
  3. Raw PII is never placed in the shared semantic index; every derivative names its privacy transform and source lineage.
  4. Exact transport dedupe may collapse processing, but never erases receipt lineage. Near-duplicate grouping is reversible.
  5. A theme stores positive evidence, counter-evidence, membership score, model/config digest, and reviewer actions.
  6. A Work Order references a frozen theme version and exact evidence spans; later clustering cannot rewrite its rationale.
  7. Deletes and ACL revocations propagate to raw, canonical, index, embedding, cache, model context, exports, and evaluation copies.
Estimation

Find the real pressure points

Interviewer

Estimate traffic, storage, and expensive processing. Use the supplied scale.

Candidate

Twenty million items/month is about 666,667/day or 7.72/s average. I size the connector edge for a mock 25× recovery burst: about 193/s, while source webhooks may be much spikier. At 8 KB raw text/metadata, source payload is 160 GB/month before attachments. A 1,536-dimensional float32 embedding is 6,144 bytes, or about 123 GB/month for every item; replicas, ANN indexes, token maps, and versions multiply that.

With 12% exact or near duplicate reuse, canonical downstream work drops to 17.6 million items/month, but I preserve all receipts. The expensive path is not API QPS; it is attachments/transcription, PII review, multilingual embeddings, re-clustering, ACL filtering, and full deletion/reindex. I isolate historical backfill from live feedback and estimate reviewer load from theme candidates, not raw item count.

20,000,000 ÷ 30 ÷ 86,400 = 7.72 items/s average
20,000,000 × 8 KB = 160 GB/month raw text+metadata
20,000,000 × 1,536 × 4 B = 122.88 GB/month raw vectors

Feedback capacity lab

Change the invented constraints and explain which subsystem moves.

Interactive
Average items/s7.72
Mock peak items/s193
Raw payload/month160 GB
Physical vector/month324.4 GB

Vector estimate uses float32 dimensions × non-duplicate canonical items × the entered physical factor. Attachments and transcripts are excluded.

Data design

Store evidence and hypotheses separately

Interviewer

Show the schema and the core write/read APIs. What is mutable?

Candidate

FeedbackItem is a stable identity; SourceRevision is immutable payload metadata and an encrypted object reference. CanonicalSignalVersion records language, redaction map, privacy classes, normalized text, and transform digests. DuplicateClusterVersion and ThemeVersion are hypotheses; membership rows include score, reasons, and the analysis generation.

The mutable pieces are projections such as “current theme,” queue leases, and UI preferences. Source revisions, privacy decisions, reviewer actions, Work Order links, and audit events append. APIs use source event keys plus idempotency keys; edits create revisions, and theme edits require an expected version. Evidence reads return authorized snippets or short-lived crop/audio URLs, never a naked summary.

High-level design

One durable loop, several trust zones

Interviewer

Walk one Slack complaint into a product manager’s theme view and then a Work Order.

Candidate

The Slack connector verifies signatures, resolves tenant/project/source identity, and commits a receipt plus outbox. A fetch worker uses the installation grant to retrieve permitted content and attachments. Quarantine performs MIME validation and malware/resource checks. Privacy workers classify and tokenize PII; only the policy-approved canonical representation can reach language normalization, embeddings, and semantic processing.

Exact dedupe uses source key and payload hash. Near-dedupe generates candidate neighbors within a tenant/project/time window; a scoring service writes reversible membership. The theme service consumes canonical signals and current duplicate representatives, proposes versioned themes with evidence spans and counterexamples, and updates materialized trend views asynchronously. A PM action is a transactional command: approve/split/merge/dismiss or create a Work Order pinned to theme version and selected evidence. Notifications and analytics follow through an outbox.

Deep dive A

Duplicates are not one problem

Interviewer

A customer posts the same complaint in Slack, opens a ticket, and later pastes it into a survey with new context. How do you deduplicate without losing signal?

Candidate

I use a cascade. Transport duplicates match the source delivery/event key. Byte-equivalent revisions match canonical payload hashes. Content duplicates use normalized text fingerprints. Near-duplicates use tenant-local candidate generation—MinHash/LSH or ANN—then a calibrated pair classifier using author/account, product area, timestamps, entities, language, and semantic similarity.

I never delete the three receipts. I create a duplicate-cluster version with a representative, relationship type such as SAME_EVENT, FOLLOW_UP, or RELATED, and per-edge evidence. The survey’s new context remains a separate source revision and can support multiple themes. Counts expose both unique reporters and total mentions so a retry storm cannot masquerade as customer impact.

Ground truth comes from sampled pair adjudication, not theme clicks alone. I measure precision heavily because false merge hides distinct problems; uncertain pairs remain separate or show a “possibly related” link.

Failure injection 01 · connector replay storm
New fact

Slack retries 400,000 events after a six-hour outage; event order is scrambled and some messages were edited.

Design revision

Deduplicate by workspace+event ID, fetch current object by immutable source ID, store each observed revision, and advance the source cursor only with compare-and-set.

Safe degradation

Backpressure that connector, preserve other tenants, coalesce redundant fetches, and mark theme freshness for the affected source.

Deep dive B

Version themes like product artifacts

Interviewer

How do themes form, evolve, and stay grounded? Give an example.

Candidate

I run online assignment for fresh items against active tenant/project theme prototypes, then a slower batch discovers new clusters and split/merge candidates. A theme version contains a human-readable problem statement, scope and exclusions, centroid/model digest, positive member IDs, counterexamples, representative evidence spans, reporter/account counts, severity signals, trend window, and reviewer decision.

Example: “OAuth reconnect loops after role change” may initially be merged with “GitHub token expired.” Counter-evidence shows only role-change events lose project binding, so the model proposes a split. The PM compares evidence, accepts the split, and v3 supersedes v2. A Work Order created from v2 remains pinned to v2; v3 can create a follow-up, not rewrite history.

I evaluate cluster purity and coverage on adjudicated samples, theme stability across reruns, evidence citation precision, duplicate-adjusted impact, time-to-first-coherent-theme, PM acceptance/split/merge rates, and—most importantly—whether shipped Work Orders reduce incoming rate for the matched theme versus seasonality/control cohorts.

Failure injection 02

PII is found after indexing

Interviewer

A support message containing a patient ID was embedded and cached before the PII classifier was upgraded. The user then requests deletion. Revise your design.

Candidate

I stop treating the primary database as the deletion inventory. Every derivative carries tenant_id, source_revision_id, transform version, data class, and key generation. A privacy policy gate runs before model/index writes, but defense in depth assumes misses.

The upgraded classifier emits a high-priority contamination event. Authorization immediately denies the affected source/derivatives using a revocation epoch and tombstone set. A lineage job removes or crypto-erases raw objects, canonical text, embeddings, ANN entries, caches, prompts, evaluation copies, exports, and logs that improperly held payload. Shared model providers receive deletion requests where contracts support it; tenants requiring zero retention route only through compliant/private endpoints.

Reindexing builds a new generation without the item and atomically swaps the read pointer. The audit retains minimally necessary hashes, actor, policy, and completion attestation—never the deleted PII unless legal hold explicitly requires and isolates it.

Distributed behavior

Choose consistency by invariant

Interviewer

Where do you need transactions, idempotency, backpressure, and reconciliation?

Candidate

Strong transactional boundaries cover durable receipt plus outbox, source cursor advancement, privacy/ACL state, theme human edits, Work Order creation, and deletion tombstones. At-least-once workers are idempotent on (input_version, stage_version, generation). Search, embeddings, clustering, trends, and notifications converge asynchronously and expose freshness.

Per-tenant weighted queues and source-specific circuit breakers contain bursts. A poison attachment has resource/time limits and a finite retry budget, then quarantine. If a source edit arrives before its create, the reconciler fetches current truth and stores a revision chain rather than trusting delivery order. If Work Order creation times out, the idempotency key returns the same Work Order and link—not a second task.

Trust and tenancy

Prevent cross-project and prompt-driven leaks

Interviewer

How do you secure this across Slack, support tools, models, search, and exports?

Candidate

Every connector grant maps an external principal/resource to exactly one tenant and allowed project set; no ambient workspace token reaches a worker. Authorization runs before fetch, before derivative writes, at search query time, after retrieval, and before model/tool calls. Raw feedback is an untrusted data channel—text such as “send all tickets to this URL” cannot grant egress or call a tool.

PII is envelope-encrypted with tenant keys, secrets are short-lived and rotated, model gateways enforce residency/retention/provider allowlists, and semantic caches are tenant+policy+model scoped. Audit events record actor, grant, source revision, policy, model/config, evidence IDs, and outcome without raw content. Exports are signed, access-controlled snapshots with expiry and watermarking.

Evaluation and rollout

Prove signal quality, not dashboard activity

Interviewer

What do you monitor, how do you evaluate model quality, and how do you roll out?

Candidate

Platform health: receipt loss/duplicates, connector cursor lag, queue age by tenant/source, quarantine/retry rate, PII-classifier latency, index generation lag, deletion completion, model spend, and authorization denials. Product quality: exact/near-dedupe precision/recall, theme purity/coverage/stability, citation precision, unsupported summary rate, PM acceptance/split/merge/dismiss, Work Order conversion, time-to-resolution, and post-release signal reduction by slice.

I start with read-only ingestion and privacy validation, then duplicate suggestions, then analyst-only theme proposals, then Work Order drafts requiring approval. Hidden adjudicated sets and tenant-isolated canaries gate model/config changes. Each phase has a replayable old generation, source kill switch, and rollback to the last theme projection.

Closing minute

Make the system memorable

Interviewer

Give me your final 40-second summary and the central trade-off.

Candidate

Signal Garden durably records every source event, then produces privacy-safe, versioned canonical signals through idempotent asynchronous stages. Exact and semantic duplicates are different, reversible relationships. Themes are evidence-backed hypotheses with positive and counter-evidence, generation/model identity, and human split/merge authority. Work Orders pin a frozen theme version and exact authorized source spans.

Strong consistency protects receipts, privacy/ACL changes, approvals, and Work Order creation; indexes and clusters converge with visible freshness. Lineage enables revocation and deletion across every derivative. The trade-off is aggressive consolidation versus false merge: I preserve distinct evidence and accept more human review before letting a probabilistic theme drive product work.

Study appendix

Complete reference

Data model: keys, invariants, access paths

EntityPrimary key / fieldsInvariantPrimary access path
SourceReceipt(tenant_id, source_id, delivery_id); payload_hash, received_atAppend-only; one acknowledgement maps to one durable receiptDeduplicate connector retries; incident timeline
FeedbackItem / SourceRevision(tenant_id, item_id, revision_no); external_object_id, raw_object_ref, ACL snapshotRevisions append; source delete creates tombstoneFetch item history; source reconciliation
CanonicalSignalVersion(tenant_id, signal_id, version); redacted_text, language, PII map, transform digestsOnly policy-approved representation is indexableSearch/embedding input; replay transforms
DuplicateClusterVersion(tenant_id, cluster_id, version); representative, relationship edgesMembership is reversible and evidencedUnique reporters; duplicate drill-down
ThemeVersion(tenant_id, theme_id, version); label, summary, scope, model/config digestImmutable after review; successor supersedesTheme page; historical trend; audit
ThemeMembership(theme_version_id, signal_version_id); score, reasons, roleExact versions; may be supporting or counter-evidenceEvidence list; cluster evaluation
WorkOrderLink(theme_version_id, work_order_id); evidence selection, idempotency keyApproved command creates at most one logical Work OrderTrace feedback → work → resolution
DeletionJob(tenant_id, source_revision_id, job_version); lineage cursor, hold state, attestationNo completed state until every policy-required derivative is coveredPrivacy request; audit export

Concrete API surface

POST/v1/projects/{project}/feedbackIdempotency-Key + source metadata; returns receipt after durable object/manifest, 202 for async processing.
POST/v1/connectors/{id}/eventsVerify signature, installation/resource binding, delivery ID, and monotonic source cursor.
GET/v1/themes?generation=&cursor=&source=Snapshot/cursor pagination with generation and freshness; authorization before and after retrieval.
GET/v1/themes/{id}/versions/{v}/evidenceReturns membership, counter-evidence, source authority, and expiring authorized snippets.
POST/v1/themes/{id}:split|merge|approve|dismissExpected-Version prevents stale curation; reviewer reason and audit event required.
POST/v1/themes/{id}/work-ordersPins theme version + evidence IDs; retry returns same logical Work Order.
POST/v1/privacy/deletionsCreates lineage-driven revoke/delete job; returns coverage status and hold exceptions.
END-TO-END MAP

Signal Garden logical architecture

Durable source evidence enters once; privacy policy gates every derivative; probabilistic outputs stay reversible until a human command.

Signal Garden logical architecture Connectors feed durable ingress and privacy control. Canonical signals are deduplicated, indexed, clustered into themes, reviewed, and linked to Work Orders. EDGE / INTAKE AUTHORITATIVE CONTROL ASYNC / EXECUTION / DERIVED Slack / supportsigned webhooksEmail / surveypoll + cursorCalls / in-appaudio + eventsFeedback APIidempotent uploadReceipt serviceraw + outboxPrivacy gatewayPII + ACL + residencyEvidence storeimmutable revisionsTheme authorityversions + reviewNormalize / translateversioned transformsDedupe / embeddingstenant-local candidatesCluster / summarizeevidence + counterproofWork Ordersapproved trace link Cross-cutting: tenant policy · audit · metrics · lineage · replay
DOMAIN DEEP DIVE

Evidence survives every compression step

Counts, themes, and Work Orders are projections. The source revision and authorized span remain the reproducible base.

Feedback evidence compression flowMany source receipts become fewer canonical signals, duplicate groups, themes, and Work Orders while trace links remain.20M receiptsevery channel eventimmutable lineagecanonical signalsPII policy appliedduplicate groupsreversible relationstheme versionssupport + counterproofWORKORDERexact source span + ACL + transform/model/version remain linked end-to-end

Consistency ledger

Invariant
Consistency
Why
Safe degraded behavior
Receipt + outbox
Transactional
Acknowledged source cannot be lost
Accept more queue lag; never synthesize receipt
PII / ACL revoke
Strong epoch + deny cache
Revocation must beat stale semantic index
Deny retrieval while policy freshness unknown
Canonical stages
At-least-once + idempotent
Workers retry; versions make duplicates harmless
Backpressure; expose processing stage
Theme/search projection
Eventual by generation
Clustering and indexing are expensive
Show freshness; preserve last reviewed version
Theme edit / Work Order
Optimistic transaction
One reviewed history and one logical task
Return conflict diff/idempotent prior result

Operational scorecard

Platform health

Durable receipt SLO
99.95%
Connector cursor lag
4.2m
PII gate latency
820ms
Deletion completion
96%

Outcome quality

Dedupe precision
97.2%
Theme purity
0.86
Citation support
98.1%
WO resolution lift
−31%

Visual values are illustrative. In production, every metric needs a unit, time window, tenant/slice dimension, owner, alert threshold, and prescribed action.

Phased rollout

GATE 01

Observe

Connect one source read-only. Validate ACL, deletion, cursor recovery, and privacy handling.

GATE 02

Suggest duplicates

Show exact/near matches without collapsing evidence; adjudicate pair samples.

GATE 03

Propose themes

Analysts review versioned clusters, counterexamples, and trend calculations.

GATE 04

Draft work

Create Work Order proposals; human approval, outcome tracking, rollback, and kill switch remain mandatory.

Interview traps

  1. 01Embedding raw PII first and promising to filter it at query time.
  2. 02Treating exact transport duplicates and semantically related feedback as the same operation.
  3. 03Keeping one mutable theme label with no version, evidence, counterexample, or model digest.
  4. 04Letting a high-volume retry storm inflate customer impact and priority.
  5. 05Using one global cluster across tenants or allowing examples to cross tenant boundaries.
  6. 06Creating Work Orders automatically from a model summary without human authority or idempotency.
  7. 07Deleting the source row but leaving embeddings, caches, prompts, exports, and eval copies.
  8. 08Reporting only silhouette score instead of human purity, coverage, citation, and business resolution.
  9. 09Trusting webhook order rather than reconciling current source revisions.
  10. 10Showing summary text without direct authorized evidence in the product UI.

Glossary

ANN
Approximate nearest-neighbor index used to retrieve likely similar vectors without scanning every item.
Canonicalization
A versioned transformation into a comparable form; it does not erase the original source or meaning.
Counter-evidence
Authorized items that look near a theme but contradict its proposed scope; vital for avoiding false merges.
Dedupe key
Stable identifier for one transport/business event so retries map to one logical receipt or operation.
Embedding
Numeric semantic representation used for candidate retrieval; it may contain sensitive information and requires ACL/deletion controls.
Generation
A named snapshot of derived index or clustering output so freshness and replay are explicit.
Lineage
The graph from a source revision through every derived signal, vector, cluster, export, and task.
MinHash / LSH
Techniques for finding candidate documents with similar token sets without all-pairs comparison.
PII
Personally identifiable information. Classification, minimization, retention, access, and model routing must be policy-driven.
Theme purity
Within a sampled theme, the proportion judged to describe the same scoped customer problem.
Tombstone
A durable revocation/deletion marker that prevents stale caches or indexes from resurrecting content.
Transactional outbox
Business state and an event intent commit together; a relay publishes later with at-least-once delivery.

One-minute spoken recap

Authority: immutable source evidence, not the generated theme. Pipeline: durable receipt → privacy gate → versioned canonical signal → reversible dedupe → evidence-backed theme → approved Work Order. Consistency: transactions for receipt, privacy, review, and task creation; generation-labeled eventual consistency for search and clustering. Safety: tenant-local processing, prompt/data separation, lineage-driven deletion, and source-level citations. Success: fewer unresolved customer problems—not merely more clusters or tokens processed.