QYield: campaign prediction, selection and risk

A hybrid quantum-classical approach to the term-deposit campaign task

Executive Summary

Executive summary | AtomiQ Hackathon

QYield estimates customer interest, chooses six calls from a ten-customer shortlist, and calculates the probability of at least three subscriptions. The pipeline learns from 300 labelled records and produces predictions for 100 unlabelled customers. A term deposit is a fixed-term savings product.

MODEL-ESTIMATED VALUERESOURCE USECAMPAIGN EVENT
14.45 net units14 / 25 cost; 16 / 22 capacity14.13% chance of 3+ subscriptions
35.0% above rank-only selectionBoth limits satisfiedConditional on the estimated probabilities
01 · Predict

300 labelled records → 100 ranked prospects → top 10

02 · Select

Choose exactly six using value, cost and capacity

03 · Simulate

Estimate the chance of at least three subscriptions

What the results mean

The value-aware selection scores 14.45 units, compared with 10.71 for simply calling the six highest-ranked customers. These are expected values under the model and the supplied workbook values, not observed profit. Classical exact enumeration finds the same best group.

The selected six have 1.39 expected subscriptions in total. The probability of at least three subscriptions is 14.13%; the probability of fewer than three is 85.87%. A better expected-value selection is therefore not a guarantee of campaign success.

The main technical improvement is a smaller simulated quantum optimization circuit: 426 CX gates versus 4,259 in the same-topology reference, including state preparation. This is a circuit-resource reduction, not a demonstrated quantum speedup.

Stage 1 | Estimating subscription probability

Methods | A fixed quantum feature circuit with a classical learning head

Learn only from the 300 labelled rows

The 15 predictor fields contain six numeric and nine categorical attributes. We transform balance and contact counts, encode previous-contact history, standardize numeric features, and one-hot encode categories. The full training fit produces 50 classical columns; a validation fold may contain fewer categories.

PCA reduces this representation to four components. We standardize those components and bound the encoding angles. Every learned transformation is fitted again inside each training fold.

\theta_q=0.30\,\arctan(z_q),\quad q=0,1,2,3

The four angles enter a circular, two-repetition ZZ feature map [1]. Quantum statevectors are evaluated locally with Qiskit; the feature circuit itself is fixed rather than trained by a variational quantum gradient.

Figure 2. One logical encoding layer, repeated twice. P is a phase gate; each ring interaction uses CX–P–CX.
Figure 2. One logical encoding layer, repeated twice. P is a phase gate; each ring interaction uses CX–P–CX.

We derive six centered KernelPCA components from quantum-state similarities and ten Z/ZZ expectation values. After fold-local scaling, these 16 features are weighted by 0.35 and appended to the classical features.

K_{ij}=|\langle\psi_i|\psi_j\rangle|^2,\qquad \widetilde K=H K H

Here H = I − 11ᵀ/n centers the training kernel. The final 66-column representation feeds L2 logistic regression with C = 0.12. This head produces estimated probabilities; their calibration is assessed rather than assumed.

Stage 1 | What validation showed

Evidence | Five-fold stratified out-of-fold predictions, seed 42
ModelROC-AUC ↑Average precision ↑Brier ↓Log loss ↓ECE ↓
Selected hybrid0.67500.22650.100060.342930.01523
Classical reference0.62480.19990.101940.353700.00716
Figure 3. Both models use the same validation splits. The dashed precision baseline is the training positive rate, 35/300.
Figure 3. Both models use the same validation splits. The dashed precision baseline is the training positive rate, 35/300.

ROC-AUC describes ranking across thresholds. Average precision summarizes precision–recall performance for the relatively rare positive class. Brier score and log loss assess probability predictions; lower is better. ECE compares predicted and observed rates across five bins.

The hybrid improves ranking, Brier score and log loss in this split; the classical reference has lower ECE. Its logistic regularization C = 0.15 differs from the hybrid head, so this comparison does not isolate a uniquely quantum effect.

There are only 35 positive examples. Model selection used training-only validation, so the selected model’s OOF results carry selection optimism. These are development estimates, not hidden-test accuracy or proof of quantum advantage.

Stage 2 | Choosing the six calls

