Unclassified
GTM Motion: Simple Implementation
Tier C — Historical. This document is a point-in-time snapshot preserved for reference. For current architecture, see CANONICAL_PLATFORM_ARCHITECTURE.md.
The Motion
Marketplace App + One OAuth Redirect = Connected
User clicks IntegrateWise in marketplace → Redirects to IntegrateWise OAuth → Authorized → Features available.
That's it. No steps. No complexity.
Flow Diagram
Marketplace App (Claude/ChatGPT/Perplexity)
↓
User clicks "Connect IntegrateWise"
↓
Redirect to: https://integratewise.com/auth?app=claude&redirect_uri=...
↓
IntegrateWise OAuth (tenant creation + user auth)
↓
Redirect back to: https://claude.extension/connected?token=JWT
↓
Feature surface fully available
Implementation (Simple)
1. OAuth Endpoint
Location: services/continuity-bridge/src/routes/oauth.ts
// GET /oauth
export async function handleOAuth(request: Request) {
const url = new URL(request.url);
const app = url.searchParams.get('app'); // 'claude', 'chatgpt', 'perplexity'
const redirectUri = url.searchParams.get('redirect_uri');
// Store state
const state = crypto.randomUUID();
await KV.put(`oauth:${state}`, JSON.stringify({
app,
redirectUri,
createdAt: Date.now()
}), { expirationTtl: 600 }); // 10 min expiry
// Show OAuth form (email + org)
return showOAuthForm(state, app);
}
// POST /oauth/authorize
export async function handleAuthorize(request: Request) {
const { state, email, orgName } = await request.json();
// Get stored state
const stateData = await KV.get(`oauth:${state}`);
if (!stateData) throw new Error('Invalid state');
const { app, redirectUri } = JSON.parse(stateData);
// Create tenant + user + JWT
const tenant = await createTenant(orgName);
const user = await createUser(email, tenant.id);
const token = createJWT({ userId: user.id, tenantId: tenant.id });
// Redirect back to app with token
return redirect(`${redirectUri}?token=${token}&app=${app}`);
}
2. Feature Gate
Location: services/frontend/src/hooks/useIntegrateWise.ts
const token = getTokenFromURL();
if (!token) {
return {
connected: false,
features: []
};
}
// Token present = everything available
return {
connected: true,
features: [
'read_spine',
'write_decision',
'query_memory',
'invoke_agent_lee',
'create_task'
]
};
}
3. Feature Surface
Location: services/frontend/src/components/IntegrateWisePanel.tsx
const { connected, features } = useIntegrateWise();
if (!connected) {
return (
<div>
<button onClick={() => startOAuth()}>
Connect IntegrateWise
</button>
</div>
);
}
// Connected = show everything
return (
<div>
<SpineQueryBuilder />
<AgentLeeRecommendations />
<MemorySearch />
<DecisionLog />
<TaskSync />
</div>
);
}
4. Multi-Frontend Support
Each marketplace app points to same OAuth endpoint:
Claude Desktop:
URL: https://integratewise.com/auth?app=claude&redirect_uri=claude-extension://callback
ChatGPT Action:
URL: https://integratewise.com/auth?app=chatgpt&redirect_uri=https://chatgpt.com/integratewise/callback
Perplexity:
URL: https://integratewise.com/auth?app=perplexity&redirect_uri=https://perplexity.com/integratewise/callback
Replit:
URL: https://integratewise.com/auth?app=replit&redirect_uri=https://replit.com/integratewise/callback
Lovable:
URL: https://integratewise.com/auth?app=lovable&redirect_uri=https://lovable.dev/integratewise/callback
All redirect back with JWT. All show full feature surface.
Key Points
- One OAuth endpoint - All apps use same endpoint
- Simple state machine - Not connected → Connected (binary)
- Full features on connection - No progressive activation
- Multiple frontends - Same logic, different redirect URIs
- JWT token - Tenant + user scoped
Deployment Checklist
- OAuth endpoint deployed
- State management (KV) working
- JWT generation verified
- All 5 marketplace apps redirect configured
- Feature gate logic verified
- First test: manual OAuth flow
- Second test: verify all marketplace apps redirect correctly
Success = Click → OAuth → Features
That's the entire motion. Simple. Repeatable. Scales to infinite marketplace apps.