> For the complete documentation index, see [llms.txt](https://docs.layerlens.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.layerlens.ai/9.-improve-tune-the-system/gepa-basics.md).

# GEPA basics

Recipe — judge optimization basics. Pointer to the SDK judge\_optimization sample.

Canonical sample: [`samples/core/judge_optimization.py`](https://github.com/layerlens/stratix-python/blob/main/samples/core/judge_optimization.py) — estimate, run, and apply judge optimizations.

## SDK pattern

```python
# Estimate cost first
estimate = client.judge_optimizations.estimate(judge_id=judge.id, budget="medium")

# Start optimization (async)
optimization = client.judge_optimizations.create(judge_id=judge.id, budget="medium")

# Poll until done
while True:
 optimization = client.judge_optimizations.get(optimization.id)
 if optimization.status.value in ("success", "failure"):
 break

# Apply on success — creates a new judge version
if optimization.status.value == "success":
 client.judge_optimizations.apply(optimization.id)
```

Budget levels: `"light"`, `"medium"` (default), `"heavy"`. See [Bootstrap a judge before GEPA](https://github.com/LayerLens/gitbook-full/blob/main/08-evaluate/guides/bootstrap-judges.md) for the week-1 setup.

## See also

* [Tutorial 5: GEPA optimize](/9.-improve-tune-the-system/05-gepa-optimize.md)
* [Concept: Judges](/8.-evaluate-score-the-outputs/judges-1.md)
