What it does
A bank wants to call six of 100 customers for a term-deposit campaign. Our pipeline has three stages:
- It predicts how likely each customer is to subscribe.
- It picks the six with the highest expected net value within budget and capacity.
- It estimates the chance that at least three of them subscribe.
Our answer: call C0031, C0081, C0079, C0087, C0397 and C0374. The chance that three or more subscribe is 0.197 from the quantum circuit, against an exact 0.1969.
Judges' page (no login, live checker and sampler): https://yasaswip012.github.io/atomiq-quantum-campaign/ Video (1 min 29 s): https://github.com/YASASWIP012/atomiq-quantum-campaign/blob/master/presentation/walkthrough.mp4 Deck: https://yasaswip012.github.io/atomiq-quantum-campaign/deck.pdf
How we built it
- Stage 1. A hybrid classifier blends logistic regression with quantum kernels built from a 6-qubit ZZ feature map. We tested a fidelity kernel and a projected kernel, with bandwidth tuned inside nested cross-validation to avoid kernel concentration. A decision rule committed to git before any fitting chose the final model (0.9 LR + 0.1 projected kernel).
- Stage 2. QAOA starts from a Dicke state (all ways to pick 6 of 10) built from CX, CRY and CCRY gates. An XY ring mixer keeps it there, so every shot has exactly six picks. A presolve proves that the budget and capacity limits can never bind for these candidates, so the circuit needs only 10 qubits. At depth 3 it returns the brute-force optimum 27 times more often than guessing, with zero optimality gap. A separate stress test tightens the limits until they bind, which exercises slack registers and penalties.
- Stage 3. One RY-rotated qubit per customer. We compare the exact Poisson-binomial value, statevector, 200k shots, Monte Carlo, an IBM Heron (FakeKingston) noise model, and two readout mitigations (tensored inversion and M3).
Challenges
With 35 positive examples, the quantum kernels did not beat logistic regression; we report that as a negative result. Making the pipeline identical on macOS and Linux (a PCA sign convention) changed our final answer, and we kept the platform-independent result. Every post-hoc change is listed in the README.
Accomplishments
- One command (
make all) reruns everything, and CI on Ubuntu reproduces the same six customers and the same P(>=3) on every push. - Unit tests and a 26-point submission checker tie customer IDs and probabilities across the three stages.
- An error budget shows that uncertainty from the Stage 1 model (SD 0.100) is about 110 times the shot noise.
What we learned
At this scale the limit on the answer is the data, not the quantum hardware.
What's next
- Run the Stage 3 circuit on ibm_kingston.
- Use a heavy-hex-native mixer to cut SWAPs.
- Collect campaign outcomes to retrain Stage 1.
Built With
- numpy
- python
- qiskit
- scikit-learn