Decision model | Estimated value, contact cost and operational capacity
\max_{x_i\in\{0,1\}}\ \sum_i(p_i v_i-c_i)x_i\quad\mathrm{s.t.}\quad\sum_i x_i=6,\ \sum_i c_i x_i\leq25,\ \sum_i h_i x_i\leq22
RankCustomerProbabilityValue vCost cCapacity hNet valueSelected
1C003129.80%13211.874Yes
2C017024.77%22114.448Yes
3C007924.02%24332.765Yes
4C008123.32%1741-0.035—
5C019323.25%16310.720—
6C026521.46%23440.936Yes
7C018821.02%13220.732—
8C018319.95%14230.793—
9C031819.79%21331.156Yes
10C025619.43%22143.274Yes

The workbook supplies v (deposit value), c (contact cost), and h (capacity use). We use p from Stage 1. Net value means p × v − c in workbook units; no currency or bank break-even threshold is assumed.

Figure 4. Value-aware selection improves model-estimated net value by 34.98% over taking ranks 1–6. Both groups meet the limits.
Figure 4. Value-aware selection improves model-estimated net value by 34.98% over taking ranks 1–6. Both groups meet the limits.

C0081 ranks fourth but has slightly negative estimated net value. C0256 ranks tenth; its lower contact cost and higher deposit value make it more valuable under this objective.

Stage 2 | A circuit that keeps the group size fixed

Methods | Dicke initialization, guarded cost phases and an ordered XY mixer
Figure 5. Logical circuit blocks. Initialization prepares all 210 six-customer groups with equal amplitude; the mixer preserves six selected bits.
Figure 5. Logical circuit blocks. Initialization prepares all 210 six-customer groups with equal amplitude; the mixer preserves six selected bits.

We prepare the uniform Dicke state |D₆¹⁰〉 with a structured SCS circuit [4]. We then alternate cost and mixer layers three times [2,3]. COBYLA optimizes six angles, using eight restarts and at most 150 evaluations per restart.

H_C=-\sum_i w_i(I-Z_i)/2,\quad w_i=p_i v_i-c_i
U_C(\gamma)=\prod_i R_Z(+\gamma w_i)\quad\mathrm{(up\ to\ global\ phase)}

The positive sign matches the implemented cost convention. Exact gate code, optimized parameters and measured bitstrings are retained in the source and Stage 2 result file.

Figure 6. Ten ring edges plus opposite chords (0,5), (1,6), (2,7), (3,8), (4,9).
Figure 6. Ten ring edges plus opposite chords (0,5), (1,6), (2,7), (3,8), (4,9).
U_M(\beta)=\prod_{(i,j)\in E}^{\mathrm{ordered}}RXX_{ij}(2\beta)RYY_{ij}(2\beta)

Each exchange block equals exp[−iβ(XX + YY)] on its pair. Blocks on overlapping edges need not commute, so the implementation uses an ordered product. A measurement bit of 1 selects that customer.

Stage 2 | Verifying the selection and circuit reduction

Evidence | Exact benchmark and matched compilation settings
Figure 7. Same 15-edge mixer, three layers and basis [rz, sx, x, cx], optimization level 1. Preparation is included.
Figure 7. Same 15-edge mixer, three layers and basis [rz, sx, x, cx], optimization level 1. Preparation is included.
ResourceUnreducedProduction
CX gates4,259426
Circuit depth11,034741
Preparation CX1,013246

Structured preparation removes 767 CX gates. The guarded cost simplification removes 3,066 more. The historical 4,379-CX circuit used a different 25-edge mixer and is not the matched reference above.

Why the reduced cost layer is valid

The six largest costs sum to 19, below 25; the six largest capacities also sum to 19, below 22. Therefore every six-person group in this particular shortlist is feasible. Within that subspace, inequality penalties vanish.

When the guard fails, or a weight-leaking noise model is supplied, the circuit constructor retains the exact diagonal positive-part penalties. A diagonal penalty itself does not break number conservation.

CheckResult
Feasible samples8,192 / 8,192
Optimal group observed553 / 8,192 (6.75%)
Exact 210-group comparisonMatched best feasible selection
Objective gapExact match
Maximum probability difference8.33 × 10⁻¹⁵

We score feasible measured groups and retain the best observed group. Exhaustive classical enumeration is a separate check. It finds the same value, 14.453526 units. This small instance does not establish quantum computational advantage.

Stage 2 and Stage 3 circuit and shot accounting
MetricStage 2Stage 3
Logical qubits106
Physical qubitsNot applicable: local simulatorNot applicable: local simulator
Recorded original / transpiled depth166 / 7412 / 2
Original 1Q / 2Q / SWAP gates44 / 264 / 06 / 0 / 0
Transpiled 1Q / 2Q / SWAP gates1150 / 426 / 06 / 0 / 0
Main estimate shots8192100000

