ConTact

Contact-First Antibody CDR Design via Explicit Interface Reasoning

Mansoor Ahmed1,2,*, Spencer VonBank3, Nadeem Taj4, Avais Jan1, Sujin Lee2, Naila Jan5, Murray Patterson1,*
1Georgia State University 2Georgia Institute of Technology 3DePauw University 4University of Engineering and Technology, Lahore 5Accenture

*Corresponding authors

ICML 2026 Workshop on Generative and Agentic AI for Biology, poster

TL;DRDesigning an antibody loop asks two different questions at once: which positions will touch the antigen, and what amino acid belongs at each of them. Existing models answer both in one head, so antigen signal is spread evenly over positions that mostly do not bind. ConTact answers the first question explicitly, with a supervised contact predictor, and uses its confidence to gate how much antigen information each position receives. That lifts every interface metric on all three splits of ChiMERa-Bench, and the ablations show the gain comes from the cascade rather than from any sequence prior.

Abstract

Computational antibody CDR design methods condition on antigen structure to generate binding loops. Yet, the existing architectures conflate two fundamentally distinct sub-problems: identifying which CDR positions will contact the antigen, and selecting amino acids at those positions. This forces models to learn contact reasoning implicitly through uniform message passing, diluting antigen signal across all positions equally. We introduce ConTact, a contact-then-act architecture that explicitly decomposes CDR design into three cascaded stages: learning surface complementarity fingerprints, predicting CDR-antigen contacts, and injecting contact-gated antigen features into the prediction head. A distance-biased cross-attention module encodes geometric priors favoring spatial neighbors, a contact-weighted cross-entropy loss concentrates gradient signal on binding-critical positions, and a standoff-aware contact-recovery loss places the designed loop against its native epitope. On the ChiMERa-Bench dataset, ConTact attains the best backbone RMSD, fraction of native contacts, interface RMSD, DockQ, and epitope F1 on all three splits, improving native-contact recovery by 11 to 16% relative over the strongest baseline, while matching the best sequence recovery.

Two questions, one head

A CDR design model is handed an antigen, a target epitope and an antibody framework, and has to fill in the loop. That task hides two problems of different kinds. The first is geometric, namely where the loop will touch the antigen, which positions form binding interactions at all. The second is chemical, namely what amino acid belongs at each of those positions, given the pocket it faces.

Current architectures answer both at once. Equivariant graph networks propagate antigen information through uniform message passing that treats every antigen residue alike. Diffusion models concatenate antibody and antigen residues into one flat graph with a fragment-type embedding to tell them apart. In every case a single cross-entropy spreads learning capacity evenly over the loop, so a glycine at the apex that touches nothing is weighted exactly like a tryptophan buried in an antigen pocket.

That matters because the interface is sparse. A CDR-H3 of 10 to 25 residues typically forms only 5 to 15 contacts. The amino acid at a contact position is directly constrained by the chemistry of its partner, while the rest of the loop is constrained mostly by backbone geometry and stability. Spreading the antigen signal evenly spends most of it on the positions that need it least, which is one explanation for a well-documented failure: predictions barely change when the antigen is removed, and BLOSUM substitution matrices explain model outputs about as well as learned likelihoods do.

ConTact answers where before what. A supervised head predicts which positions will contact the antigen, and its confidence then gates how much antigen information reaches each position, both in the forward pass and in the loss.

A three-stage cascade

The encoder is a relation-aware E(3)-equivariant graph network over the antibody-antigen complex, with ten edge types and three virtual nodes. Each virtual node is wired to every epitope residue and every CDR position, which puts any epitope residue two hops from any loop position and removes the bottleneck that sequential message passing otherwise creates.

Cross-attention then combines the loop with the antigen. Plain cross-attention scores a residue 5 Å away and one 30 Å away by feature similarity alone, so ConTact adds a Gaussian spatial bias to the logits, with the distance taken from the coordinates the encoder has just updated,

$$\alpha_{ij}^{(h)} = \operatorname{softmax}_j\!\left(\frac{(\mathbf{q}_i^{(h)})^\top \mathbf{k}_j^{(h)}}{\sqrt{D_h}} + \beta_{ij}\right), \qquad \beta_{ij} = \exp\!\left(-\frac{d_{ij}^2}{2\sigma^2}\right).$$

The bias is near one inside van der Waals range, falls to about 0.14 at twice the bandwidth, which is roughly the contact threshold, and is negligible beyond three times it. The three decoder stages then run in order.

Stage 1: complementarity fingerprint

A small vector summarizes the binding environment each position faces. It is trained contrastively, with the nearest antigen residue as the positive and distant ones as negatives, so it encodes what kind of pocket a position sits against.

Stage 2: contact prediction

A supervised head reads the position embedding, its nearest antigen neighbours, the distance to the antigen and the fingerprint, and emits a contact probability. A focal loss handles the 3 to 5 times class imbalance between non-contacts and contacts.

Stage 3: contact-gated injection

Local antigen features are added to each position in proportion to its predicted contact confidence, so distant antigen noise is shut out where the model expects no contact and the full local chemistry flows in where it does.

