diff --git a/Project.toml b/Project.toml
index 12bc3cd5ed93d571d42db9c802d5ac6fd21f9c81..5ff3ade3ddd581bf72008830d57a70ed715926b1 100644
--- a/Project.toml
+++ b/Project.toml
@@ -17,6 +17,7 @@ GeoArrays = "2fb1d81b-e6a0-5fc5-82e6-8e06903437ab"
 Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
 LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36"
 Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
+PrecompileSignatures = "91cefc8d-f054-46dc-8f8c-26e11d7c5411"
 Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
 Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
 StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
@@ -27,4 +28,5 @@ TiffImages = "731e570b-9d59-4bfa-96dc-6df516fadf69"
 Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
 
 [compat]
+PrecompileSignatures = "3"
 julia = ">= 1.10"
diff --git a/src/Persefone.jl b/src/Persefone.jl
index 615fd88c231c7d61fb7761c6a8f723879e5e4806..8d805b21e8b0f9324899abdde99a8ae82fd141b6 100644
--- a/src/Persefone.jl
+++ b/src/Persefone.jl
@@ -32,6 +32,8 @@ using
     TOML,
     Unitful
 
+using PrecompileSignatures: @precompile_signatures
+
 ## Packages that may be useful later on:
 # MacroTools, http://fluxml.ai/MacroTools.jl/stable/utilities/
 # Debugger, https://github.com/JuliaDebug/Debugger.jl
@@ -152,6 +154,7 @@ include("core/simulation.jl") #this must be last
 function _precompile()
     precompile(initialise, (String,Int))
     precompile(stepsimulation!, (SimulationModel,))
+    @precompile_signatures(Persefone)
 end
 if ccall(:jl_generating_output, Cint, ()) == 1
     # only run this during precompilation