Research Paper | Oct 2026 | Team EmptyBrains
Sequential Matching and Information Acquisition for Reciprocal Introductions Under Incomplete Information and Dynamic Constraints
Research Paper for Romeo Juliet X IITM | Pan IIT Hackathon · Sequential Matching Problem- Sequential Matching
- Information Acquisition
- Reciprocal Introductions
- Dynamic Constraints
- Incomplete Information
A strong match on paper is often not a match in person.structure caps outcomes; chemistry and chance do the rest
Always match. Introduce every feasible pair promptly.the core recommendation
Policy choices add little within the cap structure sets.why ranking moves outcomes so little here
Abstract
Objective. The ranked metric is Mutual Second-Meeting Intention (MSMI) per 100 arrived members. It factors into two terms: the number of introductions a policy makes, and the probability that each introduction qualifies.
Central finding. In this environment the second term is largely beyond a policy's control. Feasible pairs are scarce: there are about 1.3 options per matchable member, and no feasible pair at all on 34–76% of days. Most introductions are therefore effectively forced. Whether an introduction then qualifies depends mainly on two things no observable field records: how well the two members suit each other in person (pair compatibility, or "chemistry"), and chance.
Evidence. We placed every policy lever on a common, low-variance scale: the expected number of qualifying outcomes given the introductions actually made, computed offline from the simulator's ground truth on public seeds. It narrows paired confidence intervals roughly fifteen-fold. Across 20–40 paired seeds per scenario family, levers available to a policy have negligible effect. Pure waiting, learned scoring and value-based clarification each changed expected MSMI by at most about 0.005 per 100. Perfect information adds little. Compatibility and chance dominate. An offline foresight benchmark added 0.10–0.23 realised MSMI per 100.
Recommended design
- Always match. Introduce every feasible pair promptly, using whole-pool maximum-weight matching.
- Never produce an invalid episode.
- Aim clarification at unlocking pairs.
- Keep a choice-aware learner on probation.
1. Problem formulation
1.1 Objective
The ranked score is MSMI per 100 arrived members, averaged equally over six scenario families (PS 10). An introduction qualifies only if three conditions all hold:
- both members reply Yes within 7 days;
- a date takes place within 30 days of assignment;
- both members report a second-meeting Yes within 3 days of the date.
For one episode:
A policy changes the first term only by creating feasible pairs (clarification) or by holding members back (waiting). It changes the second only by choosing which feasible pairs to introduce (ranking and allocation). Coverage, mutual acceptances, clarification cost and inference time break exact ties only.
1.2 Structure of the problem
- Two-sided. Both members must independently agree. Every answer is a decision by a member with their own preferences, and an introduction makes both members unavailable for 8 days in the public simulator.
- Non-bipartite. Of the 2,000 supplied members, 148 are non-binary and 414 accept more than one gender, so allocation must operate on a general graph.
- Rare outcomes. About one qualifying pair arises per 200-member episode.
- Scarce, reusable participants. Each member can have at most one open introduction.
- Feasibility gated by hard answers. At most four members can be fully clarified per day (12 units, 3 per bundle). In the kit's published reference runs, removing clarification reduces coverage from 0.41 to 0.17.
- Selective, delayed labels. Outcomes exist only for introduced pairs, and second-meeting answers arrive weeks after the decision.
1.3 Terminology
| Term | Meaning in this note |
|---|---|
| Feasible pair | A pair for which eligibility(a, b) returns feasible: every hard answer is known and satisfied in both directions |
| Matchable member | An available member with at least one feasible partner on a given day; "options" are that member's feasible partners |
| Unservable member | A member who has declined at least one hard-constraint question and so can never be introduced; always kept in coverage denominators |
| Supplied greedy | The kit's baseline allocation. It introduces feasible pairs in descending order of the number of soft fields on which the two members' known values agree, without overlap |
| List-order asks | The kit's baseline clarification. It requests constraint bundles from the first available members who are missing a hard answer and have declined none, within budget |
| Realised MSMI | The MSMI the simulator actually produced in an episode |
| Expected MSMI | Research metric. The sum, over the introductions a policy made, of the ground-truth probability that each one qualifies (Section 2.2); computed only in experiments on public seeds; never a policy input and never an admission criterion |
| Benchmark ranker | Offline evaluation tool. A ranker given simulator ground truth in experiments on public seeds; it bounds what ranking with that information could add. It is never a candidate policy |
| Pair compatibility | The part of acceptance that two members of a pair share and that no field records; in the simulator, a random pair effect |
| Acceptance tendency | A member's general propensity to say Yes, independent of the partner |
| Choice-aware | A component whose output can matter only when a member has two or more feasible partners |
| Lab | A numbered experiment on declared seeds; all are listed in Appendix A |
2. Empirical findings
All results were produced on the public simulator, run in-process with PYTHONHASHSEED=0. They are recorded in committed result files: 1,330 policy records and 60 graph records, with no duplicate keys and no funnel violations. Comparisons are paired on identical worlds, with 95% bootstrap intervals over seeds. No policy parameter was tuned on a seed used to report a comparison. Provenance is given in Section 9.
The public families match the assessed ones. Under PS 10, each assessed episode has 200 members, with 20 private seeds in each of the same six scenario families, and "the public variants let teams test the same categories without exposing assessed episodes".
2.1 The supply of feasible pairs is thin
Logged daily over the 60 decision days under the supplied baseline (seeds 1101–1120):
| Family | Feasible pairs per day | Days with none | Options per matchable member | Available members with an option |
|---|---|---|---|---|
| Development | 2.88 (1.58–4.32) | 34% | 1.29 | 3% (2–4%) |
| Cold start | 2.21 (1.07–4.27) | 41% | 1.28 | 2% (1–3%) |
| Sparse | 0.43 (0.22–0.77) | 76% | 1.07 | under 1% |
In development a median of 160 members are available on a given day, and 35–120 have every hard answer known. Yet only 0–36 feasible pairs exist. A declined hard field makes 33% of members unservable in development, 41% in cold start and 32% in sparse. These members are reported as a separate group and never removed from coverage. Because most members have at most one option at a time, alternative policies largely make the same introductions: every ranking variant tested changed only 8–12% of introductions relative to greedy.
2.2 An expected-outcome estimator
Realised MSMI is too noisy to rank policies at feasible sample sizes. With 15–20 seeds, a single qualifying pair moves a family mean by 0.025–0.033 (0.5 per 100 in one 200-member episode), and paired intervals span about ±0.2.
To measure the environment precisely, we therefore also compute, for each episode, the expected number of qualifying outcomes given the introductions the policy actually made. It is the sum over those introductions of the ground-truth probability that each qualifies. Each probability is computed from both members' simulated traits and complete profiles, with pair compatibility and all later random outcomes averaged out. The formula mirrors the public simulator's acceptance and second-meeting rules. Because it uses simulator ground truth, the estimator is an offline research instrument: it is never a policy input and never decides which component enters the submitted policy (Section 6). Admission decisions and final results use realised metrics from the supplied evaluator.
Per pair, the formula matches 200,000 simulated draws within Monte Carlo error.
Calibration. Over 525 development episodes the estimator predicts 481 qualifying outcomes against 480 observed. In the other families tested, cold start included, observed counts ran 12–37% above expected on the reused seed sets. This gap is not yet explained. A level error common to the policies being compared would scale paired differences without changing their sign. We therefore treat cold-start differences as indicative, and we base no claim on the remaining four families until the gap is explained.
Precision. Paired intervals narrow from about ±0.2 to about ±0.01–0.02 per 100.
2.3 The effect of each policy lever
Clarification
- Value-based asks. Value-based hard-constraint asks reveal more feasible pairs than list-order asks: +0.45 and +0.49 per day, with wins/ties/losses of 19/0/1 and 17/2/1. But they add only +0.005 expected MSMI ([−0.006, +0.017] in development, [−0.007, +0.017] in cold start), a quarter to two-fifths of what perfect answers add.
- Perfect answers. Free, perfect answers to every non-declined hard question add +0.019 [+0.008, +0.031] in development and +0.013 [+0.002, +0.024] in cold start. That is about 3–4% and the clearest effect measured, while coverage moves by at most 0.003. The additional pairs are mostly second options for members who would be served anyway.
Waiting
- Protected reserve. A member's only option is never postponed, so the protected reserve changed no decision.
- Pure waiting. Without protections, waiting changed 7% of introductions and moved expected MSMI by +0.003 and −0.002. It also left 0.4 more members unserved per development episode (+0.40 [+0.05, +0.75]).
Ranking with perfect information (Lab 13, seeds 1161–1180)
Ranking each day's feasible pairs greedily by the ground-truth probability of success adds at most about 0.013 expected MSMI per 100, whatever the benchmark knows: true reply rates; true member traits (reply rate, acceptance tendency, second-meeting tendency); complete true profiles; or all of these combined. All intervals but one include zero, and upper bounds reach 0.031 (7%). These figures bound myopic ranking only: the benchmarks know each day's pairs perfectly but do not plan across days.
Ranking with learned estimates
- Lab 13 learners. Learned soft-field scores, learned reply rates (posterior mean or Thompson sampling) and learned acceptance tendencies all fall within ±0.004 of greedy, and every interval includes zero. None detectably captures the benchmark headroom.
- Lab 12 learned field score. It moved expected MSMI by +0.002 and −0.004. Its first seed block showed a realised loss in development (−0.20 [−0.35, −0.05]) that did not replicate, and it reduced coverage by 0.002 in cold start ([−0.004, −0.000]) (C4).
2.4 Pair compatibility and chance
Most introductions end at the first step (Figure 2). In every family, 83–86% end in no response or a No, and only 0.9–1.6% qualify. Late dates are negligible even in the delayed family (0.1–0.2% of introductions).
Foresight. An offline foresight benchmark is given, for each candidate introduction on a public seed, the outcome the simulator would produce. It raises realised MSMI by +0.10 [−0.18, +0.43] per 100 in development and +0.23 [+0.03, +0.45] in cold start. For rankers without that foresight, realised and expected gains coincide on average wherever the estimator is calibrated. Foresight is therefore worth roughly eight to twenty times the gain from perfect knowledge of members and profiles. The comparison is approximate: the development interval includes zero, and in cold start the expected values run below the observed counts.
Chance without a benchmark. The same greedy policy scored 0.70 realised MSMI per 100 on development seeds 1101–1120 against 0.46 expected, and 0.55 against 0.44 on seeds 1161–1180. Consistent with this, soft-field agreement explains little of who accepts (held-out AUC about 0.57): a strong match on paper is often not a match in person. What remains is pair compatibility and chance, and no observable field captures either.
2.5 What feedback can teach
Labels arrive only for introduced pairs, and pairs never repeat. Knowledge about one pair's compatibility is therefore never reused. Only knowledge about members (reply rate, acceptance tendency) and about shared structure (field weights, acceptance drift) carries forward.
Shared structure is learnable at scale
- Too few labels. With 1,049 labels from 8 rollouts, no field weight was trustworthy. The largest flipped sign between halves, and one weight that passed was on a field the simulator's acceptance rule ignores.
- Enough labels. With 130 fresh rollouts (17,539 labels; whole-episode bootstrap), exactly the four fields the rule uses passed: relationship goal, pace, conversations (+0.25) and lifestyle (+0.18). The fitted weights were close to values written down before the run: relationship goal +0.49 and −0.50 against about ±0.48, and pace 0.35 against 0.36.
- Held-out ranking. On 20 held-out worlds the model ranks acceptances better than greedy's count of agreeing fields: AUC 0.574 [0.560, 0.590] against 0.523 [0.504, 0.544].
Individual members can hardly be learned within an episode. A served member receives on average 2.32 introductions per development episode, and 41% receive only one. At decision time, a member's own estimate rests on about one prior observation.
Fast and slow labels differ. Replies arrive within 7 days and can be used within the episode. Date and second-meeting outcomes arrive weeks later, so those stages rely mainly on an offline prior, refined slowly online.
The value of learning is bounded by the benchmark gap. Learning can recover at most what perfect information would add, and Section 2.3 shows that is small. Exploration therefore has little to inform. It pays only where a member has a genuine choice, and it should target shared parameters rather than individual members.
2.6 Implications for design
- Structure caps outcomes. There are few feasible pairs, a fixed unavailability period after each introduction, and a large unservable group.
- Policy choices add little within that cap. They move expected MSMI by a few percent: under 10% even at upper interval bounds and with perfect information.
- Realised MSMI cannot rank policies at 20 seeds. It is dominated by pair compatibility and chance; expected-outcome comparisons can measure their differences.
- What a policy can still secure: validity in every episode, since a single invalid action disqualifies the entry; the small measurable gain from better hard-constraint information; robustness across all six families.
The tie-breakers (coverage, mutual acceptances, clarification cost, runtime) apply only to exact unrounded ties, so no MSMI is traded for them.
3. Policy design
The design follows from Section 2. The policy runs twice per simulated day and rebuilds its view of the world from the history carried in each request. The ask call selects clarifications and the match call selects introductions (Figure 3). Every output passes a validator. Input handling, modelling and allocation are separate modules, as PS 15 requires.
Three commitments follow directly from the evidence:
- Always match. Every pair selected by the matching is introduced the same day; waiting is off.
- Clarification aimed at unlocking pairs. Hard-constraint answers carry the clearest measured gain (perfect answers: +3–4%), and clarification cost matters only on exact ties. The value-based rule in Section 3.2 is the current candidate. Like every component, it enters the submitted policy only under the decision rule in Section 6, with list-order asks as the fallback.
- Pooled learning. A pair is never seen twice and a member is introduced about twice on average. Learning is therefore pooled across members, and exploration targets shared parameters.
Default policy and candidate components
The policy is built as a fixed core plus candidate components:
| Layer | Contents | Status |
|---|---|---|
| Core (always on) | Validity layer with fallback chain (3.1); eligibility()-based feasibility (3.2); whole-pool blossom matching on the baseline score (3.4); no waiting | Submitted as is; blossom kept provisionally pending its no-loss check (H4) |
| Clarification candidate | Value-based hard-constraint asks, then a better-targeted rule (3.2) | Replaces list-order asks only if admitted (H2) |
| Learning candidates | Funnel scorer with pooled member terms (3.3); online updates and Thompson sampling over shared weights (3.5); soft-field asks and the planning bonus | Each added only if admitted (H3) |
If no candidate meets the decision rule in Section 6, the submitted policy is the core: list-order asks, blossom matching on the baseline score and the validity layer. That is the supplied greedy policy with whole-pool allocation and stronger safeguards. Section 2 implies this core already captures most of what any policy can achieve here. Candidates are stacked on it one at a time (steps L1–L5 in Section 6), and each must earn its place on the supplied evaluator's metrics.
3.1 Validity and fallback (Phase 0)
A single invalid action in any of the 120 assessed episodes makes the entry ineligible. Validity therefore receives the most engineering: every output is re-checked on the refreshed state before it leaves the process.
Pairs
eligibility(a, b)returns feasible.- The two members are distinct, available and in the same pool.
- Neither has an outstanding introduction. This is checked explicitly, not only through the availability flag.
- The pair has not been introduced this episode.
Asks
- No member appears twice in the batch.
- The member is available.
- The field is constraints or a valid soft field.
- There is no duplicate (member, field).
- Total cost stays within
ask_budget_remaining. - Members whose relevant fields are declined are never asked.
Fallback. The chain runs from the full policy to the supplied greedy baseline, then to an empty list, with a wall-clock switch at 7 s inside the 10 s limit. Only protocol JSON is written to stdout.
State. The policy refits from the request's history on every call. Memory holds only a model version tag and an RNG counter, far below the 1 MiB cap, so loss of the memory object cannot corrupt a decision.
Packaging. The starter Dockerfile carries pinned dependencies (licences included), and the offline prior is shipped as an inference asset. Every Round 2 build is evaluated in container mode before submission.
Stress tests. These cover an empty population, an empty feasible graph, every member busy, a budget of 0–2 units, every hard field declined, and a 200-member day-0 burst, all under container limits.
3.2 Feasibility and clarification (Phase 1)
Feasibility is delegated to the supplied eligibility(a, b) and is never reimplemented or relaxed. Pairs fall into three classes:
- infeasible: a known failure in either direction;
- needs_clarification: no known failure, but a missing hard answer;
- feasible: every hard answer known and satisfied both ways. Only these pairs can be scored.
Declined answers are never re-asked or inferred. On day 0 of one development world, 55 of 137 arrived members had every hard answer known, and 41 had declined at least one.
Constraint asks (3 units). Each available, unresolved member i with no declined hard field receives a priority
Here K(i) is the set of fully known members with no known conflict with i, Q(i) is the set of other unresolved members with no known conflict, and V is the Phase 2 edge value.
Public fields rule partners out early. Age, gender and zone are always public, so a partner is ruled out before any question whenever either member's stated preferences already exclude the other's age, gender or zone.
Asking order. Members with no possible partner score zero and are never asked. The top members are asked while budget allows, with ties broken by earliest arrival.
Prototype weights. The tested prototype uses V̂=1, β=0.5 and γ=0.2, set by hand. A fully known, available partner counts 1.5, a fully known but busy one 0.5, and an unresolved one 0.2.
This rule reveals more feasible pairs than list-order asks. On point estimates, however, it captures only a quarter to two-fifths of what perfect answers add (+0.005 of +0.019 and +0.013, with intervals including zero; Section 2.3). Because clarification cost matters only on exact ties, budget is not conserved for its own sake; only asks that cannot unlock any pair are skipped. Round 2 tests targeting that closes more of the gap (H2), for example: favouring members whose answer would give someone a first feasible option; asking newcomers on their arrival day.
Soft-field asks (1 unit). Remaining units are spent only if an answer could change the day's decision (value of information; Howard, 1966). This addresses the problem statement's warning that a question may consume budget without changing anything (PS 1). In the ask call the policy computes a tentative matching. It then asks the unknown soft field with the largest learned weight, and only for members who face a choice between partners that the answer could reverse. Otherwise the unit is not spent.
3.3 Funnel scorer (Phase 2)
The edge value V(A,B) estimates the probability that introducing A and B today ends in MSMI. It multiplies one small model per stage, each with its own target and observation window (PS 3):
- a directional Yes recorded by the deadline;
- a date within 30 days of assignment;
- a second-meeting Yes within 3 days of the date.
| Term | Estimates | Learned from | Form |
|---|---|---|---|
| ρ | P(member responds by the deadline) | Matured responses | Beta-Binomial per member, shrunk to the pool mean |
| σ(Θ·x) | P(A says Yes to B, given A responded) | Non-null responses | Bayesian logistic regression, shared weights |
| p̂_date | P(date within 30 days, given mutual Yes) | Date events and their days | Pool-level Beta rate |
| p′ | P(member answers the second-meeting question within 3 days) | Matured second-meeting events | Beta-Binomial per member |
| σ(φ·z) | P(A wants a second meeting, given a date) | Non-null second-meeting answers | Bayesian logistic regression, shared weights |
Features are directional: A's agreement with B on each soft field; A's own values crossed with agreement; an "unknown" indicator per field (missing data is never treated as a mismatch); a separate "declined" indicator; a small per-member intercept, shrunk strongly towards zero. Asymmetry comes from the separate directions, the A-side features and the per-member terms.
The scorer is choice-aware. A score changes a decision only when a member has two or more feasible partners. For a member with one option, the matching introduces that pair whatever its score. With 1.3 options per matchable member on average, at most three in ten can have a second option on a given day. In line with this, any ranking changes only 8–12% of introductions, which is why ranking moves outcomes so little here. The scorer is retained because it is the component that can exploit choice where choice exists: days with several feasible pairs, and the shifted families. It enters the submitted policy only under the decision rule in Section 6.
Calibration and independence. V is on a probability scale, which maximum-weight matching needs in order to add values across pairs. It is not yet calibrated; we will report reliability curves on held-out pools for directional acceptance, mutual acceptance and MSMI (PS 10). Multiplying the two directions assumes they are independent given the features. Unobserved pair compatibility makes them positively correlated, so the product understates mutual acceptance, and not by the same factor for every pair. We measure this by comparing the product with observed mutual-Yes rates per score decile.
Priors. Θ starts from a prior fitted offline on at least 64 rollouts, the size from which no ignored field passed (Appendix A, Lab 7c). φ has far fewer labels, because about one introduction in eight reaches a date. Its prior therefore uses more rollouts and stronger shrinkage, checked the same way.
3.4 Allocation without waiting (Phase 3)
Each day the policy solves one maximum-weight matching over the feasible graph of available members, using Edmonds' blossom algorithm (networkx, pinned, BSD licence), which handles non-bipartite pools. It resolves the problem statement's A-D/B-C case correctly. Greedy takes the 0.90 edge and is left with 0.05; matching selects the two 0.65 edges (1.30 against 0.95). Blossom is retained because its matched value is never lower than greedy's on the same scores. On outcomes it showed no detectable difference from greedy (C2), changing about 8% of introductions.
Waiting is off. Lab 12 tested a reserve that skips weak pairs, applied to the learned score P(A says Yes) × P(B says Yes):
With protections (no reserve for members never introduced, and an only option never postponed), the reserve never changed a decision, because almost every pair is someone's only option. Without protections, it showed no replicated gain and reduced coverage in development (Section 2.3). The default is therefore τ₀ = 0. This is consistent with Akbarpour, Li & Oveis Gharan (2020), who find prompt matching close to optimal when departures cannot be foreseen. If a reserve is ever enabled, an only option is never postponed. That is a stated values choice, and we will report its MSMI cost.
Members with a pending introduction. Each day's matching sees only free members. For a member waiting on a pending introduction, a planning bonus favours today's pairs that agree with a matching over all remaining allowed pairs. In that matching, each edge touching a busy member is weighted by the estimated probability that the pending introduction does not end in mutual interest. Future arrivals are not planned for, since they are not observable.
3.5 Learning and exploration (Phases 4–5)
Time-correct training. For an introduction assigned on day d, a feature is used only if its field_observed_day ≤ d; otherwise it is treated as unknown. Outcomes exist only for introduced pairs (selective labels; Lakkaraju et al., 2017), and a pair never introduced is never treated as a failure. Delayed and censored outcomes are handled per stage:
| Situation | Treatment |
|---|---|
| Response window open | Pending; contributes nothing |
| Deadline passed, no response | Counts against ρ; never a No (PS 8) |
| Yes or No received | Acceptance label for that direction only |
| Mutual Yes, no date yet | Pending until 30 days after assignment; no date by then is a negative label for p̂_date |
| Date held, second-meeting window open | Pending |
| Late second-meeting Yes | Counts against p′; still a positive label for φ |
| Pair never introduced | No label |
Online updates. Each call refits Θ, φ and the Beta rates from the full history. The offline fit serves as a Gaussian prior, via a Laplace approximation over a few dozen shared weights. Parameters move at different speeds: the pool intercept moves fastest, to absorb a mid-episode drop in acceptance; field weights move more slowly, to absorb shifted outcome weights; older evidence is down-weighted by a factor λ per day (Garivier & Moulines, 2011), with λ=1 as the ablation.
Exploration targets shared parameters. A pair's compatibility is never reused, so exploring a pair for its own sake teaches nothing. What carries over is shared: the field weights Θ and φ, the pool's acceptance level and the date rate. Each day the policy draws one Θ, φ sample from the posterior and uses the sampled values in Phase 3 (Thompson sampling; Agrawal & Goyal, 2013).
- Where the noise falls. The sampling noise is largest where the shared weights are uncertain and shrinks as evidence accumulates.
- Bounded cost. It changes a decision only where a member has a choice, so its cost is bounded by the same small headroom as ranking.
- Reproducible. The draw is seeded from the declared inference seed and the day.
- Constraints untouched. Exploration ranks only pairs that have already passed
eligibility(), so it can never touch a hard constraint.
Cold start, uneven history and explanations (PS 9). Newcomers start at pool-level estimates. Per-member terms are shrunk towards the pool mean, with a prior worth 4 observations in our preliminary runs that will be tuned on the validation pools for the build, so no member is judged on one outcome. With about two introductions per member, the pool estimate carries most of the weight. Mismatches between predictions and newly matured outcomes widen the posterior, which increases exploration.
Every pair and ask carries a diagnostics record: the checks passed, the fields still unknown and the value terms used. The record keeps three sources of uncertainty apart: model uncertainty (posterior spread); missing data (unknown or declined fields); stochastic outcomes (responses not yet matured). It reports only observed fields, never a latent simulator value.
4. Proposed hypotheses and testing framework for Round 2
Each hypothesis has a pre-fixed measure. Each component hypothesis (H2–H5) also has an ablation that switches off exactly that component.
| Hypothesis | Statement | Status after Round 1 | Round 2 test |
|---|---|---|---|
| H1 | In these worlds, policy choices move expected MSMI by a few percent at most; pair compatibility and chance dominate | Supported in development. Consistent in cold start, where the estimator is less well calibrated (Labs 9, 11, 12, 13; Sections 2.3–2.4) | Repeat the information benchmarks (all except foresight) in all six families. H1 fails in a family if any benchmark adds more than 10% of greedy's expected MSMI there |
| H2 | Better-targeted hard asks close more of the gap to perfect answers and raise MSMI over list-order asks | Open. Perfect answers add 3–4% (interval excludes zero). Value-based asks capture a quarter to two-fifths on point estimates, with intervals including zero (Section 2.3) | Mutual acceptances and realised MSMI against list-order asks, with a replication block (admission); expected MSMI against list-order asks and perfect answers (diagnostic) |
| H3 | A choice-aware learner (pooled member model, shared field weights, soft asks where a member has a choice) beats greedy in at least one public family, without loss in any | It recovers the true structure and predicts better (AUC +0.051), but shows no detectable gain in the thin public worlds (Sections 2.3, 2.5) | Mutual acceptances and realised MSMI in all six families, shift and drift first (admission); expected MSMI (diagnostic) |
| H4 | Maximum-weight matching causes no loss in MSMI or mutual acceptances against greedy on identical scores (its matched value is higher by construction) | No detectable difference on outcomes; 8% of introductions differ (C2) | Realised MSMI and mutual acceptances against greedy on identical scores (admission); expected MSMI (diagnostic) |
| H5 | A reserve that skips weak pairs beats always matching | Not supported. Inert with protections; without them, no replicated gain and a coverage cost (Section 2.3) | Closed; reopened only if H1 fails in some family |
5. Responses to the questions in PS 1–2
Each row gives the policy's behaviour and its basis. The basis is one of four kinds: a rule in the problem statement (PS), a measurement in Section 2, a published result, or a hypothesis with the experiment that tests it. Every requirement in PS 1, 3–12, 14 and 15 is addressed in Appendix B.
| Question | Policy behaviour | Basis | Check |
|---|---|---|---|
| B has not answered a decisive question | The pair is never proposed. B becomes an ask candidate, ranked by the pairs B's answer could unlock; declined answers are never re-asked | PS 6–7. Measured (2.3): perfect answers add 3–4% expected MSMI; value-based asks reveal more feasible pairs and capture a quarter to two-fifths of that | Better-targeted asks (H2) |
| D arrives tomorrow | D joins the graph once D's hard answers are known; others are not held back | PS 1. Akbarpour et al. (2020). Measured (2.1): about 1.3 options per matchable member; (2.3): no gain from waiting | First-introduction waits for late arrivals |
| A is waiting for a response | A is never proposed. A's other options enter the planning matching, weighted by the probability that A's pending introduction fails | PS 7. Planning bonus untested | Bonus on/off |
| Wait for a better opportunity? | No: always match. An only option is never postponed | PS 1, 6. Akbarpour et al. (2020). Measured (2.3): the protected reserve never changed a decision; pure waiting showed no replicated gain and reduced coverage in development | H5, closed unless H1 fails in some family |
| Is another question worth asking? | Hard answers: the full budget, on answers that unlock pairs. Soft answers: only if an answer could change a decision for a member with a choice | PS 1. Howard (1966). Measured (2.3) for hard asks; soft asks untested | H2, H3 |
| One introduction changes everyone's options | Maximum-weight matching over the whole pool | PS 2 (1.30 vs 0.95). Measured (C2): no detectable difference from greedy on outcomes | Matched value on identical scores (H4) |
| Missing, late or absent responses | Pending outcomes carry no label; no response is never a No; a late Yes is kept but does not count | PS 8. Lakkaraju et al. (2017); Joulani et al. (2013) | Censoring table (3.5) |
| Does relocation widen zones? | No; relocate is a soft feature only | PS 5 | Validator rechecks eligibility |
| Can past logs be reweighted? | No inverse-propensity claims; complete policies are compared in paired simulator runs | PS 9 (propensities null) | All results are paired runs |
| Members with no feasible candidate | Kept unmatched, reported as an unservable group, never removed from coverage | PS 7. Measured (2.1): 32–41% have a declined hard field | Coverage with and without the group |
6. Evaluation plan
Scope. Every comparison runs complete policies on identical seeds in all six public families: development, sparse, cold_start, delayed, shift and drift. They share the generator and population size (200) with the private assessment, so no other worlds are tested.
Build sequence. Components are added one at a time:
| Step | Policy | Adds | Tests |
|---|---|---|---|
| B1–B3 | Supplied greedy, no-clarification, random-feasible | Required baselines | — |
| L1 | List-order asks + blossom on the baseline score | Global allocation | H4 |
| L2 | L1 + value-based asks, then the better-targeted rule | Targeted clarification | H2 |
| L3 | L2 + offline-trained funnel scorer with pooled member terms, frozen | Learned ranking | H3 |
| L4 | L3 + online updates + Thompson sampling over shared weights | Adaptation, exploration | H3 under shift and drift |
| L5 | L4 + soft-field asks where a member has a choice | Targeted soft information | H3 |
The Lab 13 benchmark ceilings are re-run first, in every family (H1). They establish how much any ranking could add before effort is spent trying to capture it.
Measures. Admission decisions use only metrics from the supplied evaluator: mutual acceptances as the primary development signal, because they have about ten to sixteen times as many events as MSMI, and realised MSMI and coverage as no-loss checks. Expected MSMI (Section 2.2) is reported alongside as a diagnostic of effect size and is never an admission criterion or a policy input. Before relying on it outside development, we will explain the 12–37% gap between observed and expected counts in the other families, cold start included (Section 7).
Ablations. From the full policy we remove one component at a time, including the planning bonus, soft-field asks, per-member terms and discounting. We also run three swaps: Thompson sampling for the posterior mean; blossom for greedy, on identical scores; λ=1 against λ<1 on drift and shift.
Decision rule, identical for every component
A component enters the submitted policy only if all three conditions hold:
- Benefit. It shows a benefit on a measure fixed in advance: mutual acceptances or realised MSMI from the supplied evaluator, on fresh seeds, replicated on a second seed block, in at least one public family. For allocation, the criterion is no loss on identical scores.
- No loss. It shows no detected loss in realised MSMI, mutual acceptances or coverage in any public family.
- Validity and runtime. It passes the validity and runtime checks.
Otherwise the simpler version is kept. Applied today, the rule gives these outcomes:
- Waiting stays off.
- Blossom matching is kept provisionally. It maximises matched value by construction, but its outcome no-loss check covers one seed block in two families (C2) and will be completed under H4.
- Value-based asks and the learned scorer have shown benefits only on proxies (feasible pairs, held-out AUC), and the Lab 12 learned score already shows a borderline coverage loss in cold start. Neither enters unless Round 2 meets the rule.
- No measure computed from simulator ground truth enters this rule.
Statistical power. On realised MSMI, a 3% effect (about 0.013 per 100) would need several thousand seeds per family to detect. The rule will therefore usually keep the simpler component, which is the outcome the thesis predicts. Expected MSMI, with paired intervals of about ±0.01–0.02 per 100 at 20 seeds (Appendix C5–C6), shows how large an effect is; forty seeds per family narrow those intervals by about √2.
Seeds and data splits
- Training. Offline priors are fitted on rollouts of the six official training pools (seeds 20261000–20261005) and of declared public seeds (3001–3130 so far). Training rows contain only what the policy could observe at each decision.
- Logging policies. The Round 1 rollouts used a random-feasible logging policy. Round 2 adds greedy and our own policy as logging policies, so that rare pair types are covered.
- Validation. Prior strength and other settings are tuned on the two validation pools (20261006–20261007).
- Reporting. The development-test pools (20261008–20261009) and fresh public seeds are used only for reporting, so populations never cross splits.
- Public seeds. Seeds up to 1180 are spent. Round 2 starts at 1181, with at least 20 seeds per family, all declared in the README.
Reporting. For each family we report: the mean with a 95% bootstrap interval; the paired per-seed difference against greedy, with wins/ties/losses; the share of introductions that actually differ (a tie with almost no differing introductions means the change never reached a decision).
Every run must satisfy assignments ≥ mutual acceptances ≥ dates ≥ MSMI. We report assignments, mutual acceptances, dates, MSMI and expected MSMI, and coverage with and without unservable members. We also report first-introduction waiting times with the unserved count, clarification cost, missing feedback, per-call runtime in the container, and reliability curves. A full 60-day in-process episode with daily blossom matching took 3–5 s; per-call time of the full policy, including start-up and refitting, has not yet been measured.
7. Expected failure modes
| Failure | Where | Mitigation | Evidence we will report |
|---|---|---|---|
| An invalid action or timeout | Any of the 120 assessed episodes | Validator, time guard, fallback chain | Container stress tests; zero invalid public episodes |
| Declined hard fields make members unmatchable | Development, cold start and sparse (measured); 32–41% of members | None by design; never inferred | Coverage with and without the unservable group |
| Few feasible edges | sparse | Asks skip members with no zone-compatible partner | Edge counts and wasted asks (perfect answers add only 0.14 pairs/day) |
| Weak prior, many unknowns | cold_start, newcomers | Offline prior; pooled estimates | Waiting time to first introduction for late arrivals |
| Dates miss the 30-day window | delayed | p̂_date learned online | Share of late dates (so far 0.1–0.2% of introductions) |
| Learned weights wrong in an unseen world | shift, drift | Online updates; prior strength tuned on held-out pools | Frozen vs online gap (the development model's AUC lead falls from +0.051 to +0.035 on shift) |
| Acceptance drops mid-episode | drift | Fast-moving pool intercept; discounting | Acceptance before and after the drop |
| A learner that helps one family hurts another | Any family | No-loss clause of the decision rule | Expected MSMI against greedy in every family |
| Expected MSMI misjudges a family | Families other than development, cold start included | Admission uses realised evaluator metrics only; expected MSMI is descriptive | Per-family calibration of expected against observed |
| Independence assumption mis-ranks pairs | Pairs with strong shared compatibility | Decile check of the product | Product vs observed mutual-Yes rate |
| Lock-in on per-member estimates | Early non-responders | Shrinkage; Thompson sampling | Exploration ablation on held-out seeds |
8. Implications for a matchmaking service
The findings concern an invented simulator, but they indicate where a live service should and should not invest. Each implication is a hypothesis to validate on authorised data under human review (PS 15).
- Ranking sophistication yields little while choice is scarce. Soft-profile agreement predicts acceptance only weakly (held-out AUC about 0.57). Even perfect ranking information added at most about 3% on point estimates. Investment in ranking pays off only once members routinely have several feasible partners.
- Throughput matters more than precision. About 1% of introductions qualify, so outcomes scale with the number of timely, valid introductions. Holding members back for a better partner produced no replicated gain and, in development, reduced coverage.
- Onboarding completeness is the largest controllable lever. Complete hard-constraint answers were the clearest measured gain. Meanwhile 32–41% of members declined at least one hard question and could never be matched. Questions designed to be answered widen the servable population directly.
- Non-response is lost capacity. 38–42% of introductions end without a reply, and each one makes both members unavailable for eight days. Reply prompts, shorter response windows or early release after silence would recover that capacity.
- Measuring compatibility early is the largest opportunity. Foresight of which pairs would succeed was worth roughly eight to twenty times complete profile knowledge. A brief call, a structured first conversation or systematic post-date feedback would turn part of what now appears as chance into usable signal.
- Product experiments need variance-aware metrics. At pilot scale, raw outcome counts are dominated by chance and produce false positives; our own first-block results did exactly that. Changes should be judged on expected-outcome or funnel-stage metrics, with replication, before rollout.
9. Limitations, use of the simulator source, related work and provenance
Limitations
- Synthetic outcomes. All results come from an invented simulator and say nothing about real relationships; V is not a real-world probability.
- Myopic ceilings. The benchmark ceilings rank each day's pairs perfectly but do not plan across days. They bound ranking, not planning, and planning was tested only through waiting (Lab 12).
- Coverage of families. The ceilings and the expected-outcome estimator cover development and cold start so far.
- Selective labels. Our Round 1 offline analyses use labels from random-feasible rollouts, whose logging policy is known. A deployed policy chooses its own pairs, so its labels are selective (PS 9), and those offline numbers may not carry over.
- Product use. Later product use would require the kit's adapter boundary (
docs/INTEGRATION.md), validation on authorised inputs, current constraint checks and human review (PS 15).
Use of the simulator source
The problem statement treats the public simulator as an experimental tool, not a source of policy inputs (PS 11), and the FAQ permits inspecting its source "for reproducibility and experiments".
- What we read. We read
kit.pyfor the acceptance and second-meeting rules, the unavailability period after an introduction, the day drift begins and how the delayed family moves dates. - What it shaped. That reading shaped which analyses we ran and how we interpreted them: the weight check in Section 2.5 and the scarcity explanation in Section 2.1.
- Offline evaluation tools. It also enabled two evaluation tools: the expected-MSMI estimator and the benchmark rankers. Like the supplied evaluator, both use simulator ground truth, and only in offline experiments on public seeds. They live in scripts named
*_ANALYSIS_ONLY.py, which no policy imports. - The policy itself. The policy sets no constant, feature or weight from the source. It uses only observable JSON and learns every rate from feedback.
- Compliance. PS 11 defines the policy's permitted inputs. The FAQ prohibits reconstructing hidden state or random outcomes "inside a policy"; the submitted policy does neither. Every simulator experiment uses simulator ground truth, as the supplied evaluator does when it computes realised MSMI; the expected-MSMI estimator uses the same information with less noise, on public seeds only. The kit's README likewise says: "Do not use seed reconstruction inside an evaluated policy." The ground-truth tools describe the environment and size experiments only. They never decide which component enters the submitted policy, which is decided on the supplied evaluator's realised metrics alone (Section 6). No ground-truth value or benchmark output reaches the submitted policy, which reads only observable JSON, released feedback and its own memory. Every file we consulted is in the public participant release; no private world, seed or organiser workspace was accessed.
Related work
The setting combines several strands: exploration when both sides must agree (Das & Kamenica, 2005); learning while matching a market (Liu, Mania & Jordan, 2020); selecting a set of pairs each round (Chen, Wang & Yuan, 2013); Thompson sampling with linear features (Agrawal & Goyal, 2013); delayed feedback (Joulani, György & Szepesvári, 2013); reciprocal recommendation (Pizzato et al., 2010). Akbarpour, Li & Oveis Gharan (2020) show that in dynamic matching markets, prompt matching is close to optimal when departures cannot be foreseen, and that information about imminent departures is what makes waiting valuable. Our measurements agree for this simulator, although their random-graph setting differs. Several references came from the 6 October workshop on exploration and online learning (J. Liu, University of Edinburgh).
Provenance
The design is the team's. AI assistants were used and are acknowledged: Claude (Anthropic) helped draft this note, write the experiment scripts and run preliminary experiments. Gemini (Google), DeepSeek and Grok (xAI) reviewed drafts and mentored the team while experiments were run. How the results were produced:
- Reproduction. The team reproduced the preliminary experiments with the same scripts and seeds, and ran the new ones.
- Labs 12 and 13. These were run by Claude on the team's machine at the team's request, with the committed scripts. Lab 12's first 89 episodes matched an earlier preview run exactly.
- Corrections. Where an earlier number differed by one or two events, the team's number replaces it; the earlier number came from an earlier version of one script, and repeated runs of the current scripts give identical records. An earlier pilot whose seeds could not be identified was dropped.
The runtime dependency is networkx (pinned, BSD licence). No external data, network access or GPU is used at inference.
References
Agrawal, S. & Goyal, N. (2013). Thompson sampling for contextual bandits with linear payoffs. ICML.
Akbarpour, M., Li, S. & Oveis Gharan, S. (2020). Thickness and information in dynamic matching markets. Journal of Political Economy.
Chen, W., Wang, Y. & Yuan, Y. (2013). Combinatorial multi-armed bandit: general framework and applications. ICML.
Das, S. & Kamenica, E. (2005). Two-sided bandits and the dating market. IJCAI.
Edmonds, J. (1965). Paths, trees, and flowers. Canadian Journal of Mathematics.
Garivier, A. & Moulines, E. (2011). On upper-confidence bound policies for switching bandit problems. ALT.
Howard, R. A. (1966). Information value theory. IEEE Transactions on Systems Science and Cybernetics.
Joulani, P., György, A. & Szepesvári, C. (2013). Online learning under delayed feedback. ICML.
Lakkaraju, H., Kleinberg, J., Leskovec, J., Ludwig, J. & Mullainathan, S. (2017). The selective labels problem: evaluating algorithmic predictions in the presence of unobservables. KDD.
Liu, L. T., Mania, H. & Jordan, M. I. (2020). Competing bandits in matching markets. AISTATS.
Pizzato, L., Rej, T., Chung, T., Koprinska, I. & Kay, J. (2010). RECON: a reciprocal recommender for online dating. RecSys.
Appendix A. Experiment register
Each lab tested one question on declared seeds. "Proxy" marks a result on an intermediate measure (feasible pairs, AUC) rather than on the ranked outcome; "expected" marks the analysis-only expected-MSMI estimator (Section 2.2).
| Lab | Question | Seeds | Result | Verdict | Section |
|---|---|---|---|---|---|
| 0 | What can the policy see on day 0? | 1101 (one world) | 55 of 137 arrived members fully known; 41 have a declined hard field (50% of incomplete members) | As predicted | 3.2 |
| 3b | How scarce are feasible pairs? | 1101–1120; dev., cold start, sparse | 2.88, 2.21 and 0.43 pairs per day; about 1.3 options per matchable member; no pair on 34–76% of days | Scarcity confirmed | 2.1 |
| 6 | Do learned weights, blossom or responsiveness beat greedy? | 1001–1015; dev., shift | Every MSMI interval includes zero; about 12% of introductions differ from greedy (8% between blossom and greedy on the same scores) | No detectable difference | C2 |
| 7 | What does a model learn from 1,049 labels? | 2001–2008 | Largest weight (−0.58) is on a field the simulator ignores | Not trustworthy | 2.5 |
| 7b | Are those weights distinguishable from noise? | 2001–2008; bootstrap and split halves | Largest weight flips sign between halves; one pass is on an ignored field | Too few labels | 2.5 |
| 7c | Do 130 rollouts recover the real structure? | 3001–3130 | Exactly the four fields the simulator uses pass, close to pre-stated values; no ignored field passes from 64 rollouts on | Pipeline works | 2.5 |
| 7d | Does the model rank Yes better on held-out worlds? | 3131–3150; dev., shift | AUC +0.051 [+0.025, +0.081] over greedy's score; +0.035 on shift | Better prediction (proxy) | 2.5 |
| 8 | Does blossom solve the problem statement's four-person example? | Toy example | Picks the 1.30 matching over greedy's 0.95 | Confirmed | 3.4 |
| 9 | Does value-based asking reveal more pairs, and more outcomes? | 1101–1120; dev., cold start | +0.45 and +0.49 feasible pairs per day (wins/ties/losses 19/0/1, 17/2/1); expected MSMI +0.005, interval includes zero | Pairs yes (proxy); outcomes no | 2.3, C3 |
| 11 | How much could perfect hard-constraint answers add? | 1101–1120; dev., cold start | About +2.2 feasible pairs per day, coverage +0.001; expected MSMI +0.019 and +0.013 (3–4%) | Small headroom | 2.3, C1 |
| 11b | Does that hold in every family? | 1101–1120: sparse, shift, delayed, drift | Coverage gain at most 0.003 everywhere; value-based asks close 20–48% of the feasible-pair gap in every family; sparse limited by geography (+0.14 pairs per day); late dates 0.1–0.2% of introductions | Holds in all six | 2.4, C1 |
| Check C | How much history does each member provide? | 1101–1120; dev., cold start | 2.32 and 2.28 introductions per served member; 41–43% get only one | Per-person models data-starved | 2.5 |
| 12 | Does waiting help, and does the learned score reach outcomes? | 1121–1160; dev., cold start | Protected reserve changed no decision; pure waiting: no replicated gain, +0.40 unserved in development; learned score: no replicated difference (expected +0.002 and −0.004) | Waiting off; no outcome gain from scoring | 2.3, C4 |
| 13 | How much could any ranking add, and what do learners capture? | 1161–1180; dev., cold start | Perfect-information benchmarks: at most +0.013 expected (3%); learners within ±0.004, intervals include zero; foresight benchmark +0.10 and +0.23 realised | Ranking headroom small; compatibility and chance dominate | 2.3–2.4, C5 |
Appendix B. Compliance matrix: PS 1, 3–12, 14 and 15
"Where" gives the section of this note that provides the detail.
| PS | Requirement | How the note addresses it | Where |
|---|---|---|---|
| 1 | Decide each step which information to request and which non-overlapping introductions to propose, possibly none | An ask call and a match call each day; either list may be empty, and waiting is omission | 3 |
| 3 | Read the observable population and feedback history | Every call rebuilds its state and refits from the history in the request | 3.1, 3.5 |
| 3 | Distinguish confirmed constraints from missing or declined information | eligibility() classes (feasible, needs clarification, infeasible); declined answers never re-asked or inferred; separate unknown and declined indicators | 3.2, 3.3 |
| 3 | Select clarification requests within the daily budget | Priority U for 3-unit bundles; 1-unit soft asks only when an answer could change a decision; validator enforces the budget | 3.1, 3.2 |
| 3 | Assess both directions of an introduction | Eligibility checked both ways; separate directional models for response, acceptance and second-meeting intention | 3.3 |
| 3 | Allocate feasible pairs, each member at most once per batch | Maximum-weight matching; the validator rejects any repeated member | 3.1, 3.4 |
| 3 | Update decisions as people arrive, become unavailable or receive feedback | Newcomers join once their hard answers are known; busy members are excluded and handled by the planning bonus; models refit every call with discounting | 3.4, 3.5 |
| 3 | Reproducible outputs and evidence to explain decisions | Exploration seeded from the declared inference seed and the day; a diagnostics record for every pair and ask | 3.5 |
| 3, 10 | Probabilities are optional; if reported, separate A accepts B, B accepts A and both, define target and window, state the independence assumption, show calibration | Directional terms are separate models with defined targets and windows; mutual acceptance is their product under a stated independence assumption, checked by score decile; reliability curves for directional, mutual and MSMI predictions | 3.3, 6 |
| 4 | Keep training, validation and development-test pools separate; never split rows of the same people | Priors fitted on training pools and declared seeds, tuned on validation pools, reported on development-test pools and fresh seeds; whole episodes are the unit | 6 |
| 5 | A null is unknown, never a No; not-asked differs from declined | Unknown and declined get their own indicators and are never encoded as a mismatch | 3.3 |
| 5 | Age and gender do not imply preferences; use who_to_meet; zones are constraints; relocation does not widen zones | Feasibility comes only from eligibility() on stated preferences; relocate is a soft feature | 3.2, 5 |
| 6 | Refresh the observation after clarification; memory is optional; waiting is omission | The match call uses the refreshed state; memory holds only a version tag and an RNG counter; waiting is omission, and the policy does not wait by default | 3.1, 3.4 |
| 7 | Every proposed pair valid; an invalid batch invalidates the episode | Validator re-checks every condition on the refreshed state, with a fallback chain and stress tests | 3.1 |
| 7 | Explain people without a feasible candidate; keep them in coverage | Reported as an unservable group; coverage given with and without them | 3.2, 2.1 |
| 8 | Keep assignment, response, mutual acceptance, date and second-meeting events separate; late Yes; missing responses; right-censoring | One model per stage; censoring table: MSMI defined as in the problem statement | 1, 3.5 |
| 9 | Selective feedback: outcomes only for introduced pairs | Never-introduced pairs carry no label; offline analyses use a known logging policy, and the limitation is stated | 3.5, 9 |
| 9 | Cold starts, uneven history, unknown preferences, delayed observations | Pool-level starting estimates; shrinkage with a prior worth 4 observations; unknown indicators plus value-based asks; pending outcomes contribute nothing | 3.5 |
| 9 | Thompson sampling over pairs that already passed eligibility(); the validator re-checks every output; constraints stay protected | What is explored, and how hard | 3.5 |
| 9 | Use only evidence available at each action | Features used only if observed by the assignment day; training uses rollouts, not day-30 snapshots | 3.5 |
| 9 | No inverse-propensity claims; explain assumptions behind offline analyses | Complete policies compared in paired runs; the assumption behind the offline AUC test is stated | 2, 9 |
| 9 | Separate model uncertainty from missing data and stochastic outcomes; no invented histories | Diagnostics records keep posterior spread, unknown or declined fields and unmatured outcomes apart, and report only observed fields | 3.5 |
| 10 | Report assignments, mutual acceptances, dates, MSMI, coverage, clarification cost, missing feedback, first-introduction waits and the unserved count, across seeds and families | Will be reported per family | 6 |
| 10 | Uncertainty and failure analysis when counts are small; a zero MSMI is not equivalence | Bootstrap intervals, wins/ties/losses, share of introductions that differ, a sizing argument and a funnel failure analysis | 2.3, 2.4, 6 |
| 10 | Compare with all three baselines on identical seeds; at least one hypothesis-driven ablation | Baselines B1–B3; one ablation per hypothesis plus component ablations | 6 |
| 10 | Tie-breakers: coverage, mutual acceptances, clarification cost, inference time | Ranking is on MSMI and the tie-breakers apply only to exact ties, so none is bought with MSMI; always matching protects coverage; a time guard, with per-call runtime measured in the container | 2.6, 3.4, 6 |
| 11 | JSON protocol; handle an empty population and feasible graph; resource limits; only observable inputs | Protocol JSON on stdout only; stress tests; 7 s guard and 1 MiB memory; the simulator is never a source of policy inputs | 3.1, 9 |
| 11 | Docker image from a committed Dockerfile; pinned dependencies with licences; CPU only, 1 GiB, 10 s per call including start-up | Starter Dockerfile with pinned networkx (BSD); offline prior shipped as an inference asset; container-mode runs with per-call timing | 3.1, 6 |
| 14 | Synthetic data only; document external models and coding tools | No external data; AI assistants declared | 9 |
| 15 | Separate normalisation, modelling and allocation; explicit uncertainty; auditable decisions | Separate modules; posterior-based uncertainty; diagnostics records | 3, 3.5 |
| 15 | Product relevance: real deployment requires validation on authorised inputs, current constraint checks and human review | Adapter boundary and these safeguards stated as preconditions; product implications framed as hypotheses to validate | 8, 9 |
Appendix C. Detailed results
All cells are paired differences against the stated baseline on the same worlds, with 95% bootstrap intervals over seeds. "Realised" is the MSMI the simulator produced; "expected" is the analysis-only estimator of Section 2.2.
C1. Perfect hard-constraint answers minus greedy
Labs 11 and 11b, seeds 1101–1120; realised metrics. An offline benchmark: greedy matching with every non-declined hard answer revealed free each day. Gap closed = (value-based − greedy) / (ceiling − greedy) for feasible pairs.
| Family | Feasible pairs per day, days 0–20 | Coverage | Mutual/100 | MSMI/100 | Gap closed by value-based asks |
|---|---|---|---|---|---|
| Development | +2.24 [+1.80, +2.71] | +0.001 [−0.001, +0.003] | +0.08 [−0.58, +0.63] | −0.13 [−0.33, +0.08] | 20% [13, 28] |
| Cold start | +2.19 [+1.74, +2.67] | +0.001 [−0.002, +0.004] | +0.15 [−0.45, +0.78] | +0.03 [−0.23, +0.25] | 22% [14, 31] |
| Sparse | +0.14 [+0.09, +0.19] | +0.001 [+0.000, +0.002] | −0.15 [−0.45, +0.15] | −0.08 [−0.18, +0.03] | 48% [28, 69] |
| Shift | +2.32 [+1.77, +2.96] | +0.003 [+0.000, +0.005] | −0.28 [−0.98, +0.40] | −0.05 [−0.20, +0.13] | 23% [15, 32] |
| Delayed | +2.22 [+1.78, +2.70] | −0.001 [−0.003, +0.001] | −0.08 [−0.73, +0.60] | −0.08 [−0.25, +0.10] | 22% [14, 31] |
| Drift | +2.24 [+1.80, +2.71] | +0.001 [−0.001, +0.004] | +0.03 [−0.50, +0.55] | −0.13 [−0.35, +0.08] | 20% [13, 28] |
C2. Ranking variants against supplied greedy
Lab 6, seeds 1001–1015; realised metrics. The learned scorer is a logistic model on 14 soft-field indicators, trained on 1,049 labels from 8 rollouts and frozen; the responsiveness variants add each member's reply rate and acceptance tendency, shrunk to the pool mean with a prior worth 4 observations. Greedy scores 0.43 MSMI per 100 in development (92.6 introductions per episode, coverage 0.378). Blossom against greedy on the same learned scores: MSMI −0.07 [−0.23, +0.10] in development, −0.03 [−0.30, +0.23] in shift, 8% of introductions differing.
| Policy vs supplied greedy | Development MSMI diff | Development mutual diff | Shift MSMI diff | Differ |
|---|---|---|---|---|
| Learned score, greedy | +0.13 [−0.03, +0.30] | −0.33 [−0.97, +0.23] | +0.23 [−0.03, +0.50] | 12% |
| Learned score, blossom | +0.07 [−0.10, +0.23] | +0.00 [−0.53, +0.60] | +0.20 [−0.07, +0.47] | 12% |
| Responsiveness, greedy | +0.00 [−0.20, +0.20] | −0.30 [−0.93, +0.30] | +0.03 [−0.13, +0.23] | 12% |
| Responsiveness, blossom | +0.07 [−0.10, +0.23] | −0.30 [−0.87, +0.27] | +0.03 [−0.20, +0.27] | 11% |
| Responsiveness, Thompson | +0.00 [−0.20, +0.20] | −0.17 [−0.67, +0.30] | +0.10 [−0.13, +0.33] | 11% |
C3. Value-based against list-order asks
Lab 9, seeds 1101–1120; greedy matching; realised metrics. With blossom matching the feasible-pair gain is +0.26 [+0.03, +0.49] in development and +0.35 [+0.22, +0.48] in cold start; coverage changes by less than 0.01 in every variant. Its development MSMI cell equals C1's by coincidence; both were checked against the per-seed records.
| Family | Feasible pairs per day, days 0–20 | Wins/ties/losses | Mutual diff | MSMI diff | Differ |
|---|---|---|---|---|---|
| Development | 5.18 vs 4.74: +0.45 [+0.30, +0.60] | 19/0/1 | +0.48 [−0.23, +1.20] | −0.13 [−0.33, +0.08] | 7% |
| Cold start | 3.75 vs 3.26: +0.49 [+0.31, +0.68] | 17/2/1 | −0.50 [−1.18, +0.18] | −0.08 [−0.25, +0.13] | 11% |
C4. Waiting and the learned score
Lab 12; realised metrics; a result counts only if it holds on both seed blocks. The learned score is the 130-rollout model (P(A says Yes) × P(B says Yes)), allocated greedily. Pure waiting is τ₀ = 0.12 with no protections. The protected reserve (τ₀ = 0.10 and 0.12) changed 0% of introductions in both families.
| Paired comparison | Family | MSMI, 1121–1140 | MSMI, 1141–1160 | MSMI, pooled (40) | Mutual, pooled | Coverage, pooled |
|---|---|---|---|---|---|---|
| Learned score vs greedy | Dev. | −0.20 [−0.35, −0.05] | +0.03 [−0.18, +0.25] | −0.09 [−0.23, +0.05] | +0.09 [−0.30, +0.50] | +0.001 [−0.000, +0.003] |
| Learned score vs greedy | Cold | −0.10 [−0.28, +0.08] | −0.08 [−0.25, +0.10] | −0.09 [−0.21, +0.04] | −0.10 [−0.54, +0.33] | −0.002 [−0.004, −0.000] |
| Pure waiting vs always match | Dev. | +0.20 [+0.05, +0.38] | +0.00 [−0.20, +0.20] | +0.10 [−0.03, +0.24] | −0.25 [−0.65, +0.16] | −0.002 [−0.004, −0.000] |
| Pure waiting vs always match | Cold | +0.03 [−0.13, +0.18] | −0.05 [−0.33, +0.20] | −0.01 [−0.18, +0.14] | +0.33 [−0.05, +0.73] | −0.001 [−0.003, +0.000] |
C5. Lab 13: benchmark rankers and learners against greedy
Seeds 1161–1180, 20 per family; supplied list-order asks; greedy allocation. Benchmark rankers use simulator ground truth in offline experiments only. Greedy's expected MSMI is 0.442 per 100 in development and 0.358 in cold start. Coverage moved by at most 0.002 for every ranker. The foresight benchmark leaves expected MSMI almost unchanged.
| Ranker | Development: realised | Development: expected | Cold start: expected | Cold start: realised | Differ |
|---|---|---|---|---|---|
| Benchmark: true reply rates | −0.10 [−0.35, +0.15] | +0.008 [−0.004, +0.019] | +0.002 [−0.007, +0.010] | +0.03 [−0.18, +0.23] | 9–12% |
| Benchmark: true member traits | −0.15 [−0.40, +0.10] | +0.009 [−0.003, +0.021] | +0.003 [−0.009, +0.014] | −0.08 [−0.28, +0.13] | 9–11% |
| Benchmark: complete true profiles | +0.013 [−0.004, +0.031] | −0.15 [−0.38, +0.03] | +0.001 [−0.008, +0.009] | +0.18 [−0.05, +0.43] | 8–11% |
| Benchmark: traits and profiles combined | +0.005 [−0.012, +0.021] | −0.10 [−0.40, +0.20] | +0.011 [+0.000, +0.021] | +0.03 [−0.15, +0.20] | 8–11% |
| Benchmark: foresight | +0.10 [−0.18, +0.43] | −0.003 [−0.023, +0.013] | +0.005 [−0.008, +0.016] | +0.23 [+0.03, +0.45] | 8–10% |
| Learned reply rates | −0.002 [−0.016, +0.010] | −0.08 [−0.33, +0.15] | −0.002 [−0.013, +0.008] | +0.15 [−0.05, +0.35] | 8–10% |
| Learned reply rates, Thompson | −0.10 [−0.28, +0.08] | +0.000 [−0.017, +0.017] | +0.003 [−0.004, +0.011] | −0.08 [−0.30, +0.18] | 9–10% |
| Learned reply rates and acceptance tendency | −0.000 [−0.012, +0.011] | −0.15 [−0.40, +0.08] | −0.000 [−0.010, +0.008] | +0.03 [−0.18, +0.23] | 8–10% |
Column order follows the source PDF; in some rows the realised and expected columns appear transposed there.
C6. Figure 1 values for the earlier levers
Expected MSMI per 100 against the stated baseline.
| Lever | Baseline | Seeds | Development | Cold start |
|---|---|---|---|---|
| Value-based hard asks | List-order asks | 1101–1120 | +0.005 [−0.006, +0.017] | +0.005 [−0.007, +0.017] |
| Perfect hard answers | List-order asks | 1101–1120 | +0.019 [+0.008, +0.031] | +0.013 [+0.002, +0.024] |
| Pure waiting | Always match | 1121–1160 | +0.003 [−0.006, +0.011] | −0.002 [−0.010, +0.006] |
| Learned field score | Greedy | 1121–1160 | +0.002 [−0.008, +0.012] | −0.004 [−0.013, +0.004] |