Gate totals exclude measurements. The recorded Stage 2 original depth includes measurements; its transpiled basis-circuit depth excludes them. Stage 3 has three additional 100000-shot noise experiments. Total measurement shots are 408192; the separate 100000 classical Monte Carlo trials are not quantum shots. Compilation uses rz, sx, x, cx, optimization level 1 and seed 42, without a physical-device coupling map.

Stage 3 | Turning six probabilities into campaign risk

Methods | Independent Bernoulli qubits and an exact classical reference
Figure 8. Six independent Ry rotations and measurements. No two-qubit gates are needed.
Figure 8. Six independent Ry rotations and measurements. No two-qubit gates are needed.
QubitCustomerProbabilityRy angle (rad)
0C00310.29801.1549
1C01700.24771.0418
2C00790.24021.0244
3C02650.21460.9634
4C03180.19790.9221
5C02560.19430.9129

A subscription is represented by outcome 1 and a non-subscription by 0. Each rotation makes the probability of outcome 1 equal to the corresponding Stage 1 estimate.

\alpha_i=2\arcsin\sqrt{p_i}
R_y(\alpha_i)|0\rangle=\sqrt{1-p_i}|0\rangle+\sqrt{p_i}|1\rangle

Assuming independent customer outcomes, the coefficient of tˢ in the following polynomial gives the probability of exactly s subscriptions:

G(t)=\prod_{i=1}^{6}[(1-p_i)+p_i t]
P(S\geq3)=\sum_{s=3}^{6}[t^s]G(t)

We evaluate the same distribution with dynamic programming, enumeration of all 64 outcomes, ideal statevectors, quantum shots and classical Monte Carlo. Agreement checks the simulation; it does not validate the customer probabilities against future outcomes.

Bit ordering is explicit: q0 is the rightmost bit in Qiskit’s measurement string. The six probabilities and IDs are carried through unchanged from the selected Stage 2 group.

Stage 3 | Reading the risk estimate correctly

Results | The same model-based event checked in several ways
Figure 9. Teal bars form the event of interest: three or more subscriptions.
Figure 9. Teal bars form the event of interest: three or more subscriptions.

Expected subscriptions: 1.39 of six. Chance of at least three: 14.13%. Chance of fewer than three: 85.87%. These are conditional model calculations, not observed campaign results.

MethodChance of 3+
Exact dynamic programming14.1288%
Ideal quantum statevector14.1288%
100,000 noiseless quantum shots14.0470%
100,000 classical Monte Carlo trials14.1020%
Gate depolarizing noise only14.8630%
Readout noise only15.3690%
Combined synthetic noise16.4470%

The sampled estimates agree with the exact calculation within expected sampling error. The noiseless quantum estimate is 0.0818 percentage points below the reference.

Synthetic gate depolarization (0.02) and readout assignment error (0.015) bias the measured event probability upward here. The increase is an error in the estimate, not an improvement in customer conversion. These noise models are illustrative and not calibrated to a named device.

What a decision-maker can conclude

The selected group has the highest estimated value within this shortlist, but the chance of three subscriptions remains modest. Deployment would require checking probability calibration on fresh outcomes, whether customer responses are correlated, and whether the supplied value and cost units represent the actual campaign economics.

Exact conversion-count distribution

The following values come directly from stage3_results.json, under exact_classical_dp.pmf_by_hamming_weight. They replace the inconsistent distribution in the earlier documents.

SubscriptionsExact probabilityPercentage
00.20368023420.3680%
10.37292311837.2923%
20.28210819528.2108%
30.11292048711.2920%
40.0252351822.5235%
50.0029865030.2987%
60.0001462810.0146%

Sensitivity | Which inputs matter most to the risk calculation?

Interpretation | Mathematical sensitivity is not a causal treatment effect
Figure 10. Holding all other inputs fixed, a one-percentage-point increase in one input changes the event probability by the amount shown.
Figure 10. Holding all other inputs fixed, a one-percentage-point increase in one input changes the event probability by the amount shown.
\frac{\partial P(S\geq3)}{\partial p_i}=P(S_{-i}=2)

S₋ᵢ counts subscriptions among the other five customers. Changing customer i’s probability affects the threshold event only when those five produce exactly two subscriptions.

