diff --git a/Nodes/__pycache__/blueprint_node.cpython-312.pyc b/Nodes/__pycache__/blueprint_node.cpython-312.pyc
new file mode 100644
index 0000000..6a2ea35
Binary files /dev/null and b/Nodes/__pycache__/blueprint_node.cpython-312.pyc differ
diff --git a/Nodes/__pycache__/flyff_low_health_alert_node.cpython-312.pyc b/Nodes/__pycache__/flyff_low_health_alert_node.cpython-312.pyc
index f6b97ce..be1aa9a 100644
Binary files a/Nodes/__pycache__/flyff_low_health_alert_node.cpython-312.pyc and b/Nodes/__pycache__/flyff_low_health_alert_node.cpython-312.pyc differ
diff --git a/Nodes/blueprint_node.py b/Nodes/blueprint_node.py
new file mode 100644
index 0000000..cd6c742
--- /dev/null
+++ b/Nodes/blueprint_node.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+
+from OdenGraphQt import BaseNode
+from Qt import QtCore
+
+class BlueprintNode(BaseNode):
+    """
+    A placeholder node used to preview placement before spawning
+    the real node. It has a distinct color and minimal UI.
+    """
+    __identifier__ = 'bunny-lab.io.blueprint'
+    NODE_NAME = 'Blueprint Node'
+
+    def __init__(self):
+        super(BlueprintNode, self).__init__()
+        # Display a name so the user sees "Click to Place Node"
+        self.set_name("Click to Place Node")
+
+        # Give it a bluish color + white text, for visibility
+        self.set_color(60, 120, 220)  # R, G, B
+        self.view.text_color = (255, 255, 255, 200)
+        self.view.border_color = (255, 255, 255, 180)
+
+        # Make it slightly transparent if desired (alpha=150)
+        self.view._bg_color = (60, 120, 220, 150)
+
+        # Remove any default inputs/outputs (make it minimal)
+        for port in self.input_ports() + self.output_ports():
+            self.model.delete_port(port.name(), port.port_type)
+
+        # Store the "actual node" we want to spawn
+        self.create_property("actual_node_type", "", widget_type=0)
+
+    def process_input(self):
+        """
+        We do nothing here; it is purely a placeholder node.
+        """
+        pass
diff --git a/borealis.py b/borealis.py
index 8aff9c5..8bddcc8 100644
--- a/borealis.py
+++ b/borealis.py
@@ -21,13 +21,11 @@ def _patched_setSelectionArea(self, painterPath, second_arg, *args, **kwargs):
 # Monkey-patch the setSelectionArea method.
 QtWidgets.QGraphicsScene.setSelectionArea = _patched_setSelectionArea
 
-# --- End of patch section ---
-
 import sys
 import pkgutil
 import importlib
 import inspect
-from Qt import QtWidgets, QtCore
+from Qt import QtWidgets, QtCore, QtGui
 from OdenGraphQt import NodeGraph, BaseNode
 
 def import_nodes_from_folder(package_name):
@@ -47,12 +45,14 @@ def import_nodes_from_folder(package_name):
 def make_node_command(graph, nt):
     """
     Given a NodeGraph instance and a node type string nt, return a command
-    function that creates a node of that type.
+    function that creates a node of that type at the current mouse location.
     """
     def command():
         try:
-            node = graph.create_node(nt)
-            # (No need to force top-level if nodes are created as top-level by default.)
+            # Get the current cursor position in scene coordinates
+            pos = graph.cursor_pos()
+            # Create the node with the current cursor position.
+            node = graph.create_node(nt, pos=pos)
         except Exception as e:
             print(f"Error creating node of type {nt}: {e}")
     return command
@@ -103,4 +103,4 @@ if __name__ == '__main__':
     timer.timeout.connect(global_update)
     timer.start(500)
 
-    sys.exit(app.exec())
\ No newline at end of file
+    sys.exit(app.exec())