$$\mathbf{h}_i^\text{enriched} = \mathbf{h}_i^\text{cdr} + \hat{c}_i \cdot \text{MLP}_\text{proj}(\mathbf{h}_i^\text{local}).$$

The same confidence reweights the sequence loss, with $w_i = 1 + \alpha\,\hat c_i$ and $\alpha = 3$, so gradient concentrates where the antigen actually constrains the residue. A fifth term, the contact-recovery loss, supervises where the loop sits rather than where each residue lands in absolute space. For every position that contacts the antigen natively, a one-sided hinge pulls its distance to the nearest native epitope partner under the 8 Å cutoff with a 0.5 Å standoff margin, and a 4 Å floor stops the loop collapsing into the antigen,

$$\mathcal{L}_\text{crl} = \frac{1}{|\mathcal{C}|}\sum_{k \in \mathcal{C}} \Big[ \max(0,\, d_k - d_c + \delta) + \max(0,\, d_\text{min} - d_k) \Big].$$

Because it constrains a distance to the binding partner instead of an absolute coordinate, it improves placement without over-constraining the loop's conformation.

Two variants, and what separates them

CDR-H3 inherits a positional signature from V(D)J recombination, strongest at the conserved J-anchor. ConTact-G adds a germline log-prior to the sequence logits, conditioned on the ANARCI-assigned J-gene and the IMGT position and estimated from training counts alone, with a single learnable scale that converges near 0.88 on all three splits. It changes only the logits, so it cannot move the backbone. We report the two variants separately so that the sequence gain and the interface gain are never conflated: the prior buys 3 to 4 points of sequence recovery and leaves the interface metrics within seed noise.

The model has 9.68M trainable parameters, and a single run takes about 2.5 hours on one A100.

Best interface on every split

All methods are retrained on ChiMERa-Bench, which holds 2,922 antibody-antigen complexes under three splits that withhold unseen epitope shapes, unseen antigen folds and later depositions. Every number below is CDR-H3, the hardest loop.

Epitope-group splitAAR↑PPL↓RMSD↓fnat↑iRMSD↓DockQ↑epiF1↑
MEAN0.423.002.010.481.660.630.67
RAAD0.383.311.950.491.640.640.67
dyAb0.27–3.310.352.270.540.50
DiffAb0.22–2.640.482.270.580.56
AbFlowNet0.22–2.700.492.370.570.55
AbMEGD0.22–2.760.502.410.570.56
AbDockGen0.257.413.970.352.720.520.63
ConTact0.383.481.900.581.600.670.69
ConTact-G0.413.251.920.501.620.640.68

Best in bold, second best underlined. The antigen-fold and temporal splits are in the paper and follow the same pattern, with ConTact and ConTact-G taking first and second place on the interface metrics in every table.

11 to 16%
relative gain in native-contact recovery over the strongest baseline, across the three splits
1.58 Å
best CDR-H3 backbone RMSD, on the antigen-fold split
+3 points
DockQ over the best baseline on each split
0.82
best epitope F1, on the antigen-fold split

The interface separates methods more sharply than RMSD

RAAD and MEAN reach comparable backbone accuracy yet recover 7 to 10 fewer native contacts per hundred, so their loops are correctly shaped and imprecisely placed. The widest gap is on fnat, the fraction of native contacts a design reproduces, which is exactly the quantity the cascade and the contact-recovery loss optimize. Epitope F1 tells the same story from the antigen side: it asks whether the loop contacts the residues it was asked to target rather than an adjacent patch, and ConTact leads it on all three splits.

Sequence recovery is the one axis where the field is flat. ConTact-G reaches 0.40 to 0.41, the best on two splits and within a point of MEAN on the third, while base ConTact sits 3 to 4 points lower. The entire difference is the germline prior. Why no architecture moves this number is the subject of the last section.

What the cascade actually buys

Each row changes one design choice against a reference that keeps the contact-recovery loss and switches the cascade off, on a fixed seed and a single codebase. The reference starts higher than the main table, so the rows are read against each other.

Configurationcascade$\alpha$germlineAAR↑RMSD↓fnat↑iRMSD↓DockQ↑epiF1↑
Reference, contact-recovery loss onlyno0yes0.4071.8870.5651.5370.6670.705
Full cascadeyes3yes0.4071.9120.5931.5860.6740.724
Cascade with a weaker contact weightyes2yes0.4081.9300.5391.6170.6530.681
Interface distogram in place of the cascadeno0yes0.4071.9760.5791.6510.6620.700
Cascade without the germline prioryes3no0.3771.9090.5791.5730.6700.719
  and with a KL to the repertoireyes3no0.3671.8880.5851.5870.6700.706

Epitope-group split, CDR-H3, seed 42. Best in bold.

The cascade moves the interface

Switching it on raises fnat from 0.565 to 0.593 and epitope F1 from 0.705 to 0.724 at flat sequence recovery. The gain comes from the auxiliary losses shaping the shared encoder, since a disabled contact head emits a constant 0.5 and the contact weighting is then inert.

