diff --git a/docs/user-guide/fairness.md b/docs/user-guide/fairness.md
index eb9d9865f5bdcf29357410175849487cc0224a44..0d03d19237d2e6c281c5e0b090fdb5c3873acf22 100644
--- a/docs/user-guide/fairness.md
+++ b/docs/user-guide/fairness.md
@@ -335,7 +335,7 @@ as follows:
 from declearn.fairness.monitor import FairnessMonitorServer
 
 fairness = FairnessMonitorServer(
-  f_type="demographic_parity",  # choose any fairness definition
+    f_type="demographic_parity",  # choose any fairness definition
 )
 
 optim = FLOptimConfig.from_params(
@@ -353,12 +353,26 @@ controller. For instance, to use Fed-FairGrad:
 from declearn.fairness.fairgrad import FairgradControllerServer
 
 fairness = FairgradControllerServer(
-  f_type="demographic_parity",  # choose any fairness definition
-  eta=0.1,  # adjust this based on the SGD learning rate and empirical tuning
-  eps=0.0,  # change this to configure epsilon-fairness
+    f_type="demographic_parity",  # choose any fairness definition
+    eta=0.1,  # adjust this based on the SGD learning rate and empirical tuning
+    eps=0.0,  # change this to configure epsilon-fairness
 )
 ```
 
+Equivalently, the choice of fairness controller class and parameters may be
+specified using a configuration dict (that may be parsed from a TOML file):
+
+```python
+fairness = {
+    # mandatory parmaeters:
+    "algorithm": "fairgrad",         # name of the algorithm
+    "f_type": "demographic_parity",  # name of the group-fairness definition
+    # optional, algorithm-dependent hyper-parameters:
+    "eta": 0.1,
+    "eps": 0.0,
+}
+```
+
 Notes:
 
 - `declearn.fairness.core.list_fairness_functions` may be used to review all