diff --git a/.claude/settings.json b/.claude/settings.json
new file mode 100644
index 00000000..5f9894f4
--- /dev/null
+++ b/.claude/settings.json
@@ -0,0 +1,16 @@
+{
+ "hooks": {
+ "PostToolUse": [
+ {
+ "matcher": "Write|Edit",
+ "hooks": [
+ {
+ "type": "command",
+ "command": "jq -r '.tool_input.file_path // \"\"' | grep -q 'docs\\.json$' && cd /Users/lucy/docs && node scripts/sync-solutions-order.js 2>/dev/null || true",
+ "statusMessage": "Syncing homepage solution order..."
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/docs.json b/docs.json
index 3a976daf..0d44b2a0 100644
--- a/docs.json
+++ b/docs.json
@@ -55,6 +55,10 @@
{
"tab": "Solutions",
"groups": [
+ {
+ "group": "Overview",
+ "pages": ["solutions/overview"]
+ },
{
"group": "Embedded Wallets",
"pages": [
diff --git a/scripts/sync-solutions-order.js b/scripts/sync-solutions-order.js
new file mode 100644
index 00000000..db8853dc
--- /dev/null
+++ b/scripts/sync-solutions-order.js
@@ -0,0 +1,65 @@
+#!/usr/bin/env node
+// Keeps welcome.mdx solution ordering in sync with the Solutions tab in docs.json.
+// Run manually: node scripts/sync-solutions-order.js
+// Also runs automatically via Claude Code hook when docs.json is edited.
+
+const fs = require('fs');
+const path = require('path');
+
+const ROOT = path.join(__dirname, '..');
+const DOCS_JSON = path.join(ROOT, 'docs.json');
+const WELCOME_MDX = path.join(ROOT, 'welcome.mdx');
+
+// Display names for each page path as they appear on the homepage.
+// Update this map if a page is renamed or a new use case is added.
+const PAGE_NAMES = {
+ 'embedded-wallets/code-examples/embedded-consumer-wallet': 'Embedded Consumer Wallets',
+ 'products/embedded-business-wallets/overview': 'Embedded Business Wallets',
+ 'embedded-wallets/embedded-waas': 'Wallets-as-a-Service',
+ 'products/embedded-wallets/features/agentic-wallets': 'Agentic Wallets',
+ 'company-wallets/code-examples/signing-transactions': 'Signing Transactions',
+ 'company-wallets/code-examples/smart-contract-management': 'Smart Contract Management',
+ 'company-wallets/code-examples/payment-orchestration': 'Payment Orchestration',
+ 'company-wallets/use-cases/agentic-wallets': 'Agentic Wallets',
+};
+
+function getUseCases(docsJson, tabName, groupName) {
+ const tab = docsJson.navigation.tabs.find(t => t.tab === tabName);
+ if (!tab) return [];
+ const group = tab.groups.find(g => g.group === groupName);
+ if (!group) return [];
+ const useCasesGroup = group.pages.find(p => typeof p === 'object' && p.group === 'Use cases');
+ if (!useCasesGroup) return [];
+ return useCasesGroup.pages.filter(p => typeof p === 'string' && PAGE_NAMES[p]);
+}
+
+function buildList(pages) {
+ return pages.map((p, i) => ` ${i + 1}. [${PAGE_NAMES[p]}](/${p})`).join('\n');
+}
+
+function escapeRegex(str) {
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
+
+function replaceSection(content, marker, newList) {
+ const start = `{/* sync-start: ${marker} */}`;
+ const end = `{/* sync-end: ${marker} */}`;
+ const re = new RegExp(`${escapeRegex(start)}[\\s\\S]*?${escapeRegex(end)}`);
+ const replacement = `${start}\n${newList}\n ${end}`;
+ if (!re.test(content)) {
+ console.warn(`Warning: marker "${marker}" not found in welcome.mdx — skipping.`);
+ return content;
+ }
+ return content.replace(re, replacement);
+}
+
+const docsJson = JSON.parse(fs.readFileSync(DOCS_JSON, 'utf8'));
+const embeddedPages = getUseCases(docsJson, 'Solutions', 'Embedded Wallets');
+const companyPages = getUseCases(docsJson, 'Solutions', 'Company Wallets');
+
+let welcome = fs.readFileSync(WELCOME_MDX, 'utf8');
+welcome = replaceSection(welcome, 'embedded-wallets-use-cases', buildList(embeddedPages));
+welcome = replaceSection(welcome, 'company-wallets-use-cases', buildList(companyPages));
+fs.writeFileSync(WELCOME_MDX, welcome);
+
+console.log('✓ welcome.mdx solution ordering synced from docs.json');
diff --git a/solutions/overview.mdx b/solutions/overview.mdx
index 34871e29..2c89114e 100644
--- a/solutions/overview.mdx
+++ b/solutions/overview.mdx
@@ -1,8 +1,69 @@
---
-title: "ROUTER PAGE"
-description: "PLACEHOLDER LANDING PAGE"
+title: "Introducing Solutions"
+description: "Structured starting points for building onchain with Turnkey"
---
-# Solutions
+To help you ship quickly, we've packaged common patterns like wallet provisioning, policy enforcement, and transaction flows into easy integration paths called solutions. Each solution is built on Turnkey's underlying primitives, so you're never locked into a rigid workflow and can always go deeper when you need more flexibility.
-> **This is a placeholder landing page.** Content will be written in a future phase.
+Whether you're building consumer apps, business tooling, or AI-powered systems, there's a solution designed for your use case.
+
+---
+
+## Embedded Wallets
+
+Wallet experiences built directly into your product. Users authenticate with email, passkeys, or social login — you control the UX.
+
+
- Turnkey provides the infrastructure to create and manage wallets, sign transactions, and secure cryptographic keys — where every key operation is hardware-isolated, policy-governed, and cryptographically auditable. Build on a foundation where security isn't a tradeoff. +
+ Turnkey is infrastructure for generating wallets and keys, signing transactions, and controlling who can use them, when, and how. Private keys are secured in hardware-isolated enclaves and never exposed — not even to Turnkey.
+ Build at whichever level best meets your needs. Start with Solutions for common patterns, go deeper with our SDKs for more control, or reach all the way down to the API for complete flexibility. The full stack is always available. +
+ +