diff --git a/src/core/management/commands/create_conference.py b/src/core/management/commands/create_conference.py
index 33121260e900d9ee1e6508c6f1ed3404812b2bd1..986a0fe5c69e8ac1aebbf82456d697456d921550 100644
--- a/src/core/management/commands/create_conference.py
+++ b/src/core/management/commands/create_conference.py
@@ -4,7 +4,8 @@ from datetime import datetime
 from zoneinfo import ZoneInfo
 
 from django.core.management import call_command
-from django.core.management.base import BaseCommand
+from django.core.management.base import BaseCommand, CommandError
+from django.utils.text import slugify
 
 from core.models.assemblies import Assembly
 from core.models.conference import Conference
@@ -351,25 +352,37 @@ class Command(BaseCommand):
             '--slug',
             type=str,
             help='The url slug of the new conference. If not given, it will be slugified from the name.',
+            default=None,
         )
         parser.add_argument(
             '-y',
             '--year',
             type=_validate_date,
-            help='The year of the CCC congress. If not given, it will use the current year.',
+            help=(
+                'The year of the CCC congress. If not given, it will use the current year.'
+                ' Setting this to 0 will skip any year-specific setup (e.g., nav entries).'
+            ),
+            default=None,
         )
         parser.add_argument(
             '--bootstrap',
             action=BooleanOptionalAction,
-            help=("Initialize the conference permission groups (e.g. 'Assembly-Teams')."),
+            help=("Initialize the conference permission groups (e.g. 'Assembly-Teams'). If not given, execution is determined by group presence in database."),
         )
+        parser.add_argument('-i', '--interactive', action='store_true', help='Ask for missing arguments', default=False)
 
     def handle(self, *args, **options):
-        if not (slug := options.get('slug')):
-            slug = input('SLUG of the new conference, e.g. "42c3": ')
+        interactive = options.get('interactive', False)
         if not (name := options.get('name')):
+            if not interactive:
+                self.print_help('manage.py', 'create_conference')
+                raise CommandError('Missing required argument: name. Use --interactive to be asked for missing arguments.')
             name = input('NAME of the new conference (long title): ')
-        if not (year := options.get('year')):
+        if not (slug := options.get('slug')) and interactive:
+            slug = input('SLUG of the new conference, e.g. "42c3": ')
+        elif not (slug := options.get('slug')):
+            slug = slugify(name)
+        if not (year := options.get('year')) and interactive:
             year_valid = False
             while not year_valid:
                 year = input("YEAR of the CCC congress (leave empty if it's something else): ")
@@ -378,6 +391,8 @@ class Command(BaseCommand):
                     year_valid = True
                 except ValueError:
                     self.stderr.write('Invalid year format. Please use YYYY.')
+        elif not (year := options.get('year')):
+            year = datetime.now()  # noqa: DTZ005
         year = year.year
         print(f'Creating conference {slug} ({name}) for year {year}')