The identity is exact for this independent Bernoulli model. Analytical values agree with central finite differences to a maximum absolute error of 3.81 × 10⁻¹¹.

C0256 and C0318 have the largest sensitivities in this selected group. That describes how uncertainty in their probabilities propagates into the campaign estimate. It does not show that an incentive or an experienced advisor would cause a larger response from them.

The sensitivity ranking also differs from the Stage 2 value ranking: one measures a change in the probability of crossing a threshold; the other measures expected net value.

Keep three questions distinct

PredictionSelectionRisk
Who is more likely to subscribe?Which six maximize the supplied objective?How likely are three or more subscriptions?
Stage 1 probabilitiesStage 2 value, cost and capacityStage 3 distribution and assumptions

Design decisions and limits

Scope | What is implemented, what is omitted, and why
ChoiceImplementationReason and limit
Learning modelFixed 4-qubit features + regularized logistic headKeeps the classical representation while adding quantum-derived features. More elaborate trainable alternatives did not justify replacing this selected approach in training-only development.
Probability trainingUnweighted probability lossClass balancing changes the effective class prevalence. Ranking and probability quality were assessed separately; a good rank is insufficient for the value calculation.
Selection constraintsDicke + XY; guarded cost simplificationExactly six is enforced by the ideal state and mixer. Positive-part inequality penalties remain available for binding cases; an equality penalty would wrongly penalize unused capacity.
Slack qubitsNot required for this implementationThe exact ten-qubit diagonal fallback represents inequality violations directly. For the final shortlist, the feasibility guard proves both resource limits redundant.
ExecutionLocal simulators, exact classical controlsHardware execution, device-calibrated noise, error mitigation and practical quantum speedup have not been established.

How strong is the evidence?

The strongest verified claims are computational: the code respects the 300-row training boundary; the selected probabilities are reused consistently; QAOA samples the exact-best group; the simplified circuit matches the reference numerically; and the Bernoulli circuit matches exact classical mathematics.

Predictive gains are less certain. Configuration selection used the same small labelled dataset that supplies validation evidence. Additional independent data would be needed to establish generalization, stable calibration, real commercial uplift, or an advantage attributable specifically to quantum features.

Method foundations and reading notes

References | Algorithmic foundations are distinct from this project’s empirical evidence

[1] Havlicek et al. (2019). Supervised learning with quantum enhanced feature spaces. Nature 567, 209–212. https://arxiv.org/abs/1804.11326

[2] Farhi, Goldstone and Gutmann (2014). A Quantum Approximate Optimization Algorithm. https://arxiv.org/abs/1411.4028

[3] Hadfield et al. (2019 revision). From the Quantum Approximate Optimization Algorithm to a Quantum Alternating Operator Ansatz. https://arxiv.org/abs/1709.03489

[4] Baertschi and Eidenbenz (2019). Deterministic Preparation of Dicke States. FCT 2019, 126–139. https://arxiv.org/abs/1904.07358

Project evidence comes from the supplied participant workbook, the official problem statement, the source code, and the persisted Stage 1–3 results. The papers establish the underlying methods; they do not establish performance on this banking dataset.

Probability and value

Probability is an estimate between 0 and 1. Calibration means that groups assigned a given probability have a corresponding observed frequency; it must be checked on suitable held-out outcomes. Expected net value is probability × supplied deposit value − supplied contact cost.

Kernel and qubit

A quantum kernel measures similarity through quantum-state overlap. Four qubits have 16 complex amplitudes; the report’s 16 derived features are a separately chosen set of six kernel components and ten observables, not a count of qubits.

Shot, CX and Dicke state

A shot is one simulated circuit measurement. CX is a two-qubit controlled-X gate used in the stated compilation basis. A Dicke state is an equal superposition of bitstrings with a fixed number of ones; here those ones represent exactly six selected customers.

Exact match and numerical error

An objective gap of zero is reported as “Exact match”. Small nonzero numerical discrepancies use scientific notation: for example, 8.33 × 10⁻¹⁵ means 8.33 multiplied by ten to the power −15. Numerical agreement does not remove uncertainty in the model’s customer probabilities.

Sources and evidence

All reported results refer to this saved simulation run.

The report consolidates the substantive methods and results from the previous HTML and PDF. Project results take precedence over historical prose. The implementation uses Python and Qiskit locally; no physical-device execution or real campaign outcomes are claimed.

Historical ablation and rejected-model rows are omitted because the corresponding per-seed experiment records are not included in the compiled project. This report compares the chosen hybrid and the retained classical reference only. It does not infer statistical significance, causal intervention effects or practical quantum advantage.

