diff --git a/Content.Server/_CP14/Jobs/CP14JobTokenComponent.cs b/Content.Server/_CP14/Jobs/CP14JobTokenComponent.cs
new file mode 100644
index 0000000000..8640a959b2
--- /dev/null
+++ b/Content.Server/_CP14/Jobs/CP14JobTokenComponent.cs
@@ -0,0 +1,11 @@
+namespace Content.Server._CP14.Jobs;
+
+///
+///
+///
+[RegisterComponent]
+public sealed partial class CP14JobTokenComponent : Component
+{
+ [DataField]
+ public LocId? Description;
+}
diff --git a/Content.Server/_CP14/Jobs/CP14JobTokenSystem.cs b/Content.Server/_CP14/Jobs/CP14JobTokenSystem.cs
new file mode 100644
index 0000000000..7605f2e432
--- /dev/null
+++ b/Content.Server/_CP14/Jobs/CP14JobTokenSystem.cs
@@ -0,0 +1,33 @@
+using Content.Shared.GameTicking;
+using Content.Shared.Inventory;
+using Content.Shared.Mind;
+using Robust.Server.Player;
+
+namespace Content.Server._CP14.Jobs;
+
+public partial class CP14JobTokenSystem : EntitySystem
+{
+ [Dependency] private readonly IPlayerManager _player = default!;
+ [Dependency] private readonly InventorySystem _inventory = default!;
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(GivePlayerToken);
+ }
+
+ private void GivePlayerToken(PlayerSpawnCompleteEvent ev)
+ {
+ var playerName = ev.Player.Name;
+ var playerEntity = ev.Player.AttachedEntity;
+
+ if (playerEntity is null)
+ return;
+
+ if (!_inventory.TryGetSlot(playerEntity.Value, "back", out var backSlot))
+ return;
+
+ var token = Spawn("CP14Paper");
+
+ }
+}