diff --git a/SVSim.Database/SeedData/TutorialPresents.cs b/SVSim.Database/SeedData/TutorialPresents.cs
new file mode 100644
index 0000000..3df9f20
--- /dev/null
+++ b/SVSim.Database/SeedData/TutorialPresents.cs
@@ -0,0 +1,30 @@
+namespace SVSim.Database.SeedData;
+
+///
+/// The five tutorial gifts every fresh viewer is given at signup. Mirrors the prod-shaped
+/// gift inbox — these rows are indistinguishable from server-issued gifts at read time
+/// except for the Source tag.
+///
+/// Moved here from the old static GiftController.TutorialGifts PresentDto array;
+/// now insert-only data, not DTOs, so signup writes go straight into ViewerPresent rows
+/// without round-tripping through wire types.
+///
+public static class TutorialPresents
+{
+ public record Spec(
+ string PresentId,
+ int RewardType,
+ long RewardDetailId,
+ long RewardCount,
+ int? ItemType,
+ string Message);
+
+ public static readonly IReadOnlyList All = new[]
+ {
+ new Spec("71478626", 1, 0, 400, null, "For completing the tutorial"), // Crystal
+ new Spec("71478627", 9, 0, 100, null, "For completing the tutorial"), // Rupy
+ new Spec("71478628", 4, 1, 3, 1, "For completing the tutorial"), // Item type=1, x3 of item 1
+ new Spec("71478629", 4, 80001, 40, 2, "For completing the tutorial"), // Pack ticket 80001 x40
+ new Spec("71478630", 4, 90001, 1, 2, "For completing the tutorial"), // Pack ticket 90001 x1
+ };
+}