Your body builds protein from twenty amino acids. Eleven of them it can make itself. The other nine it cannot, which is why they are called essential and why they have to arrive in food. A complete protein is simply one that brings all nine in amounts worth counting.

The short answer

Meat, fish, eggs, dairy and soy are complete. Most other single plant sources are low in at least one of the nine, usually lysine in grains and methionine in legumes. This is a real difference and a smaller practical problem than the phrase makes it sound, because nobody eats one food.

The nine essential amino acids

They are histidine, isoleucine, leucine, lysine, methionine, phenylalanine, threonine, tryptophan and valine. Run short of any one of them and protein synthesis is limited by that shortage, no matter how much of the other eight arrived. This is why the term is completeness rather than quantity: a large amount of a protein missing one link still cannot build what it is missing.

How protein quality is actually scored

The current standard is the Digestible Indispensable Amino Acid Score, recommended by the Food and Agriculture Organization in 2013. DIAAS improves on the older scoring method by measuring amino acid uptake at the end of the small intestine, which is closer to what your body genuinely absorbs.

A score at or above 1.0 means the protein delivers every essential amino acid at or above requirement. Whey protein isolate clears 1.0. Soy protein isolate sits around 0.90, the best of any single plant source. Most other plant proteins land somewhere between 0.5 and 0.8.

A DIAAS of 0.7 does not mean the protein is useless. It means you need somewhat more of it to get the same delivered amino acids.

That reframing matters. Quality scores are a conversion rate, not a pass or fail.

Where plant proteins fall short

The pattern is consistent. Grains tend to be low in lysine. Legumes tend to be low in methionine. Analyses of commercially available plant isolates show methionine and lysine running lower than in animal sources fairly reliably.

The reason rice and beans is the standard example is that the two gaps are opposite. Grain covers the legume's methionine shortfall and the legume covers the grain's lysine shortfall. That is genuine complementarity, not folklore. What is folklore is the timing rule attached to it, which we will come to.

If you eat mainly plants, high-protein vegetables covers which ones carry meaningful amounts in the first place, which is the more common limiting factor than completeness.

Leucine and the on-switch

One of the nine does something the others do not. Leucine acts as a trigger for muscle protein synthesis rather than only a building block, and there appears to be a threshold effect: roughly 2.5 to 3.0 grams of leucine in a meal to get a full response.

Plant proteins vary widely here, with leucine content running from about 5% in hemp up to around 13.5% in corn protein, against about 9% in milk protein. That spread is why a plant-based meal can hit a protein target on paper and still fall under the leucine threshold.

It is also a solvable problem. Research on plant protein isolates fortified with added leucine found a muscle protein synthesis response that did not differ from whey. The gap is in the amino acid profile, not in something inherent to plants.

The combining rule that was retracted

Many people were taught that vegetarians must pair complementary proteins within the same meal. It came from Frances Moore Lappé's Diet for a Small Planet in 1971, and she publicly walked it back in the revised edition ten years later.

The reason it was wrong is that your body keeps a circulating pool of amino acids and draws on it continuously. Amino acids from breakfast are still available to combine with amino acids from lunch. Completeness resolves across a day, not across a plate.

So the practical rule is unglamorous: eat varied protein sources across the day and completeness looks after itself.

How OffRamp handles this

Here is the design decision we made, and it is the opposite of what the research above might suggest.

We could have built protein quality scoring into OffRamp. Attach a DIAAS value to every food, weight your logged grams by it, show an adjusted number. It would have been genuinely impressive, and we decided against it, because for the person the app is for it would make the number worse rather than better.

The reason is that after a GLP-1, the failure mode is almost never protein quality. It is total grams. Appetite is suppressed, meals get small, and the day ends well short of the floor. Someone in that position needs to see how far they are from their target, not a quality-adjusted figure they cannot interpret and cannot easily act on.

So OffRamp counts grams against a daily floor, with a bundled list of common foods so logging an ordinary meal is quick. The completeness question is handled the way the biology actually handles it, by eating varied sources across a day, and the app does not pretend to a precision it has no business claiming. If you are working out what your floor should be, how much protein after a GLP-1 covers it, and high-protein foods for maintenance covers the staples that make it easy.

One last thing worth saying plainly, because completeness is the kind of topic that attracts absolutism. If you eat animal protein, this question is already answered for you and you can stop thinking about it. If you eat mostly or entirely plants, it is worth a little attention, and the attention required is variety rather than a spreadsheet. Anything beyond that, particularly if you have a diagnosed condition affecting how you handle protein, is a question for your prescriber rather than for a scoring system.