diff --git a/src/caoscrawler/converters.py b/src/caoscrawler/converters.py
index bc30c7d4b0fc19b86283a21d3c5348de8c62baf6..7d994377fc582c20384e38db3c887c972354fa93 100644
--- a/src/caoscrawler/converters.py
+++ b/src/caoscrawler/converters.py
@@ -810,7 +810,29 @@ class DictElementConverter(Converter):
             raise RuntimeError("Element must be a DictElement.")
         return match_name_and_value(self.definition, element.name, element.value)
 
-    def create_records(self, values: GeneralStore, records: RecordStore, element: StructureElement):
+
+class HeuristicDictConverter(DictElementConverter):
+    """Extend the :py:class:`DictElementConverter` by a heuristic to set
+    property values from the dictionary keys.
+
+    """
+    def _validate_definition(definition: dict, name: str):
+
+        if "record_from_dict" not in definition or definition["record_from_dict"] is None:
+
+            raise ValueError(
+                "You need to specify the (root) record, the properties of "
+                f"which will be set from the dict in converter {name}."
+            )
+
+    def __init__(self, definition: dict, name: str, converter_registry: dict):
+
+        _validate_definition(definition)
+        super().__init__(definition, name, converter_registry)
+
+    def create_records(self, values: GeneralStore, records: RecordStore,
+                       element: StructureElement, referenced_record_callback:
+                       Optional[callable] = None):
 
         keys_modified = []
         if "record_from_dict" in self.definition and self.definition["record_from_dict"] is not None:
@@ -826,7 +848,7 @@ class DictElementConverter(Converter):
 class DictConverter(DictElementConverter):
     def __init__(self, *args, **kwargs):
         warnings.warn(DeprecationWarning(
-            "This class is depricated. Please use DictConverter."))
+            "This class is depricated. Please use DictElementConverter."))
         super().__init__(*args, **kwargs)
 
 
diff --git a/src/caoscrawler/default_converters.yml b/src/caoscrawler/default_converters.yml
index e192ab1b3bae70a6772cf6defba4a4592a92e584..98c7345db2c5d7f4996f5ad66b497a9e56429fad 100644
--- a/src/caoscrawler/default_converters.yml
+++ b/src/caoscrawler/default_converters.yml
@@ -11,6 +11,9 @@ Date:
 Dict:
   converter: DictElementConverter
   package: caoscrawler.converters
+DictHeuristic:
+  converter: HeuristicDictConverter
+  package: caoscrawler.converters
 FloatElement:
   converter: FloatElementConverter
   package: caoscrawler.converters