Inspect the numerical source snapshot
{
  "stage1_metrics": {
    "Hybrid-Quantum-FeatureAug-LogReg": {
      "composite_train_score": 0.2845074077338846,
      "qualifies": true,
      "pooled_oof": {
        "roc_auc": 0.6750404312668463,
        "pr_auc_average_precision": 0.22650525672195054,
        "pr_auc_trapezoidal": 0.21225199040875914,
        "brier_score": 0.10006488328324727,
        "log_loss": 0.3429301115591839,
        "ece_5bin": 0.015230516071848955,
        "precision_at_10_pooled_n300": 0.4,
        "recall_at_10_pooled_n300": 0.11428571428571428,
        "mean_predicted_prob": 0.12113343463295216,
        "empirical_positive_rate": 0.11666666666666667
      },
      "per_fold_n60_pos7": {
        "fold_size": 60,
        "positives_per_fold": 7,
        "roc_auc_mean": 0.6797843665768194,
        "roc_auc_std": 0.07243405609668574,
        "pr_auc_ap_mean": 0.30874880876931543,
        "pr_auc_ap_std": 0.06956629669565643,
        "pr_auc_trapz_mean": 0.2716117181228008,
        "brier_mean": 0.10006488328324728,
        "log_loss_mean": 0.34293011155918385,
        "precision_at_10_mean": 0.24,
        "precision_at_10_std": 0.04898979485566355,
        "recall_at_10_mean": 0.3428571428571428,
        "recall_at_10_std": 0.06998542122237651,
        "fold_composite_scores": [
          0.3593198474496403,
          0.3033415173527971,
          0.24229097774663083,
          0.33785111469088236,
          0.32466178407688456
        ]
      }
    },
    "Classical-LogisticRegression-L2": {
      "composite_train_score": 0.2432429507180301,
      "qualifies": true,
      "pooled_oof": {
        "roc_auc": 0.6247978436657682,
        "pr_auc_average_precision": 0.19986939895050576,
        "pr_auc_trapezoidal": 0.18381740353339054,
        "brier_score": 0.10194496931597398,
        "log_loss": 0.3536998880005625,
        "ece_5bin": 0.007163028994915284,
        "precision_at_10_pooled_n300": 0.3,
        "recall_at_10_pooled_n300": 0.08571428571428572,
        "mean_predicted_prob": 0.11837357288601535,
        "empirical_positive_rate": 0.11666666666666667
      },
      "per_fold_n60_pos7": {
        "fold_size": 60,
        "positives_per_fold": 7,
        "roc_auc_mean": 0.6269541778975741,
        "roc_auc_std": 0.0967290773794367,
        "pr_auc_ap_mean": 0.2653174338172873,
        "pr_auc_ap_std": 0.07892459764658015,
        "pr_auc_trapz_mean": 0.23843617445901347,
        "brier_mean": 0.101944969315974,
        "log_loss_mean": 0.3536998880005625,
        "precision_at_10_mean": 0.13999999999999999,
        "precision_at_10_std": 0.07999999999999999,
        "recall_at_10_mean": 0.19999999999999996,
        "recall_at_10_std": 0.11428571428571428,
        "fold_composite_scores": [
          0.36176528121216944,
          0.21270398378064387,
          0.20894042239657853,
          0.23799718479880677,
          0.30185628915468843
        ]
      }
    }
  },
  "stage2_selected_ids": [
    "C0031",
    "C0170",
    "C0079",
    "C0265",
    "C0318",
    "C0256"
  ],
  "stage2_objective": 14.453526112464875,
  "stage2_resource_comparison": {
    "unreduced_transpiled_cx": 4259,
    "unreduced_transpiled_1q": 7495,
    "unreduced_transpiled_depth": 11034,
    "prior_25chord_unreduced_transpiled_cx": 4379,
    "prior_25chord_unreduced_transpiled_depth": 11199,
    "prior_25chord_guarded_transpiled_cx": 546,
    "prior_25chord_guarded_transpiled_depth": 906,
    "production_transpiled_cx": 426,
    "production_transpiled_1q": 1150,
    "production_transpiled_depth": 741,
    "total_cx_reduction_pct": 89.9976520309932,
    "total_depth_reduction_pct": 93.28439369222403,
    "cx_reduction_vs_prior_4379_pct": 90.27175154144783,
    "depth_reduction_vs_prior_11199_pct": 93.38333779801769,
    "max_1024_state_probability_diff": 8.326672684688674e-15
  },
  "stage3_exact_pmf": {
    "0": 0.2036802335564143,
    "1": 0.3729231181536828,
    "2": 0.28210819535507103,
    "3": 0.1129204871895556,
    "4": 0.025235181988729417,
    "5": 0.0029865031353968775,
    "6": 0.00014628062114998796
  },
  "stage3_estimates": {
    "exact_poisson_binomial_dp": 0.1412884529348319,
    "exact_64_outcome_enumeration": 0.14128845293483186,
    "ideal_quantum_statevector": 0.14128845293483192,
    "noiseless_quantum_shots_100k": 0.14047,
    "classical_monte_carlo_100k": 0.14102,
    "noisy_gate_depolarizing_only_100k": 0.14863,
    "noisy_readout_error_only_100k": 0.15369,
    "noisy_combined_depol_and_readout_100k": 0.16447
  },
  "stage3_selected_probabilities": [
    {
      "qubit_index": 0,
      "bitstring_char_position_from_right": 0,
      "bitstring_char_index_in_6char_str": 5,
      "customer_id": "C0031",
      "predicted_probability": 0.2979882203218803,
      "ry_angle_rad": 1.1548851896798047,
      "expected_deposit_value": 13.0,
      "contact_cost": 2.0,
      "capacity_units": 1.0,
      "expected_net_value": 1.8738468641844443
    },
    {
      "qubit_index": 1,
      "bitstring_char_position_from_right": 1,
      "bitstring_char_index_in_6char_str": 4,
      "customer_id": "C0170",
      "predicted_probability": 0.2476515995507443,
      "ry_angle_rad": 1.0417656083294446,
      "expected_deposit_value": 22.0,
      "contact_cost": 1.0,
      "capacity_units": 1.0,
      "expected_net_value": 4.448335190116375
    },
    {
      "qubit_index": 2,
      "bitstring_char_position_from_right": 2,
      "bitstring_char_index_in_6char_str": 3,
      "customer_id": "C0079",
      "predicted_probability": 0.2401919300152541,
      "ry_angle_rad": 1.0243947119795815,
      "expected_deposit_value": 24.0,
      "contact_cost": 3.0,
      "capacity_units": 3.0,
      "expected_net_value": 2.7646063203660987
    },
    {
      "qubit_index": 3,
      "bitstring_char_position_from_right": 3,
      "bitstring_char_index_in_6char_str": 2,
      "customer_id": "C0265",
      "predicted_probability": 0.2146196879868689,
      "ry_angle_rad": 0.9633644404890409,
      "expected_deposit_value": 23.0,
      "contact_cost": 4.0,
      "capacity_units": 4.0,
      "expected_net_value": 0.936252823697985
    },
    {
      "qubit_index": 4,
      "bitstring_char_position_from_right": 4,
      "bitstring_char_index_in_6char_str": 1,
      "customer_id": "C0318",
      "predicted_probability": 0.19792520406404,
      "ry_angle_rad": 0.9220980759313568,
      "expected_deposit_value": 21.0,
      "contact_cost": 3.0,
      "capacity_units": 3.0,
      "expected_net_value": 1.1564292853448395
    },
    {
      "qubit_index": 5,
      "bitstring_char_position_from_right": 5,
      "bitstring_char_index_in_6char_str": 0,
      "customer_id": "C0256",
      "predicted_probability": 0.194275255852506,
      "ry_angle_rad": 0.9129052102278539,
      "expected_deposit_value": 22.0,
      "contact_cost": 1.0,
      "capacity_units": 4.0,
      "expected_net_value": 3.274055628755132
    }
  ],
  "source_sha256": {
    "stage1_results.csv": "6da0a4fef28f23c6b7fbe85b06e4b452eef5d481e9988b574c8800018dd03d0a",
    "stage2_results.json": "e2a36e1affaf0be4f8ad646fc2865ed69f56aea9b75861d19710d4210a5d7f0d",
    "stage3_results.json": "6a331390a368b32a691ec0fef62b57446ab94dd95fdaf01866e5f38bae617cff",
    "results/stage1_validation_only_report.json": "f06ce4f8748a7703974aefef281616267ef6ee508332d93661668032817d1584",
    "frozen_config.json": "9d924485101b1172da2a308689f313a2deea87abb6d102af4877411d0ede3c70"
  }
}