diff --git a/routes/app.php b/routes/app.php
index 1c2c20d4..0365008d 100644
--- a/routes/app.php
+++ b/routes/app.php
@@ -58,6 +58,9 @@
Route::get('brand', [OnboardingController::class, 'brand'])->name('app.onboarding.brand');
Route::post('brand', [OnboardingController::class, 'storeBrand'])->name('app.onboarding.brand.store');
Route::post('brand/skip', [OnboardingController::class, 'skipBrand'])->name('app.onboarding.brand.skip');
+ Route::post('brand/autofill', [OnboardingController::class, 'autofillBrand'])
+ ->middleware('throttle:10,1')
+ ->name('app.onboarding.brand.autofill');
Route::get('account', [OnboardingController::class, 'account'])->name('app.onboarding.account');
Route::post('account', [OnboardingController::class, 'storeAccount'])->name('app.onboarding.account.store');
});
diff --git a/tests/Feature/Ai/AutofillBrandTest.php b/tests/Feature/Ai/AutofillBrandTest.php
new file mode 100644
index 00000000..e1f46716
--- /dev/null
+++ b/tests/Feature/Ai/AutofillBrandTest.php
@@ -0,0 +1,145 @@
+user = User::factory()->create(['setup' => Setup::Brand]);
+ $this->workspace = Workspace::factory()->create(['user_id' => $this->user->id]);
+ $this->workspace->members()->attach($this->user->id, ['role' => Role::Member->value]);
+ $this->user->update(['current_workspace_id' => $this->workspace->id]);
+});
+
+test('extracts name, description, language, and logo from meta tags', function () {
+ Http::fake([
+ 'example.com' => Http::response(<<<'HTML'
+
+
+
+