Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ dev-debug.log
coverage/
reports/

# Pixel mock server logs
pixel-mock-server/logs.json

# Task files
# tasks.json
# tasks/
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,23 +100,23 @@ Key internal docs:

## 📄 License

This is proprietary software. All rights reserved. Unauthorized copying, modification, distribution, display, or use of this software, via any medium is strictly prohibited. For licensing inquiries, please contact us at [sam.scalerg@leadorchestra.com](mailto:sam.scalerg@leadorchestra.com).
This is proprietary software. All rights reserved. Unauthorized copying, modification, distribution, display, or use of this software, via any medium is strictly prohibited. For licensing inquiries, please contact us at [sam.scaler@dealscale.io](mailto:sam.scaler@dealscale.io).

### Content Feeds

- [`https://leadorchestra.com/rss.xml`](https://leadorchestra.com/rss.xml) — proxied Beehiiv newsletter feed.
- [`https://leadorchestra.com/rss/youtube.xml`](https://leadorchestra.com/rss/youtube.xml) — proxied YouTube channel feed.
- [`https://leadorchestra.com/rss/hybrid.xml`](https://leadorchestra.com/rss/hybrid.xml) — combined blog + video feed.
- [`https://leadorchestra.com/videos/sitemap.xml`](https://leadorchestra.com/videos/sitemap.xml) — generated video sitemap. Run `pnpm run sitemap:videos` to refresh.
- [`https://dealscale.io/rss.xml`](https://dealscale.io/rss.xml) — proxied Beehiiv newsletter feed.
- [`https://dealscale.io/rss/youtube.xml`](https://dealscale.io/rss/youtube.xml) — proxied YouTube channel feed.
- [`https://dealscale.io/rss/hybrid.xml`](https://dealscale.io/rss/hybrid.xml) — combined blog + video feed.
- [`https://dealscale.io/videos/sitemap.xml`](https://dealscale.io/videos/sitemap.xml) — generated video sitemap. Run `pnpm run sitemap:videos` to refresh.
- See [`docs/rss-feeds.md`](docs/rss-feeds.md) for implementation details and maintenance notes.

## 📞 Contact

For business inquiries or support, please [contact our team](mailto:supportg@leadorchestra.com).
For business inquiries or support, please [contact our team](mailto:support@dealscale.io).

## 💼 Commercial Use

This software is available for commercial licensing. For pricing and licensing information, please contact our sales team at [sam.scaler@leadorchestra.com](mailto:sam.scaler@leadorchestra.com).
This software is available for commercial licensing. For pricing and licensing information, please contact our sales team at [sam.scaler@dealscale.io](mailto:sam.scaler@dealscale.io).

## What technologies are used for this project?

Expand Down
2 changes: 1 addition & 1 deletion _docs/AUTHENTICATION_SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ NEXTAUTH_SECRET=b99jxDeNdI9ezGqJy52tc1CrO2aUICfPOQhQbC4RzgU=
NEXTAUTH_URL=http://localhost:3000

# DealScale API (optional - defaults to production)
DEALSCALE_API_BASE=https://api.leadorchestra.com
DEALSCALE_API_BASE=https://api.dealscale.io

# OAuth Providers (when ready)
LINKEDIN_CLIENT_ID=your_linkedin_client_id
Expand Down
6 changes: 3 additions & 3 deletions _docs/ENVIRONMENT_VARIABLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ NEXTAUTH_URL=http://localhost:3000

### DealScale API Configuration
```bash
# DealScale API base URL (optional, defaults to https://api.leadorchestra.com)
DEALSCALE_API_BASE=https://api.leadorchestra.com
# DealScale API base URL (optional, defaults to https://api.dealscale.io)
DEALSCALE_API_BASE=https://api.dealscale.io
```

### Social OAuth Providers
Expand Down Expand Up @@ -61,7 +61,7 @@ NEXTAUTH_SECRET=your-development-secret-here
NEXTAUTH_URL=http://localhost:3000

# DealScale API
DEALSCALE_API_BASE=https://api.leadorchestra.com
DEALSCALE_API_BASE=https://api.dealscale.io

# LinkedIn OAuth (optional for development)
LINKEDIN_CLIENT_ID=your-linkedin-client-id
Expand Down
113 changes: 113 additions & 0 deletions _docs/_business/DOMAIN_MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Domain Migration: dealscale.io → dealscale.io

## ⚠️ IMPORTANT: Domain Change

**Effective Date:** [Current Date]

This document tracks the migration from `dealscale.io` to `dealscale.io` across the entire codebase.

## Overview

Deal Scale has migrated from the `dealscale.io` domain to `dealscale.io`. This change affects:

- **Primary Domain:** `dealscale.io` (was `dealscale.io`)
- **App Domain:** `app.dealscale.io` (was `app.dealscale.io`)
- **API Domain:** `api.dealscale.io` (was `api.dealscale.io`)
- **Email Domain:** `@dealscale.io` (was `@dealscale.io`)

## Email Address Changes

All email addresses have been updated to use the `@dealscale.io` domain:

| Old Email | New Email |
|-----------|-----------|
| `sam.scaler@dealscale.io` | `sam.scaler@dealscale.io` |
| `legal@dealscale.io` | `legal@dealscale.io` |
| `privacy@dealscale.io` | `privacy@dealscale.io` |
| `dpo@dealscale.io` | `dpo@dealscale.io` |
| `security@dealscale.io` | `security@dealscale.io` |
| `support@dealscale.io` | `support@dealscale.io` |

## URL Changes

### Canonical URLs
All canonical URLs in SEO metadata have been updated:
- `https://dealscale.io/*` → `https://dealscale.io/*`
- `https://app.dealscale.io/*` → `https://app.dealscale.io/*`
- `https://api.dealscale.io/*` → `https://api.dealscale.io/*`

### RSS Feeds
RSS feed URLs have been updated:
- `https://dealscale.io/rss.xml` → `https://dealscale.io/rss.xml`
- `https://dealscale.io/rss/hybrid.xml` → `https://dealscale.io/rss/hybrid.xml`
- `https://dealscale.io/rss/youtube.xml` → `https://dealscale.io/rss/youtube.xml`

## Files Updated

### Core Configuration
- ✅ `src/data/company.ts` - Contact email updated
- ✅ `src/data/constants/seo.ts` - All canonical URLs updated
- ✅ `src/utils/seo/staticSeo.ts` - Canonical URLs updated
- ✅ `src/app/page.tsx` - Homepage canonical fallback updated
- ✅ `src/middleware.ts` - App domain URLs updated
- ✅ `src/app/api/affiliates/payment-setup/route.ts` - API base URL updated

### Legal Documents
- ✅ `src/data/constants/legal/terms.ts` - Legal email updated
- ✅ `src/data/constants/legal/privacy.ts` - Privacy email updated
- ✅ `src/data/constants/legal/PII.ts` - DPO email updated
- ✅ `src/data/constants/legal/hippa.ts` - Security email updated
- ✅ `src/data/constants/legal/GDPR.ts` - DPO email updated
- ✅ `src/data/constants/legal/cookies.ts` - Privacy email updated

### Documentation
- ✅ `README.md` - Email addresses and RSS feed URLs updated
- ✅ `content/strapi-export/company_companyData.json` - Contact email updated

## Remaining Updates Needed

The following files may still contain references to `dealscale.io` and should be reviewed:

1. **Test Files** - Update test fixtures and snapshots
2. **Documentation Files** - Update `_docs/` directory references
3. **Environment Variables** - Update `.env` examples and documentation
4. **Package.json** - Update lighthouse performance test URLs
5. **Strapi Exports** - Update exported content files

## Action Items

- [ ] Review and update all test files
- [ ] Update documentation in `_docs/` directory
- [ ] Update environment variable documentation
- [ ] Verify all external integrations use new domain
- [ ] Update DNS and hosting configurations
- [ ] Set up redirects from old domain to new domain
- [ ] Update social media profiles and external listings
- [ ] Notify partners and integrations of domain change

## Notes

- **This is NOT Lead Orchestra** - Deal Scale is a separate entity and brand
- All references to `dealscale.io` should be replaced with `dealscale.io`
- Email addresses must use `@dealscale.io` domain
- Canonical URLs must point to `dealscale.io` for SEO purposes
- API endpoints should use `api.dealscale.io`
- App URLs should use `app.dealscale.io`

## Verification

To verify all changes have been applied, run:

```bash
# Find remaining references
grep -r "dealscale.io" --exclude-dir=node_modules --exclude-dir=.git

# Find remaining email references
grep -r "@leadorchestra" --exclude-dir=node_modules --exclude-dir=.git
```

## Related Documentation

- See `_docs/ENVIRONMENT_VARIABLES.md` for environment variable updates
- See `docs/rss-feeds.md` for RSS feed URL updates

2 changes: 1 addition & 1 deletion _docs/_business/aeo/ideas.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Equip DealScale with structured, conversational, and context-rich experiences th
- Bundle demo flows into stepwise HowTo schema for quick-start guides.

### 4. Private App Context Bridging
- Publish a controlled SoftwareApplication schema describing app.leadorchestra.com while keeping the app gated.
- Publish a controlled SoftwareApplication schema describing app.dealscale.io while keeping the app gated.
- Craft public onboarding overviews that highlight in-app capabilities without exposing private routes.
- Provide sanitized screenshots and workflow diagrams that assistants can reference.

Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/aeo/plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
- Prepare scripts and schema for Beehiiv blog posts to surface summary answers via `isPartOf` organization linkage.

### Milestone 4 – Private App Context Strategy (Weeks 6-7)
- Publish SoftwareApplication schema referencing app.leadorchestra.com with anonymized feature descriptions.
- Publish SoftwareApplication schema referencing app.dealscale.io with anonymized feature descriptions.
- Produce marketing collateral summarizing onboarding flows, safeguarding proprietary steps.
- Collaborate with product to define which in-app screenshots or diagrams can be publicly indexed.

Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/discoverability/aeo/ideas.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Equip DealScale with structured, conversational, and context-rich experiences th
- Bundle demo flows into stepwise HowTo schema for quick-start guides.

### 4. Private App Context Bridging
- Publish a controlled SoftwareApplication schema describing app.leadorchestra.com while keeping the app gated.
- Publish a controlled SoftwareApplication schema describing app.dealscale.io while keeping the app gated.
- Craft public onboarding overviews that highlight in-app capabilities without exposing private routes.
- Provide sanitized screenshots and workflow diagrams that assistants can reference.

Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/discoverability/aeo/plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
- Prepare scripts and schema for Beehiiv blog posts to surface summary answers via `isPartOf` organization linkage.

### Milestone 4 – Private App Context Strategy (Weeks 6-7)
- Publish SoftwareApplication schema referencing app.leadorchestra.com with anonymized feature descriptions.
- Publish SoftwareApplication schema referencing app.dealscale.io with anonymized feature descriptions.
- Produce marketing collateral summarizing onboarding flows, safeguarding proprietary steps.
- Collaborate with product to define which in-app screenshots or diagrams can be publicly indexed.

Expand Down
16 changes: 8 additions & 8 deletions _docs/_business/discoverability/discoverability.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<role name="System Architect">
<description>
You are responsible for orchestrating all Next.js app updates required for full SEO (search engine optimization)
and AEO (answer engine optimization) capabilities across www.leadorchestra.com, blog.leadorchestra.com, and app.leadorchestra.com.
and AEO (answer engine optimization) capabilities across www.dealscale.io, blog.dealscale.io, and app.dealscale.io.
</description>
</role>

Expand All @@ -17,7 +17,7 @@
<objective>Add /partners and /careers (Zoho Recruit integration) with structured data.</objective>
<objective>Add /linktree (Notion-powered resource hub) with ItemList schema for discoverability.</objective>
<objective>Ensure AI and search engines can parse all public pages for entity context.</objective>
<objective>Keep app.leadorchestra.com private yet contextually indexed as a SoftwareApplication schema.</objective>
<objective>Keep app.dealscale.io private yet contextually indexed as a SoftwareApplication schema.</objective>
</objectives>

<stylesheet>
Expand All @@ -27,7 +27,7 @@
</stylesheet>

<architecture>
<let name="domains" value='["www.leadorchestra.com","blog.leadorchestra.com","app.leadorchestra.com"]' />
<let name="domains" value='["www.dealscale.io","blog.dealscale.io","app.dealscale.io"]' />
<let name="schemaDir" value="packages/seo-core/schema" />
<let name="eventRoute" value="apps/www/app/events/[slug]/page.tsx" />
</architecture>
Expand All @@ -54,7 +54,7 @@
</schemaGenerators>
<description>
Export reusable JSON-LD builders and SchemaInjector component for all routes.
Use unified "@id": "https://www.leadorchestra.com/#organization" for entity linking.
Use unified "@id": "https://www.dealscale.io/#organization" for entity linking.
</description>
</task>

Expand Down Expand Up @@ -178,7 +178,7 @@
"hiringOrganization": {
"@type": "Organization",
"name": "DealScale.io",
"sameAs": "https://www.leadorchestra.com"
"sameAs": "https://www.dealscale.io"
},
"jobLocation": {
"@type": "Place",
Expand All @@ -204,10 +204,10 @@
<phase id="enhancements" title="Cross-Domain SEO and Blog Integration">
<task>
<title>Inject Blog Schema on Beehiiv</title>
<domain>blog.leadorchestra.com</domain>
<domain>blog.dealscale.io</domain>
<action>
Add site-level <script type="application/ld+json"> for Blog and BlogPosting.
Reference main org ID using "isPartOf": { "@id": "https://www.leadorchestra.com/#organization" }.
Reference main org ID using "isPartOf": { "@id": "https://www.dealscale.io/#organization" }.
</action>
</task>

Expand Down Expand Up @@ -240,7 +240,7 @@

<task>
<title>Bot Snapshot Verification</title>
<command>curl -A "Googlebot" https://www.leadorchestra.com/events</command>
<command>curl -A "Googlebot" https://www.dealscale.io/events</command>
<expect>Returns rendered HTML, not placeholder text.</expect>
</task>
</phase>
Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/discoverability/seo/ideas.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Capture strategic opportunities to elevate DealScale's organic visibility across www, blog, and app surfaces while aligning with technical capabilities.

## Guiding Principles
- **Entity-First Architecture:** All content should reinforce the canonical Organization graph node at `https://www.leadorchestra.com/#organization`.
- **Entity-First Architecture:** All content should reinforce the canonical Organization graph node at `https://www.dealscale.io/#organization`.
- **Multi-Domain Cohesion:** Ensure messaging and metadata stay synchronized across www, blog, and app domains.
- **Incremental Delivery:** Ship schema coverage, crawl control, and content improvements in progressive slices tied to measurable KPIs.
- **Data-Informed Iteration:** Pair every SEO enhancement with analytics hooks and validation paths.
Expand Down
8 changes: 4 additions & 4 deletions _docs/_business/seo/careers-integration-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ export function buildJobPostingSchema(input: JobPostingInput): JobPostingSchema
"@type": "Organization",
"@id": ORGANIZATION_ID,
name: input.hiringOrganizationName || "DealScale",
sameAs: "https://www.leadorchestra.com",
sameAs: "https://www.dealscale.io",
},
jobLocation: input.location && !input.location.remote ? {
"@type": "Place",
Expand Down Expand Up @@ -434,15 +434,15 @@ ZOHO_RECRUIT_API_URL=https://recruit.zoho.com/recruit/private/json/Jobs/getRecor
- Verify Organization schema includes careers URL in `sameAs`

2. **Sitemap Check**:
- Verify `/careers` appears in sitemap: `https://www.leadorchestra.com/sitemap.xml`
- Verify `/careers` appears in sitemap: `https://www.dealscale.io/sitemap.xml`
- Submit updated sitemap to Google Search Console

3. **Robots Check**:
- Verify careers page allows indexing
- Test with: `curl -A "Googlebot" https://www.leadorchestra.com/careers`
- Test with: `curl -A "Googlebot" https://www.dealscale.io/careers`

4. **Redirect Check**:
- Verify redirect works: `curl -I https://www.leadorchestra.com/careers`
- Verify redirect works: `curl -I https://www.dealscale.io/careers`
- Should return `301` status with `Location: https://dealscale.zohorecruit.com/jobs/Careers`

### Phase 2 Validation
Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/seo/external-app-integration-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Out-of-scope: Migrating the external experience into our monorepo or proxying au
## 4. SEO Metadata Strategy
1. **Static Metadata**
- Extend `STATIC_SEO_META["/external-tools/<slug>"]` and `staticSeoMeta` in `src/utils/seo/staticSeo.ts`.
- Set canonical URLs to the authoritative app domain (`https://app.leadorchestra.com/<slug>`) while keeping the marketing slug for routing.
- Set canonical URLs to the authoritative app domain (`https://app.dealscale.io/<slug>`) while keeping the marketing slug for routing.
2. **Dynamic Enhancements**
- Add `getExternalToolSeo(slug)` helper in `src/utils/seo/externalTools.ts` returning `SeoMeta`.
- Cover helper with tests under `src/utils/__tests__/seo/externalTools.test.ts`.
Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/seo/external-tools-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- Every route must export `generateMetadata` and pipe through `mapSeoMetaToMetadata`.
- Maintain canonical entries inside `src/utils/seo/staticSeo.ts`:
- Add `STATIC_SEO_META["/external-tools/<slug>"]`.
- When the canonical experience lives at `app.leadorchestra.com/<slug>`, set the canonical URL to that domain while keeping the marketing slug for routing.
- When the canonical experience lives at `app.dealscale.io/<slug>`, set the canonical URL to that domain while keeping the marketing slug for routing.
- Wire into `staticSeoMeta` map with priority + change frequency.
- Reference the route from primary navigation, footer, and relevant resource hubs to ensure crawl depth.
- Provide an OG/Twitter image – reuse constants from `src/utils/seo/seo.ts` when possible.
Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/seo/ideas.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Capture strategic opportunities to elevate DealScale's organic visibility across www, blog, and app surfaces while aligning with technical capabilities.

## Guiding Principles
- **Entity-First Architecture:** All content should reinforce the canonical Organization graph node at `https://www.leadorchestra.com/#organization`.
- **Entity-First Architecture:** All content should reinforce the canonical Organization graph node at `https://www.dealscale.io/#organization`.
- **Multi-Domain Cohesion:** Ensure messaging and metadata stay synchronized across www, blog, and app domains.
- **Incremental Delivery:** Ship schema coverage, crawl control, and content improvements in progressive slices tied to measurable KPIs.
- **Data-Informed Iteration:** Pair every SEO enhancement with analytics hooks and validation paths.
Expand Down
2 changes: 1 addition & 1 deletion _docs/_business/zustand/strapi-integration-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ NEXT_PUBLIC_STRAPI_URL=http://localhost:1337
STRAPI_API_TOKEN=your-api-token-here

# Production
NEXT_PUBLIC_STRAPI_URL=https://cms.leadorchestra.com
NEXT_PUBLIC_STRAPI_URL=https://cms.dealscale.io
STRAPI_API_TOKEN=${STRAPI_API_TOKEN_SECRET}
```

Expand Down
Loading
Loading