The contact weight has to be strong

Dropping $\alpha$ from 3 to 2 regresses every interface metric and leaves AAR untouched. A weak reweighting spreads gradient back toward the positions that do not bind.

Exact distances are not a substitute

Replacing the cascade with a distogram loss that matches native interface distances holds fnat and DockQ at the reference and worsens both RMSD and iRMSD, the two metrics it supervises most directly.

the separation that matters

The interface is germline-independent

Removing the prior costs 3 points of sequence recovery and leaves fnat, iRMSD, DockQ and epitope F1 within seed noise. The interface gains owe nothing to the sequence prior, so the two contributions are separable.

What the designs look like

Everything in this section is read from the per-complex outputs that the evaluation harness stored for the epitope-group test split, the run whose mean recovery and backbone error reproduce the ConTact row of the table above. Nothing here is redrawn by hand.

One loop, placed against its epitope

PDB 7X7T, a CDR-H3 of 14 residues on a 187-residue antigen. The left picture is the whole complex with the epitope painted on the antigen surface, and the dashed window is what the right picture magnifies. Each loop is drawn from the coordinates the method produced, in the frame of the deposited complex.

Distances are the alpha-carbon RMSD of each designed loop against the deposited one, and the reach counts the epitope residues a loop comes within 8 Å of, the cutoff the interface metrics use. DiffAb is left out of this picture because the harness stored its coordinates in a different frame, which a check in the extraction script catches.

Designed sequences, against the deposited ones

Matched positions are shaded. The amber underline marks the positions that touch the antigen in the deposited structure, which is where the contact cascade concentrates its gradient and where the chemistry is most constrained.

The pattern the probes predict is visible by eye. Recovery is respectable overall and thin exactly at the contact positions, which is the gap that the apex backbone error leaves open.

Which amino acids the designs reach for

Counted over all 292 designed loops of the split. The deposited loops spread their mass across the alphabet, while the structure-conditioned models concentrate it on a few residues, tyrosine and glycine above all. ConTact is a structural method and inherits that behaviour, which is consistent with its gains sitting on the interface axis rather than the sequence axis.

Frequency of each amino acid across the designed CDR-H3 loops of the epitope-group test split.

Why sequence recovery saturates

Every architecture in the tables lands within a few points of the same sequence recovery, and our ablations move the interface while leaving it flat. Four probes trace both ceilings to a single cause: no model in this setting resolves the CDR-H3 apex backbone better than about 2.4 Å from the framework, the antigen and the masked loop alone.

Inverse-folding probeoverallapexcontactanchor
Position only0.3280.1770.1860.519
  with the true torsions0.4190.2800.2760.606
  with local Cartesian geometry0.4610.3390.3330.629
Shuffle control–0.1770.184–

Recovery of a probe that predicts each residue from geometry alone. Giving it the deposited backbone lifts apex and contact recovery by 15 to 16 points, and shuffling the structure-sequence pairing collapses the gain to the position-only floor.

So the missing sequence signal is real geometry, and it lives in the antibody's own backbone. The trouble is that the predicted backbone is worst exactly where that signal is richest. Breaking the error down along the loop, the apex averages 2.41 Å while the last three J-anchor positions average 1.12 Å, and the structure-to-sequence signal turns net negative once backbone error passes 2 Å. The model builds precisely the segment it cannot then read a sequence from.

Co-design does not break it

A torsion head that rebuilds the loop by NeRF is exact under true internal coordinates, with a round trip of 0.06 Å, yet learns apex torsions only to 47 degrees against the roughly 15 needed, and feeding them to the sequence head changes nothing.

The apex is not retrievable

Superimposing every same-length training loop on the test stem, an oracle picking the best one reaches 2.05 Å median apex error against 2.41 Å for plain mean regression. Ranking by stem similarity gives 7.70 Å, and the oracle loop sits at median rank 38.

The interface rides the same wall

fnat, epitope F1, iRMSD and DockQ are all functions of the same coordinates through an 8 Å contact graph. Tightening the contact-recovery margin trades fnat up and iRMSD down along a DockQ contour pinned near 0.67, so loss reweighting slides along the frontier without moving it.

Position, germline, framework flanks, antigen microenvironment, torsion co-design and library retrieval are each dead ends for the apex. Raising sequence recovery calls for a sharper apex generator or an external evolutionary signal, such as a protein language model, rather than further loss engineering.

That last sentence is the starting point of a companion paper. EvoStruct brings ESM-2 into the sequence head through a structural adapter and recovers the vocabulary that structure-only models lose.

BibTeX

@inproceedings{ahmed2026contact,
  title     = {{ConTact}: Contact-First Antibody {CDR} Design via Explicit Interface Reasoning},
  author    = {Ahmed, Mansoor and VonBank, Spencer and Taj, Nadeem and Jan, Avais and Lee, Sujin and Jan, Naila and Patterson, Murray},
  booktitle = {ICML 2026 Workshop on Generative and Agentic AI for Biology},
  year      = {2026},
  url       = {https://openreview.net/forum?id=c36TRdJayj}
}