diff --git a/lemi2seed/lemi_metadata.py b/lemi2seed/lemi_metadata.py
index a9e048ee07d97e458eedcfe8ae47b2d47dbb746d..0138d5f8595b005dab2ede349ddc4fdb31449ee0 100644
--- a/lemi2seed/lemi_metadata.py
+++ b/lemi2seed/lemi_metadata.py
@@ -31,6 +31,10 @@ logger = logging.getLogger(__name__)
 
 @dataclass
 class BaseMetadata:
+    """
+    This class handles the metadata attributes shared at all levels: survey;
+    station; run; electric; magnetic; auxiliary.
+    """
     # List of metadata fields that are required for archiving but "missing"
     # because not provided by the user.
     metadata_missing: Set[str] = field(default_factory=set)
@@ -40,6 +44,10 @@ class BaseMetadata:
 
 @dataclass
 class BaseSurvey(BaseMetadata):
+    """
+    This class handles the metadata attributes shared at the survey and station
+    levels.
+    """
     restricted_status: Optional[str] = field(default=None,
                                              metadata={'xml_id': ['restricted_status'],
                                                        'required': True,
@@ -72,6 +80,7 @@ class BaseSurvey(BaseMetadata):
 
 @dataclass
 class Survey(BaseSurvey):
+    """This class handles all the metadata attributes at the survey level."""
     acquired_by_author: Optional[str] = field(default=None,
                                               metadata={'xml_id': ['comments', 'mt.survey.acquired_by.author'],
                                                         'required': False,