Leadmetrics v3 — Product Features Index
Last updated: April 2026
Platform: AI-driven marketing automation SaaS — pnpm monorepo
Portals: Dashboard (client, :3000) · DM Portal (reviewer, :3002) · Manage (superadmin, :3001) · Knowledgebase (docs, :3004)
Backend: Fastify API (:3003) · 5 BullMQ worker servers · Prisma/PostgreSQL · Qdrant · Typesense · Redis
Build roadmap: docs/roadmap.md — phased build plan derived from §15–§17 of this document
Status Key
| Symbol | Meaning |
|---|---|
| ✅ Complete | Live and verified in the running app |
| 🔶 Partial | Built but incomplete — specified gaps documented |
| 🚧 In Progress | Active development (recent commits) |
| 📋 Planned | Specified in docs/code scaffolding, not yet built |
| 🔴 Has Blocking Issues | Exists but breaks core value or security |
| 🟡 Has Pre-launch Issues | Works but has known gaps needed before first real tenant |
Priority markers on known issues:
- 🔴 Blocking — required before the system delivers core value
- 🟡 Pre-launch — needed before first real tenant
- 🟢 Post-MVP — deferrable
Table of Contents
- Authentication & Onboarding
- Dashboard Portal — Core
- Dashboard Portal — Content
- Dashboard Portal — SEO
- Dashboard Portal — CRM & Campaigns
- Dashboard Portal — AI Features
- Dashboard Portal — Settings & Billing
- DM Portal
- Manage Portal
- AI Agent Layer
- Infrastructure & Platform Services
- Integrations & Channels
- Mobile App
- Knowledgebase App
- Planned & Unbuilt Features
- Known Issues Summary
1. Authentication & Onboarding
1.1 Dashboard Auth (JWT)
Status: ✅ Complete (Better Auth removed April 2026 — now uses Fastify JWT via @leadmetrics/middleware)
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(auth)/login/page.tsx · (auth)/forgot-password/ · (auth)/reset-password/ · (auth)/register/ · (auth)/signup/ |
| API | apps/api/src/routers/auth.ts |
| Docs | docs/apps/dashboard/screens.md (A1–A3) |
Email/password login · registration · password reset · tenant-scoped session via TenantMember · secure httpOnly cookies
Known gaps:
- 🟡 Email verification: users created with
emailVerified: false; no verification email, no endpoint, no access gate —docs/missing-incomplete-features/email-verification-missing.md - 🟡 JWT logout has no server-side revocation; stolen tokens valid until expiry —
docs/missing-incomplete-features/stateless-jwt-no-revocation.md - 📋 Social OAuth (Google, Microsoft, LinkedIn) — buttons exist, redirect logic not implemented
1.2 Self-Signup Wizard
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(auth)/signup/page.tsx · signup/company/ · signup/location/ · signup/plan/ · signup/expired/ |
| Docs | docs/apps/dashboard/screens.md (S1–S4) · docs/project/self-signup-flow.md |
4-step signup: account → company → location → plan · searchable comboboxes · Razorpay bypass for E2E
1.3 DM Portal Auth (Custom JWT)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dm/src/app/(auth)/login/page.tsx · (auth)/forgot-password/ · (auth)/reset-password/ |
| Middleware | apps/dm/src/middleware.ts |
| Docs | docs/apps/dm-portal/screens.md (A1) |
15-minute access token + refresh cookie · middleware silently refreshes · roles: reviewer, admin, super_admin
1.4 Manage Portal Auth (Custom JWT)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/manage/src/app/(auth)/login/page.tsx |
| Middleware | apps/manage/src/middleware.ts |
Superadmin-only login · same JWT refresh pattern as DM
1.5 Onboarding Wizard
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/onboarding/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/onboarding/actions.ts |
| Worker | packages/agents/src/workers/setup.worker.ts |
| Docs | docs/project/onboarding-wizard.md · docs/project/onboarding-flow.md |
4-step wizard: Brand Voice → Brand Assets → Docs → Launch · completeOnboarding() triggers setup agent chain · /onboarding route gate · 32 E2E/unit/integration tests
2. Dashboard Portal — Core
2.1 Home / Dashboard (/dashboard)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/dashboard/page.tsx |
| API | apps/api/src/routers/tenant/main.ts → GET /api/dashboard/stats |
| Docs | docs/apps/dashboard/screens.md (D1) · docs/project/dashboard-pipeline-stages.md |
Pipeline stage detection (1/2/4/5) · GettingStartedView for stages 1–4 · RegularDashboard for stage 5+ · real-time stats · goal/activity/deliverable tiles · agent status banner
Note: Leads tile shows ”—” — leads feature not yet wired to dashboard home.
2.2 Strategy (/strategy, /strategy/deliverable-plan, /strategy/versions/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/strategy/page.tsx · strategy/deliverable-plan/page.tsx · strategy/versions/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/strategy/actions.ts · strategy/deliverable-plan/actions.ts |
| Worker | packages/agents/src/workers/strategy.worker.ts · packages/agents/src/workers/strategy-writer.worker.ts |
| API | apps/api/src/routers/dm/strategy.ts · apps/api/src/routers/tenant/main.ts |
| Docs | docs/apps/dashboard/screens.md (D2) · docs/agents/strategy-writer.md |
AI-generated strategy document · MarkdownRenderer · status: draft → pending_review → approved / rejected · PDF export (cover + TOC + content + footer) · version history · right sidebar: Timeline, Details, Revise tabs · Deliverable Plan: goals, monthly deliverables, credit estimates
2.3 Client Context (/context, /context/versions/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/context/page.tsx · context/versions/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/context/actions.ts |
| Worker | packages/agents/src/workers/content.worker.ts (context-file-writer role) |
| API | apps/api/src/routers/dm/context.ts |
| Docs | docs/apps/dashboard/screens.md (D9) · docs/project/client-context-page.md |
AI-generated client context doc · full-pipeline revision trigger · cycle filtering · version numbering · PDF export · ? help icon
2.4 Goals (/goals, /goals/archived)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/goals/page.tsx · goals/archived/page.tsx |
| API | apps/api/src/routers/admin/goals.ts · apps/api/src/routers/dm/strategy.ts |
| Docs | docs/apps/dashboard/screens.md (D3, D3b) · docs/project/goals-page.md |
Goals from latest approved DeliverablePlan only · stat cards: Total, Ahead, On Track · progress bars · archived goals accordion
2.5 Deliverables (/deliverables)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/deliverables/page.tsx |
| Docs | docs/apps/dashboard/screens.md (D5) · docs/project/deliverables-page.md |
Period picker · expandable rows with per-item deliverable cards · planning notes as plain prose · 4-status flow: pending_review → dm_approved → approved → archived
2.6 Activities (/activities, /activities/[id], /activities/history)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/activities/page.tsx · activities/[id]/page.tsx · activities/history/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/activities/[id]/actions.ts |
| Worker | packages/agents/src/workers/activity.worker.ts |
| API | apps/api/src/routers/dm/activities.ts |
| Docs | docs/apps/dashboard/screens.md (D6) · docs/project/activities-multiview.md · docs/project/activity-detail-page.md |
4 views: list / grouped / calendar / kanban · URL-persisted state · cursor pagination · dueDate throughout · ContentPreviewCard per type · “Add Activity” button for manual tasks · force-remount with key={listKey}
2.7 Content Calendar (/calendar)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/calendar/page.tsx |
| Component | packages/ui/src/ContentCalendar.tsx |
| API | apps/api/src/routers/calendar.ts |
| Docs | docs/apps/dashboard/screens.md (D8) · docs/project/calendar-page.md · docs/project/content-calendar-component.md |
react-big-calendar · left sidebar checkbox filters (type + platform) · floating popup with type-specific previews · blog, social, newsletter events · accessible via topbar CalendarDays icon
2.8 Channels (/channels, /channels/[id])
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/channels/page.tsx · channels/[id]/page.tsx |
| API | apps/api/src/routers/channels.ts · apps/api/src/routers/channel-connect.ts |
| Providers | packages/providers/google/ · packages/providers/meta/ · packages/providers/linkedin/ |
| Docs | docs/apps/dashboard/screens.md (D7, D7b) · docs/project/linkedin-oauth-channels.md |
Channel list · 8 channel types (GA, GSC, LinkedIn, Facebook, Instagram, GBP, Google Ads, Meta Ads) · channel detail with Insights tab · LinkedIn OAuth (CORS null-origin fix, v202504 API)
Known gaps:
- 🔴 Twitter/X and Zoho channel detail pages fall through to
NotImplementedDetailplaceholder —docs/missing-incomplete-features/twitter-zoho-channel-detail-pages.md - 🔴 Connected channels list hardcoded to
["facebook","linkedin","instagram"]in deliverable planner —docs/missing-incomplete-features/hardcoded-connected-channels.md - 🟡 No OAuth token key rotation for AES-256-GCM encryption —
docs/missing-incomplete-features/oauth-token-key-rotation.md
2.9 Insights (/insights, /insights/[insightId])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/insights/page.tsx · insights/[insightId]/page.tsx |
| Workers | packages/agents/src/workers/insights/ga-insights.worker.ts · gsc-insights.worker.ts · gbp-insights.worker.ts · google-ads-insights.worker.ts · meta-ads-insights.worker.ts · facebook-insights.worker.ts · instagram-insights.worker.ts · linkedin-insights.worker.ts |
| Base | packages/agents/src/workers/insights/insight-worker-base.ts |
| API | apps/api/src/routers/insights.ts · apps/api/src/routers/tenant/main.ts → /tenant/v1/insights |
| Docs | docs/apps/dashboard/screens.md (D7, I1–I3) · docs/project/insights-feature.md |
ChannelInsight model · 8 BullMQ workers · insight list + detail · Insights tab on 6 channel detail pages · 46 tests passing (April 2026)
2.10 Reports (/reports, /reports/detail/[id])
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/reports/page.tsx · reports/detail/[id]/page.tsx |
| Workers | packages/agents/src/workers/custom-report-writer.worker.ts · packages/agents/src/workers/report-writer.worker.ts |
| API | apps/api/src/routers/dm/reports.ts |
| Docs | docs/apps/dashboard/screens.md (D8) · docs/project/reports-feature.md · docs/agents/report-writer.md |
3 sources: agent-generated / DM upload / AI-generated via custom-report-writer · generate modal in dashboard + DM · AI Chat tool integration
Known gaps:
- 🟡 Full client-facing report viewer incomplete —
docs/missing-incomplete-features/performance-reporting-dashboard.md - 🟡 Push to Slack, Notion, Google Drive — not built —
docs/missing-incomplete-features/report-delivery-integrations.md
2.11 Notifications
Status: 🔴 Has Blocking Issues
| Resource | Path |
|---|---|
| Components | packages/ui/src/ (notification dropdown) |
| Server | apps/servers/notifications/src/ |
| API | apps/api/src/routers/admin/notifications.ts |
| Docs | docs/project/notification-dropdown.md · docs/project/notifications-arch.md |
Notification dropdown in all 3 portals · Dashboard: Socket.IO real-time · DM: activeTenantId prop + tenant:join emit · Manage: REST polling
Known gap:
- 🔴 Notifications server publishes to a non-existent HTTP hub instead of Redis Pub/Sub — bell badge never updates —
docs/missing-incomplete-features/notification-hub-sse-service.md
2.12 Peer-to-Peer Chat
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/... · apps/dm/src/app/(dm)/chat/page.tsx · apps/manage/src/app/(manage)/chat/page.tsx |
| Component | packages/ui/src/chat/ChatProvider.tsx |
| Docs | docs/project/chat-feature.md |
Socket.IO · sound / dark mode / offline display · shared in packages/ui · duplicated per app
3. Dashboard Portal — Content
3.1 Blog Posts (/blog, /blog/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/blog/page.tsx · blog/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/blog/actions.ts |
| Worker | packages/agents/src/workers/blog-writer.worker.ts · packages/agents/src/workers/blog-faq-writer.worker.ts · packages/agents/src/workers/seo-optimizer.worker.ts |
| API | apps/api/src/routers/blog.ts · apps/api/src/routers/dm/blog.ts · apps/api/src/routers/admin/content.ts |
| Docs | docs/apps/dashboard/screens.md · docs/project/blog-flow.md · docs/agents/blog-writer.md · docs/project/seo-optimizer-feature.md |
Status: draft → dm_review → client_review → client_approved · rejection re-run · RAG auto-ingest on approval · generate from ContentBrief · SEO score + AI suggestions via seo-optimizer (BlogPost.seoScore, seoAnalysis fields)
3.2 Social Posts (/social, /social/[id])
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/social/page.tsx · social/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/social/actions.ts |
| Workers | packages/agents/src/workers/social-post-writer.worker.ts · packages/agents/src/workers/social-post-designer.worker.ts · packages/agents/src/workers/gbp-post-writer.worker.ts |
| API | apps/api/src/routers/social.ts · apps/api/src/routers/dm/social.ts |
| Providers | packages/providers/meta/ · packages/providers/linkedin/ · packages/providers/openai-images/ |
| Docs | docs/apps/dashboard/screens.md · docs/project/social-post-pipeline.md · docs/agents/social-post-writer.md · docs/project/platform-post-preview.md |
Status: draft → dm_review → design_pending → client_review → client_approved → publishing · GPT Image 1.5 via Azure · GBP posts skip design phase · per-platform mockup previews · RAG auto-ingest on approval
Known gaps:
- 🔴 Facebook/Instagram/LinkedIn providers built but no worker publishes posts after approval —
docs/missing-incomplete-features/social-post-platform-publishing.md - 🟡 TikTok API provider not built —
docs/missing-incomplete-features/tiktok-publishing.md
3.3 Landing Pages (/landing-pages, /landing-pages/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/landing-pages/page.tsx · landing-pages/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/landing-pages/actions.ts |
| Worker | packages/agents/src/workers/landing-page-writer.worker.ts |
| API | apps/api/src/routers/landing-pages.ts · apps/api/src/routers/dm/landing-pages.ts |
| Common | packages/common/src/landing-page-html.ts |
| Provider | packages/providers/wordpress/ (built, not wired for auto-publish) |
| Docs | docs/apps/dashboard/screens.md · docs/agents/landing-page-writer.md |
landing-page-writer BullMQ worker · detail page with preview and approve/reject
Known gap: CMS auto-publish (WordPress/Webflow) not wired — docs/missing-incomplete-features/cms-publishing.md
3.4 Newsletters (/newsletters, /newsletters/[id])
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/newsletters/page.tsx · newsletters/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/newsletters/[id]/actions.ts |
| Worker | packages/agents/src/workers/newsletter-sender.worker.ts · packages/agents/src/workers/email-writer.worker.ts |
| API | apps/api/src/routers/newsletters.ts · apps/api/src/routers/dm/newsletters.ts |
| Provider | packages/providers/sendgrid/ · packages/providers/ses/ · packages/providers/smtp/ |
| Docs | docs/apps/dashboard/screens.md · docs/project/newsletter-feature.md · docs/agents/email-writer.md |
EmailNewsletter model · status: draft → dm_review → approved → sending → sent · list + calendar toggle (orange tiles) · Resend-based delivery · unsubscribe via token
Known gaps:
- 🔴 Mailchimp & Klaviyo send after newsletter approval — not built —
docs/missing-incomplete-features/email-newsletter-delivery.md
3.5 Media Library (/media)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/media/page.tsx |
| API | apps/api/src/routers/media.ts · apps/api/src/routers/media-library.ts · apps/api/src/routers/dm/media.ts |
| Provider | packages/providers/spaces/ · packages/providers/unsplash/ · packages/providers/pixabay/ |
| Docs | docs/apps/dashboard/screens.md · docs/providers/aws-s3.md |
Brand images/logos per tenant in DigitalOcean Spaces · upload/delete · asset picker for social post designer · Unsplash/Pixabay stock image providers integrated
Known gap:
- 🟡 No antivirus scan or magic-byte validation on uploads —
docs/missing-incomplete-features/document-security-scanning.md
3.6 Content Briefs (/content-briefs, /content-briefs/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/content-briefs/page.tsx · content-briefs/[id]/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/content-briefs/actions.ts |
| Worker | packages/agents/src/workers/content-brief-writer.worker.ts |
| API | apps/api/src/routers/dm/content-briefs.ts |
| Component | packages/ui/src/ContentBriefCard.tsx |
| Docs | docs/apps/dashboard/screens.md · docs/project/content-briefs.md · docs/agents/content-brief-writer.md |
ContentBrief model · keyword auto-link on create · generate blog from brief (⋯ menu) · preview card on activity detail
4. Dashboard Portal — SEO
4.1 Keywords (/seo/keywords)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/seo/keywords/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/seo/keywords/actions.ts |
| Worker | packages/agents/src/workers/keyword-researcher.worker.ts |
| API | apps/api/src/routers/dm/keywords.ts |
| Docs | docs/project/keywords-feature.md · docs/agents/keyword-researcher.md |
Keyword model · sources: agent / manual / content_brief · add/edit/delete · auto-created from content briefs · findFirst + create pattern
4.2 Keyword Groups (/seo/keyword-groups, /seo/keyword-groups/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/seo/keyword-groups/page.tsx · seo/keyword-groups/[id]/page.tsx |
| API | apps/api/src/routers/dm/keywords.ts |
| Docs | docs/project/keywords-feature.md |
KeywordGroup / KeywordGroupItem models · approval flow: pending_review → approved (DM approves) · add/remove keywords
4.3 Backlinks (/seo/backlinks, /seo/backlinks/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/seo/backlinks/page.tsx · seo/backlinks/[id]/page.tsx |
| Workers | packages/agents/src/workers/backlink-researcher.worker.ts · packages/agents/src/workers/website-crawler.worker.ts · packages/agents/src/workers/backlink-outreach-writer.worker.ts |
| Utils | packages/agents/src/workers/backlink-researcher.utils.ts · website-crawler.utils.ts |
| Docs | docs/project/backlink-pipeline.md · docs/agents/backlink-researcher.md · docs/agents/backlink-outreach-writer.md |
3-agent pipeline: researcher → crawler → writer · backlink prospect table with search/status filter · 5-step timeline on detail · editable status/notes · campaign + email cards · dashboard: read-only; DM: editable
4.4 Link Building Campaigns (/seo/link-building, /seo/link-building/[id])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/seo/link-building/page.tsx · seo/link-building/[id]/page.tsx · seo/link-building/[id]/emails/[emailId]/edit/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/seo/link-building/[id]/emails/[emailId]/edit/actions.ts |
| Worker | packages/agents/src/workers/seo-outreach-optimizer.worker.ts |
| Docs | docs/project/backlink-pipeline.md |
Outreach campaigns linked to backlink prospects · email editing/sending · per-prospect email history
4.5 SEO Optimizer (Blog SEO Scoring)
Status: 🚧 In Progress
| Resource | Path |
|---|---|
| Worker | packages/agents/src/workers/seo-optimizer.worker.ts |
| DB fields | BlogPost.seoScore · BlogPost.seoAnalysis |
| Docs | docs/project/seo-optimizer-feature.md |
10-dimension SEO score + AI suggestions per blog post · auto-runs after blog generation
Note: GEO/AEO dashboard portion (/ai-search) is in progress — see §6.2
4.6 Search Term Classifier
Status: ✅ Complete (worker) / 📋 No dedicated UI
| Resource | Path |
|---|---|
| Worker | packages/agents/src/workers/search-term-classifier.worker.ts |
| Job | packages/agents/src/workers/jobs/gsc-keywords-snapshot.job.ts |
| Tests | packages/agents/src/workers/__tests__/search-term-classifier.test.ts · gsc-keywords-snapshot.test.ts |
Classifies GSC search terms · snapshot job for keyword tracking · no dedicated dashboard page
5. Dashboard Portal — CRM & Campaigns
5.1 Leads (/leads)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/leads/page.tsx |
| API | apps/api/src/routers/leads.ts |
| Docs | docs/apps/dashboard/screens.md (D4) |
Mini CRM · 4 stat tiles (Monthly, Total, Qualified, Conversion Rate) · leads table with status/source/spam tabs · Lead model in DB
Note: Lead capture integrations (website forms, paid ads, WhatsApp) not yet wired; no active ingestion pipeline.
Post-MVP gaps:
- 🟢 Lead scoring model + automated nurture sequences —
docs/missing-incomplete-features/lead-scoring-nurture.md
5.2 Contacts (/contacts, /contacts/[id], /contacts/lists)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/contacts/page.tsx · contacts/[id]/page.tsx · contacts/new/page.tsx · contacts/lists/page.tsx · contacts/lists/[id]/page.tsx |
| Actions | contacts/[id]/actions.ts · contacts/new/actions.ts · contacts/lists/actions.ts |
| API | apps/api/src/routers/dm/contacts.ts |
| Docs | docs/apps/dashboard/screens.md |
Contact and contact list models · create/view/edit contacts · contact list membership management · unsubscribe token on Contact
5.3 Campaigns (/campaigns, /campaigns/[id], /campaigns/analytics)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/campaigns/page.tsx · campaigns/[id]/page.tsx · campaigns/new/page.tsx · campaigns/analytics/page.tsx |
| Workers | packages/agents/src/workers/campaign-brief-writer.worker.ts · packages/agents/src/workers/campaign-optimizer-runner.worker.ts · packages/agents/src/workers/review-campaign-writer.worker.ts · packages/agents/src/workers/review-campaign-optimizer.worker.ts |
| API | apps/api/src/routers/campaigns.ts · apps/api/src/routers/dm/campaigns.ts |
| Docs | docs/apps/dashboard/screens.md |
Campaign model linked to activities · create/view/analytics page · 5 campaign types defined
Known gaps:
- 🔴 Campaign orchestration (decompose brief → delegate to sub-workers → synthesise) —
docs/missing-incomplete-features/campaign-orchestration.md - 🟢 A/B variant generation for Google RSA and Meta ads —
docs/missing-incomplete-features/a-b-ad-variants.md
6. Dashboard Portal — AI Features
6.1 AI Chat (/ai-chat → /chat)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/ai-chat/page.tsx |
| Components | packages/ui/src/ai-chat/AiChatClient.tsx · ChatInput.tsx · ChatMain.tsx · MessageBubble.tsx · ThreadSidebar.tsx · ToolCallIndicator.tsx · WelcomeScreen.tsx · useChatStream.ts |
| API | apps/api/src/routers/ai-chat.ts |
| Docs | docs/project/agent-chat.md · docs/project/langgraph-ts-build.md |
Phases 1+2+5 live · LangChain + LangGraph supervisor · JWT auth · thread ID architecture · streaming via SSE · analytics + RAG search tools wired
Known gaps:
- 🟡 Executor subagent: orchestrator references it but only analytics wired; 16 tools not built —
docs/missing-incomplete-features/ai-chat-executor-subagent.md - 🟡 No token counting, history trimming, or context window management —
docs/missing-incomplete-features/ai-chat-token-management.md
6.2 AI Search / AEO / GEO Dashboard (/ai-search)
Status: 🚧 In Progress
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/ai-search/page.tsx · ai-search/prompts/page.tsx · ai-search/settings/page.tsx · ai-search/history/page.tsx · ai-search/competitors/page.tsx |
| Actions | apps/dashboard/src/app/(dashboard)/ai-search/actions.ts |
| Workers | packages/agents/src/workers/ai-visibility-seeder.worker.ts · packages/agents/src/workers/ai-visibility-monitor.worker.ts |
| API | apps/api/src/routers/ai-visibility.ts · apps/api/src/routers/competitors.ts |
| Docs | docs/project/ai-visibility-feature.md · docs/project/seo-optimizer-feature.md · docs/new-features/ai-seo-optimization-aeo-geo.md |
Phase 1 complete: Competitor model seeded · 4 workers built · /settings/competitors live · GEO dashboard in progress
6.3 Content Repurposing (/analytics/repurposing)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/analytics/repurposing/page.tsx |
| Worker | packages/agents/src/workers/content-repurposer.worker.ts |
| Manage | apps/manage/src/app/(manage)/templates/repurposing/ |
| Docs | docs/agents/content-repurposer.md · docs/new-features/content-repurposing.md |
content-repurposer worker · repurposing templates in Manage · analytics page · no end-to-end trigger UI yet
7. Dashboard Portal — Settings & Billing
7.1 Profile (/settings/profile)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/settings/profile/page.tsx |
7.2 Users (/settings/users)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/settings/users/page.tsx |
| Docs | docs/apps/dashboard/screens.md |
7.3 Agent Settings (/settings/agents, /settings/agents/[agentId])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/settings/agents/page.tsx · settings/agents/[agentId]/page.tsx |
| Docs | docs/project/adapter-selection.md |
Per-tenant agent enable/disable · model override · tenantAgentConfig table
7.4 Brand Voice (/settings/brand-voice)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/settings/brand-voice/page.tsx |
| API | apps/api/src/routers/brand-voice.ts |
| Docs | docs/new-features/brand-voice-scoring.md |
Brand voice config UI complete · context regeneration not triggered on brand voice update (TODO at brand-voice.ts:130)
7.5 Competitors (/settings/competitors)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/settings/competitors/page.tsx |
| API | apps/api/src/routers/competitors.ts |
7.6 Usage & Costs (/usage, /costs, /transactions)
Status: 🔶 Partial
| Resource | Path |
|---|---|
| Pages | apps/dashboard/src/app/(dashboard)/usage/page.tsx · costs/page.tsx |
| Package | packages/billing/src/credits.ts · credit-rates.ts · credit-reset.ts · credit-topup.ts |
| API | apps/api/src/routers/tenant/billing.ts · apps/api/src/routers/tenant/credits.ts · apps/api/src/routers/dm/costs.ts · apps/api/src/routers/dm/credits.ts |
| Docs | docs/project/credits-billing.md · docs/missing-incomplete-features/cost-dashboard.md |
@leadmetrics/billing package · 26 credit types · all 26 agents wired · /usage + /costs screens
Known gaps:
- 🟡 Cost dashboard graphs not fully rendered —
docs/missing-incomplete-features/cost-dashboard.md - 🔴 Free plan not defined or seeded; unsubscribed tenants get Starter indefinitely —
docs/missing-incomplete-features/free-plan-limits.md - 🔴 Overage billing when plan cap exceeded — not built —
docs/missing-incomplete-features/overage-billing.md - 🔴
reserveCredits()race condition: no row lock → double-spend possible —docs/missing-incomplete-features/credit-race-condition.md - 🟡 Subscription cancellation: status-only; no freeze, credit lock, or notification —
docs/missing-incomplete-features/subscription-cancellation-cleanup.md - 🟡 Payment failure webhook: updates invoice JSON but doesn’t notify tenant —
docs/missing-incomplete-features/payment-failed-no-notification.md
7.7 Audit Log (/audit-log)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/audit-log/page.tsx |
| API | apps/api/src/routers/admin/audit.ts |
MongoDB-backed · cross-tenant in Manage · tenant-scoped in Dashboard/DM
7.8 Business Info (/client-info)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/client-info/page.tsx |
7.9 Docs Upload (/docs)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/docs/page.tsx |
| API | apps/api/src/routers/docs.ts · apps/api/src/routers/knowledge.ts |
| Worker | packages/agents/src/workers/rag-ingestion.worker.ts |
| Docs | docs/project/rag-pipeline.md · docs/features/rag-architecture.md · docs/features/rag-integration.md |
Document upload for RAG ingestion · Docling extraction pipeline
7.10 Notifications Settings (/settings/notifications)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Page | apps/dashboard/src/app/(dashboard)/settings/notifications/page.tsx |
7.11 Help Center (/help + 24 topic pages)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Component | packages/ui/src/HelpCenter.tsx · packages/ui/src/HelpPage.tsx |
| Pages | apps/dashboard/src/app/(dashboard)/help/page.tsx + 24 topic pages |
| Types | packages/common/src/help-types.ts |
| Docs | docs/project/help-pages.md |
8. DM Portal
8.1 Mission Control (/overview)
Status: ✅ Complete — apps/dm/src/app/(dm)/overview/page.tsx · docs/apps/dm-portal/screens.md (P1)
Stat cards + pending approvals (max 10) + running agents (max 10) · polls every 60s
8.2 Activities (/activities, /activities/history)
Status: ✅ Complete — apps/dm/src/app/(dm)/activities/page.tsx · activities/history/page.tsx · docs/apps/dm-portal/screens.md (P2)
4 views: list / grouped / calendar / kanban · API: apps/api/src/routers/dm/activities.ts
8.3 Activity Detail (/activities/[id])
Status: 📋 Planned — apps/dm/src/app/(dm)/activities/[id]/page.tsx · docs/apps/dm-portal/screens.md (P3) · docs/missing-incomplete-features/real-time-agent-status.md
Route exists · live SSE streaming from agent not yet built
8.4 Approvals Queue (/approvals)
Status: ✅ Complete — apps/dm/src/app/(dm)/approvals/page.tsx · docs/apps/dm-portal/screens.md (P4)
Unified blog + social dm_review queue · type filter tabs
8.5 Blog Review (/blog, /blog/[id])
Status: ✅ Complete — apps/dm/src/app/(dm)/blog/page.tsx · blog/[id]/page.tsx · API: apps/api/src/routers/dm/blog.ts
8.6 Social Posts (/social, /social/[id])
Status: ✅ Complete — apps/dm/src/app/(dm)/social/page.tsx · social/[id]/page.tsx · API: apps/api/src/routers/dm/social.ts
List/calendar toggle · violet tiles · approve (advances to design_pending)
8.7 Landing Pages (/landing-pages, /landing-pages/[id])
Status: ✅ Complete — apps/dm/src/app/(dm)/landing-pages/page.tsx · landing-pages/[id]/page.tsx · API: apps/api/src/routers/dm/landing-pages.ts
8.8 Newsletters (/newsletters, /newsletters/[id])
Status: ✅ Complete — apps/dm/src/app/(dm)/newsletters/page.tsx · newsletters/[id]/page.tsx · API: apps/api/src/routers/dm/newsletters.ts
8.9 Agent Monitoring (/agents, /agents/[agentId])
Status: ✅ Complete — apps/dm/src/app/(dm)/agents/page.tsx · agents/[agentId]/page.tsx · API: apps/api/src/routers/dm/agents.ts
Cross-tenant grid with Socket.IO · per-agent detail: milestones + activities scoped to active tenant · docs/project/agent-run-stats.md
8.10 Context (/context)
Status: ✅ Complete — apps/dm/src/app/(dm)/context/page.tsx · API: apps/api/src/routers/dm/context.ts
Read-only · DM can request revision · cannot approve
8.11 Strategy (/strategy, /strategy/deliverable-plan)
Status: ✅ Complete — apps/dm/src/app/(dm)/strategy/page.tsx · strategy/deliverable-plan/page.tsx · API: apps/api/src/routers/dm/strategy.ts
Status dropdown: draft / pending_review / rejected only (DM cannot approve)
8.12 Goals (/goals, /goals/archived)
Status: ✅ Complete — apps/dm/src/app/(dm)/goals/page.tsx · goals/archived/page.tsx
8.13 Deliverables (/deliverables)
Status: ✅ Complete — apps/dm/src/app/(dm)/deliverables/page.tsx
8.14 Activity Log (/activity-log)
Status: ✅ Complete — apps/dm/src/app/(dm)/activity-log/page.tsx
Read-only timeline · last 100 entries
8.15 Content Calendar (/calendar)
Status: ✅ Complete — apps/dm/src/app/(dm)/calendar/page.tsx · component: packages/ui/src/ContentCalendar.tsx
Read-only · no approve button · topbar icon only
8.16 SEO Suite (Keywords, Keyword Groups, Backlinks, Link Building)
Status: ✅ Complete
apps/dm/src/app/(dm)/seo/ — keywords, keyword-groups/[id], backlinks/[id], link-building/[id] · API: apps/api/src/routers/dm/keywords.ts
8.17 Content Briefs
Status: ✅ Complete — apps/dm/src/app/(dm)/content-briefs/ · API: apps/api/src/routers/dm/content-briefs.ts
8.18 Media Library
Status: ✅ Complete — apps/dm/src/app/(dm)/media/page.tsx · API: apps/api/src/routers/dm/media.ts
8.19 Reports (/reports, /reports/[id])
Status: 🔶 Partial (unverified against running app) — apps/dm/src/app/(dm)/reports/ · API: apps/api/src/routers/dm/reports.ts
8.20 Contacts (/contacts, /contacts/lists)
Status: ✅ Complete — apps/dm/src/app/(dm)/contacts/ · API: apps/api/src/routers/dm/contacts.ts
8.21 Billing (/billing/costs, /billing/usage, /billing/transactions)
Status: 🔶 Partial — apps/dm/src/app/(dm)/billing/ · API: apps/api/src/routers/dm/costs.ts · apps/api/src/routers/dm/credits.ts
Pages exist; tied to same billing gaps as dashboard (§7.6)
8.22 Users, Profile, Chat
Status: ✅ Complete — apps/dm/src/app/(dm)/users/page.tsx · profile/page.tsx · chat/page.tsx
8.23 Help Center (/help + 18 topic pages)
Status: ✅ Complete — apps/dm/src/app/(dm)/help/ · component: packages/ui/src/HelpCenter.tsx
9. Manage Portal
9.1 Overview (/overview)
Status: 📋 Planned — apps/manage/src/app/(manage)/overview/page.tsx · docs/apps/manage/screens.md (M1)
Real-time platform pulse: agent activity, LLM spend, queue health — page route exists but content not built
9.2 Tenants (/tenants, /tenants/[tenantId])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/manage/src/app/(manage)/tenants/page.tsx · tenants/create/ · tenants/[tenantId]/page.tsx · tenants/[tenantId]/datasets/[datasetId]/page.tsx |
| Actions | tenants/[tenantId]/actions.ts · tenants/create/actions.ts |
| API | apps/api/src/routers/admin/tenants.ts |
| Docs | docs/apps/manage/screens.md (M2, M3) · docs/project/manage-tenant-detail.md · docs/project/tenant-lifecycle.md |
Tenant list · create form · tenant detail: 13-tab vertical sidebar (Progress, Pipeline, Context, Strategy, Subscriptions, Invoices, Activities, Goals, Users, Deliverables, Audit Logs, Credits & LLM, Settings) · pocPhone/country/currency fields
Planned tabs (not yet built): Config (plan, feature flags, spending limits) · Agents (per-tenant overrides) · Knowledge Base (dataset summary, re-index)
9.3 Users (/users)
Status: ✅ Complete — apps/manage/src/app/(manage)/users/ · API: apps/api/src/routers/admin/users.ts
9.4 Agents (/agents, /agents/[agentId])
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/manage/src/app/(manage)/agents/page.tsx · agents/[agentId]/page.tsx · agents/[agentId]/edit/ · agents/[agentId]/runs/ · agents/[agentId]/runs/[runId]/ |
| API | apps/api/src/routers/admin/agents.ts |
| Docs | docs/project/agent-analytics.md · docs/project/agent-run-stats.md |
Master agent config · analytics tab (period selector, adapter/model breakdown, top agents table) · run history + individual run detail · skill mapping
9.5 Skills (/skills)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/manage/src/app/(manage)/skills/page.tsx · skills/new/ · skills/[skillId]/ · skills/[skillId]/edit/ |
| API | apps/api/src/routers/admin/... |
| Docs | docs/project/skills-architecture.md · docs/features/skills-system.md |
Skill + AgentSkill DB models · createSkillsDir() · 15 seeded platform skills · 28 agent mappings · list/create/edit/archive
9.6 Plans (/plans, /plans/[planId])
Status: ✅ Complete — apps/manage/src/app/(manage)/plans/ · docs/apps/manage/screens.md
9.7 Invoices (/invoices)
Status: ✅ Complete
| Resource | Path |
|---|---|
| Pages | apps/manage/src/app/(manage)/invoices/page.tsx · invoices/create/ · invoices/[invoiceId]/ · invoices/[invoiceId]/edit/ |
| Actions | invoices/actions.ts · invoices/[invoiceId]/actions.ts · invoices/create/actions.ts |
| API | apps/api/src/routers/admin/billing.ts |
| Common | packages/common/src/invoice.ts |
| Docs | docs/project/tenant-lifecycle.md |
draft → issued flow · GST/PAN/SEZ fields · Zoho sync · TDS 2%
9.8 Email Templates (/templates/email)
Status: ✅ Complete — apps/manage/src/app/(manage)/templates/email/ · API: apps/api/src/routers/admin/templates.ts
51 email templates in dev seed
9.9 Telegram Templates (/templates/telegram)
Status: ✅ Complete — apps/manage/src/app/(manage)/templates/telegram/page.tsx
9.10 Repurposing Templates (/templates/repurposing)
Status: 🚧 In Progress — apps/manage/src/app/(manage)/templates/repurposing/ (actions updated April 2026)
9.11 Blog Posts (/blog-posts)
Status: ✅ Complete — apps/manage/src/app/(manage)/blog-posts/ · API: apps/api/src/routers/admin/content.ts
Cross-tenant blog review · multi-status tabs · detail panel
9.12 Social Posts (/social-posts)
Status: ✅ Complete — apps/manage/src/app/(manage)/social-posts/
9.13 Push Notifications (/push-notifications)
Status: ✅ Complete — apps/manage/src/app/(manage)/push-notifications/page.tsx · API: apps/api/src/routers/admin/push.ts
Firebase FCM · PushDeviceToken model · broadcast + tenant notify UI
9.14 Audit Logs (/audit-logs)
Status: ✅ Complete — apps/manage/src/app/(manage)/audit-logs/page.tsx · API: apps/api/src/routers/admin/audit.ts
9.15 RAG Config (/system/rag-config)
Status: ✅ Complete — apps/manage/src/app/(manage)/system/rag-config/page.tsx · API: apps/api/src/routers/rag-config.ts
9.16 Usage, Costs, Transactions
Status: 🔶 Partial — apps/manage/src/app/(manage)/usage/ · costs/ · transactions/ · API: apps/api/src/routers/admin/billing.ts
Pages exist; tied to same billing gaps as dashboard (§7.6)
9.17 LLM Providers (/providers)
Status: 📋 Planned — docs/apps/manage/screens.md (M9)
Provider health · rate limits · model availability — not yet built
9.18 System Health (/system)
Status: 📋 Planned — docs/apps/manage/screens.md (M15)
Service status · queue depths · DB metrics · recent errors — not yet built
9.19 Queue Monitoring UI
Status: 📋 Planned — docs/missing-incomplete-features/queue-monitoring-ui.md
Cross-tenant BullMQ queue visibility — 🟢 Post-MVP
9.20 Help Center (/help + 15 topic pages)
Status: ✅ Complete — apps/manage/src/app/(manage)/help/ · component: packages/ui/src/HelpCenter.tsx
10. AI Agent Layer
10.1 Setup Chain (Onboarding)
Status: ✅ Complete
Workers: packages/agents/src/workers/setup.worker.ts → content.worker.ts (client-researcher → competitor → context-file-writer)
Triggered by: completeOnboarding() in apps/dashboard/src/app/(dashboard)/onboarding/actions.ts
Docs: docs/project/onboarding-flow.md
10.2 Strategy Pipeline
Status: ✅ Complete
Workers: strategy.worker.ts → strategy-writer.worker.ts → activity.worker.ts → social-calendar-planner.worker.ts
API: apps/api/src/routers/dm/strategy.ts
Docs: docs/agents/strategy-writer.md · docs/features/agent-execution-engine.md
10.3 Blog Pipeline
Status: ✅ Complete
Workers: content.worker.ts (activity-planner) → blog-writer.worker.ts → (dm_review) → (client_review) → (client_approved)
Workers also: blog-faq-writer.worker.ts · seo-optimizer.worker.ts
Docs: docs/project/blog-flow.md · docs/agents/blog-writer.md
10.4 Social Post Pipeline
Status: 🔶 Partial
Workers: social-post-writer.worker.ts → social-post-designer.worker.ts (image) → (client_review)
Also: gbp-post-writer.worker.ts · social-calendar-planner.worker.ts
Provider: packages/providers/openai-images/ (GPT Image 1.5 via Azure)
Docs: docs/project/social-post-pipeline.md · docs/agents/social-post-writer.md
Gap: Posts never auto-publish (§3.2)
10.5 Landing Page Pipeline
Status: ✅ Complete
Worker: landing-page-writer.worker.ts
Docs: docs/agents/landing-page-writer.md
Gap: CMS auto-publish not wired (§15.1)
10.6 Newsletter / Email Pipeline
Status: 🔶 Partial
Workers: email-writer.worker.ts · newsletter-sender.worker.ts
Docs: docs/agents/email-writer.md
Gap: Mailchimp/Klaviyo delivery not built (§3.4)
10.7 Keyword Research
Status: ✅ Complete
Worker: keyword-researcher.worker.ts
Job: jobs/gsc-keywords-snapshot.job.ts
Docs: docs/agents/keyword-researcher.md
10.8 Backlink Outreach Pipeline
Status: ✅ Complete
Workers: backlink-researcher.worker.ts → website-crawler.worker.ts → backlink-outreach-writer.worker.ts
Utils: backlink-researcher.utils.ts · website-crawler.utils.ts
Docs: docs/project/backlink-pipeline.md · docs/agents/backlink-researcher.md · docs/agents/backlink-outreach-writer.md
10.9 Insights Pipeline
Status: ✅ Complete
Workers: insights/ga-insights.worker.ts · gsc-insights.worker.ts · gbp-insights.worker.ts · google-ads-insights.worker.ts · meta-ads-insights.worker.ts · facebook-insights.worker.ts · instagram-insights.worker.ts · linkedin-insights.worker.ts
Base: insights/insight-worker-base.ts
Also: insights/brand-narrative-analyst.worker.ts
Docs: docs/project/insights-feature.md
10.10 AI Visibility / Competitor Monitoring
Status: 🚧 In Progress
Workers: ai-visibility-seeder.worker.ts · ai-visibility-monitor.worker.ts
API: apps/api/src/routers/ai-visibility.ts
Docs: docs/project/ai-visibility-feature.md · docs/new-features/ai-seo-optimization-aeo-geo.md
Phase 1 complete; GEO dashboard in progress
10.11 Reports Generation
Status: 🔶 Partial
Workers: custom-report-writer.worker.ts · report-writer.worker.ts
Docs: docs/project/reports-feature.md · docs/agents/report-writer.md
Generator UI complete; delivery integrations not built (§2.10)
10.12 Campaign Orchestration
Status: 🔴 Has Blocking Issues
Worker: campaign-brief-writer.worker.ts · campaign-optimizer-runner.worker.ts
Docs: docs/missing-incomplete-features/campaign-orchestration.md
Worker exists; orchestration logic (decompose brief → delegate to sub-workers → synthesise) incomplete
10.13 Ads Writers & Optimizers
Status: ✅ Complete (workers) / 📋 No dedicated UI trigger
Workers: google-ads-writer.worker.ts · meta-ads-writer.worker.ts · linkedin-ads-writer.worker.ts · meta-ads-optimizer.worker.ts · linkedin-ads-optimizer.worker.ts · ads-analyst.worker.ts
Providers: packages/providers/google/src/google-ads.ts · packages/providers/meta/ · packages/providers/linkedin/src/linkedin-ads.ts
Docs: docs/agents/google-ads-writer.md · docs/agents/meta-ads-writer.md
Workers built but no UI screen to trigger or review ad copy
10.14 Review Response Writer
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/review-response-writer.worker.ts
Also: review-campaign-writer.worker.ts · review-campaign-optimizer.worker.ts
Generates responses to customer reviews (Google/etc.); no dashboard UI surface
10.15 RAG / Knowledge Base
Status: 🔶 Partial
Workers: rag-ingestion.worker.ts
Providers: packages/providers/qdrant/ (vector store) · packages/providers/typesense/ (text search)
API: apps/api/src/routers/rag-config.ts · apps/api/src/routers/knowledge.ts
Docs: docs/project/rag-pipeline.md · docs/features/rag-architecture.md · docs/features/rag-integration.md
Pre-loaded datasets vs skill-scripts · role → dataset mapping · auto-ingest from API + server actions
Known gap:
- 🟡 RAG engine starts without checking Qdrant health; no Docker healthchecks —
docs/missing-incomplete-features/rag-qdrant-health-check.md
10.16 Activity Templates
Status: 🔴 Has Blocking Issues
Manage page: apps/manage/src/app/(manage)/templates/...
API: apps/api/src/routers/admin/templates.ts
Docs: docs/missing-incomplete-features/activity-templates.md
Flat list import exists; activity_templates.steps schema undefined (OQ-4)
10.17 Scheduler / Cron Jobs
Status: 🔴 Has Blocking Issues
Job: packages/agents/src/workers/jobs/gsc-keywords-snapshot.job.ts
Docs: docs/missing-incomplete-features/scheduler-missing-task-types.md
Handles only 3 signup email tasks; monthly cycle, billing cron, keyword snapshots, AI visibility monitor, anomaly check all missing
10.18 Agent Plan Gating
Status: 🔴 Has Blocking Issues
Code: apps/api/src/routers/tenant/main.ts line 55 (TODO comment)
Docs: docs/missing-incomplete-features/agent-plan-gating.md
agentsForPlan() exists but never applied to responses; all tenants see all agents regardless of plan
10.19 Real-Time Agent Status (SSE)
Status: 🔴 Has Blocking Issues
Docs: docs/missing-incomplete-features/real-time-agent-status.md · docs/features/real-time.md
BullMQ → Socket.IO bridge partially built; activity detail live SSE streaming not complete
10.20 Content Repurposing
Status: 🔶 Partial
Worker: content-repurposer.worker.ts
Docs: docs/agents/content-repurposer.md · docs/new-features/content-repurposing.md
Worker + templates in Manage; no end-to-end trigger UI yet
10.21 Audience Analyst
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/audience-analyst.worker.ts
Audience analysis for strategy generation; no standalone dashboard page
10.22 Topic Researcher
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/topic-researcher.worker.ts
Docs: docs/agents/topic-researcher.md
10.23 Research Note Writer
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/research-note-writer.worker.ts
Docs: docs/agents/research-note-writer.md
10.24 Site Auditor
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/site-auditor.worker.ts
Docs: docs/agents/site-auditor.md
Technical SEO site audit; no dashboard results page
10.25 Anomaly Detector
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/anomaly-detector.worker.ts
Docs: docs/agents/anomaly-detector.md
Detects metric anomalies; no dashboard alert surface; not in scheduler yet (§10.17)
10.26 Brand Narrative Analyst
Status: ✅ Complete (worker) / 📋 No dedicated UI
Worker: packages/agents/src/workers/insights/brand-narrative-analyst.worker.ts
10.27 GitHub Source Sync
Status: ✅ Complete
Worker: packages/agents/src/workers/github-source-sync.worker.ts
Provider: packages/providers/github/
Tests: packages/agents/src/workers/__tests__/github-source-sync.test.ts
Syncs GitHub repo content into RAG datasets
10.28 Blog Image Generator
Status: 📋 Planned — no worker file exists
Docs: docs/agents/blog-image-generator.md
Hero + inline images for blog posts via Azure GPT Image; brand-matched styles; not yet implemented (worker documented but not built)
10.29 Content Auditor
Status: 📋 Planned — no worker file exists
Docs: docs/agents/content-auditor.md
Post freshness audit · health score · refresh workflow · cannibalisation detection
11. Infrastructure & Platform Services
11.1 Global Search (Typesense)
Status: ✅ Complete — Live April 2026
| Resource | Path |
|---|---|
| Provider | packages/providers/typesense/src/client.ts · collections.ts · schemas.ts (🚧 recently updated) |
| Worker | packages/agents/src/workers/... (search-indexer; search__sync BullMQ queue) |
| Component | packages/ui/src/GlobalSearch.tsx |
| API | apps/api/src/routers/admin/search.ts · apps/api/src/routers/dm/search.ts |
| Docs | docs/project/search-feature.md |
13 collections · Ctrl+K modal · tenant-filtered · 11 router files wired
11.2 Notifications Server
Status: 🔴 Has Blocking Issues
| Resource | Path |
|---|---|
| Server | apps/servers/notifications/src/ |
| Providers | packages/providers/sendgrid/ · packages/providers/ses/ · packages/providers/smtp/ · packages/providers/firebase/ · packages/providers/telegram/ |
| API | apps/api/src/routers/admin/notifications.ts |
| Docs | docs/project/notifications-arch.md · docs/missing-incomplete-features/notifications-app.md |
Email: DEV filter in place · SMS: stub (not_implemented, providers not built) · Push: Firebase FCM wired
Blocking gap: Publishes to non-existent HTTP hub instead of Redis Pub/Sub — docs/missing-incomplete-features/notification-hub-sse-service.md
11.3 Billing & Credits
Status: 🔴 Has Blocking Issues
| Resource | Path |
|---|---|
| Package | packages/billing/src/credits.ts · credit-rates.ts · credit-reset.ts · credit-topup.ts |
| Provider | packages/providers/razorpay/ |
| API | apps/api/src/routers/tenant/billing.ts · apps/api/src/routers/tenant/credits.ts · apps/api/src/routers/admin/billing.ts |
| Docs | docs/project/credits-billing.md · docs/project/tenant-lifecycle.md · docs/project/multi-subscription.md |
@leadmetrics/billing package · 26 credit types · all 26 agents wired · Subscription / Invoice models · Razorpay · GST/PAN/SEZ · Zoho sync · TDS 2% · multiple subs per tenant
See §7.6 for all known gaps
11.4 File Storage (DigitalOcean Spaces)
Status: ✅ Complete
Provider: packages/providers/spaces/
Config: DO_SPACES_ENDPOINT required (6 vars total); missing it silently fails designer
Post-MVP gap: Deactivated tenant files never cleaned up — docs/missing-incomplete-features/tenant-storage-cleanup.md
11.5 Real-Time (Socket.IO)
Status: ✅ Complete
Docs: docs/features/real-time.md · docs/project/chat-feature.md
/tenant namespace · per-tenant rooms · reviewer tenant:join handshake · notification events · agent progress events · peer-to-peer chat
11.6 BullMQ Queue System
Status: ✅ Complete
Docs: docs/features/task-queue-orchestration.md · docs/project/shared-queues.md
One queue per agent role (agent__{role}) · shared across tenants · tenantId in payload · timestamp IDs (dedup bug fixed April 2026) · maxStalledCount: 2 (Windows DLL cold-start fix)
11.7 LLM Adapters (Dynamic Dispatch)
Status: ✅ Complete
Worker: packages/agents/src/workers/setup.worker.ts
Docs: docs/project/adapter-selection.md · docs/providers/claude.md · docs/providers/openai.md · docs/providers/google-gemini.md · docs/providers/ollama.md
claude_local / codex_local / gemini_local · dynamic dispatch · per-tenant model override
11.8 RAG (Qdrant + Typesense)
Status: 🔶 Partial — see §10.15
| Resource | Path |
|---|---|
| Providers | packages/providers/qdrant/src/client.ts · collections.ts · search.ts · packages/providers/typesense/ |
| Docs | docs/features/rag-architecture.md · docs/features/rag-integration.md |
11.9 Audit Logging (MongoDB)
Status: ✅ Complete
Provider: packages/providers/... (nosqldb)
Docs: docs/project/nosqldb-nextjs-connection.md
connectMongo() auto-called inside audit.ts (idempotent)
11.10 Agent Governance & Observability
Status: ✅ Complete
Docs: docs/features/governance-guardrails.md · docs/features/observability.md · docs/features/session-memory-management.md · docs/features/cost-usage-tracking.md
12. Integrations & Channels
| Integration | Provider Package | Worker(s) | API Router | Publish | Status |
|---|---|---|---|---|---|
| Google Analytics | packages/providers/google/src/google-analytics.ts | ga-insights | channels.ts | — | ✅ Complete |
| Google Search Console | packages/providers/google/src/google-search-console.ts | gsc-insights, gsc-keywords-snapshot | channels.ts | — | ✅ Complete |
| Google Business Profile | packages/providers/google/src/google-business-profile.ts | gbp-insights, gbp-post-writer | channels.ts | 🔶 Not wired | 🔶 Partial |
| Google Ads | packages/providers/google/src/google-ads.ts | google-ads-writer, ads-analyst | channels.ts | 🔶 No UI | 🔶 Partial |
| Bing Webmaster | packages/providers/microsoft/src/bing-webmaster.ts | — | — | — | 📋 Provider only |
| Meta Ads | packages/providers/meta/src/ | meta-ads-writer, meta-ads-optimizer | channels.ts | 🔶 No UI | 🔶 Partial |
packages/providers/meta/src/facebook.ts | facebook-insights | channels.ts | 🔴 Not wired | 🔴 Issue | |
packages/providers/meta/src/instagram.ts | instagram-insights, social-post-writer | channels.ts | 🔴 Not wired | 🔴 Issue | |
packages/providers/linkedin/src/linkedin.ts | linkedin-insights, linkedin-ads-writer | channel-connect.ts | 🔴 Not wired | 🔴 Issue | |
| Twitter/X | — | — | — | — | 📋 Placeholder only |
| TikTok | — | — | — | — | 📋 Planned |
| Zoho CRM | packages/providers/zoho/src/zoho-books.ts | — | — | — | 📋 Placeholder only |
| WordPress | packages/providers/wordpress/src/wordpress.ts | — (not wired) | — | — | 📋 Provider only |
| Resend / Sendgrid | packages/providers/sendgrid/ · ses/ · smtp/ | newsletter-sender, email-writer | newsletters.ts | ✅ | ✅ Complete |
| Mailchimp | — | — | — | — | 📋 Planned |
| Klaviyo | — | — | — | — | 📋 Planned |
| Slack (reports) | — | — | — | — | 📋 Planned |
| Notion (reports) | — | — | — | — | 📋 Planned |
| Google Drive (reports) | — | — | — | — | 📋 Planned |
| Firebase FCM | packages/providers/firebase/src/messaging.ts | notification-worker | admin/push.ts | ✅ | ✅ Complete |
| Telegram | packages/providers/telegram/ | notification-worker | admin/notifications.ts | ✅ | ✅ Complete |
packages/providers/whatsapp/ | — (not wired) | — | — | 📋 Provider only | |
| Razorpay | packages/providers/razorpay/ | — | tenant/billing.ts | ✅ | 🔴 Security issue |
| GitHub | packages/providers/github/ | github-source-sync | — | — | ✅ Complete |
| Pixabay | packages/providers/pixabay/ | media workers | media.ts | — | ✅ Complete |
| Unsplash | packages/providers/unsplash/ | media workers | media.ts | — | ✅ Complete |
| OpenAI Images | packages/providers/openai-images/ | social-post-designer | social.ts | — | ✅ Complete |
| Qdrant | packages/providers/qdrant/ | rag-ingestion | knowledge.ts | — | 🔶 Partial |
| Typesense | packages/providers/typesense/ | search-indexer | admin/search.ts | — | ✅ Complete |
13. Mobile App
Platform: React Native (Expo)
Target: Client/dashboard users only — DM portal remains web-only
Docs: docs/project/mobile-build-status.md · docs/project/mobile-feature-parity.md · docs/project/mobile-patterns.md · docs/project/android-emulator-setup.md
| Phase | Feature | Status |
|---|---|---|
| Phase 1 | Auth (login / logout / unlockSession) | ✅ Complete |
| Phase 1 | Home dashboard (pipeline stage view) | ✅ Complete |
| Phase 1 | Activities list & detail | ✅ Complete |
| Phase 1 | Goals list | ✅ Complete |
| Phase 1 | Strategy viewer | ✅ Complete |
| Phase 1 | Context viewer | ✅ Complete |
| Phase 2 | Blog posts list + detail | ✅ Complete |
| Phase 2 | Social posts list + detail | ✅ Complete |
| Phase 2 | Deliverables list | ✅ Complete |
| Phase 2 | Reports list | ✅ Complete |
| Phase 2 | Push notifications (FCM co-dispatch) | ✅ Complete |
| Phase 3 | More screens (Contacts, Channels, Insights, etc.) | 📋 Pending |
| — | Biometric auth (Face ID / fingerprint) | 📋 Planned |
| — | In-app FCM registration (live push delivery) | 🟢 Post-MVP — docs/missing-incomplete-features/mobile-push-notifications.md |
Notes: Metro restart needed before emulator login · Android: JDK 17, 10.0.2.2 host · SSE pre-refresh, AbortController timeout, crypto.randomUUID patterns
14. Knowledgebase App
Status: 🔶 Partial
| Resource | Path |
|---|---|
| App | apps/knowledgebase/ |
| Content | docs/ (junction) |
| Docs | docs/project/knowledgebase.md |
Nextra v4 docs site · port 3004 · _meta.ts navigation · Google auth: 📋 pending
15. Planned & Unbuilt Features
Features that are specified in documentation or have provider/worker scaffolding but no working end-to-end implementation.
15.1 CMS Auto-Publish (WordPress / Webflow)
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/cms-publishing.md
Provider: packages/providers/wordpress/src/wordpress.ts (built, not wired)
Auto-publish to WordPress/Webflow after blog/landing page approval. Needs: blog-publisher.worker.ts, cms-connections UI in Settings, publish_pending status, republish on edit.
15.2 Social Post Auto-Publishing
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/social-post-platform-publishing.md
Providers: packages/providers/meta/ · packages/providers/linkedin/ (built, not wired)
After approval, posts must be dispatched to FB/IG/LinkedIn/GBP. Needs: social-publisher.worker.ts, platformPostId on SocialPost, token resolution, multi-image carousel, retry UI.
15.3 Email Newsletter via Mailchimp / Klaviyo
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/email-newsletter-delivery.md
Mailchimp + Klaviyo OAuth connect, campaign push, audience selector, merge tag instructions; Klaviyo campaign submit.
15.4 Campaign Orchestration Agent
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/campaign-orchestration.md
Worker (stub): packages/agents/src/workers/campaign-brief-writer.worker.ts
Campaign Strategist manager agent: decomposes brief into typed tasks, delegates to sub-workers (blog-writer, ads-writer, etc.), synthesises output. Needs: CampaignTask model, BullMQ child jobs, campaign-strategist.worker.ts.
15.5 Real-Time Agent Status (Socket.IO + BullMQ Bridge)
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/real-time-agent-status.md · docs/features/real-time.md
BullMQ → Redis Pub/Sub bridge → Socket.IO agent.progress events → Dashboard live SSE hook → activity detail streaming. DM Portal: live output panel for P3.
15.6 Activity Template Schema
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/activity-templates.md
activity_templates.steps JSON schema undefined (OQ-4). Needs: schema definition, global seed (1703 templates), tenant customisation, versioning, pipeline step resolver.
15.7 Scheduler — Missing Task Types
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/scheduler-missing-task-types.md
8 missing cron task types: deliverable.period.create, content.calendar.weekly, billing.credits.reset, billing.invoice.generate, seo.keywords.snapshot, ai.visibility.monitor, analytics.anomaly.check, campaign.optimizer.run.
15.8 Agent Plan Gating
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/agent-plan-gating.md
Code: apps/api/src/routers/tenant/main.ts:55
Apply agentsForPlan() to API responses; add execution guard in workers; add locked UI in agent settings.
15.9 Notification Hub (Redis Pub/Sub Fix)
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/notification-hub-sse-service.md
Replace HTTP hub publish with Redis Pub/Sub; wire API subscriber; connect bell badge to real-time events.
15.10 Free Plan Definition & Seeding
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/free-plan-limits.md
Free plan not in DB seed; unsubscribed tenants get Starter access indefinitely. Needs plan record, credit limits, middleware check.
15.11 Credit Race Condition Fix
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/credit-race-condition.md
Code: packages/billing/src/credits.ts
reserveCredits() needs SELECT ... FOR UPDATE or optimistic locking to prevent double-spend.
15.12 Razorpay Webhook Signature Verification
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/razorpay-webhook-signature-bypass.md
Provider: packages/providers/razorpay/
Verification skipped when RAZORPAY_WEBHOOK_SECRET unset; forged events accepted and processed.
15.13 Hardcoded Connected Channels Fix
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/hardcoded-connected-channels.md
Code: apps/api/src/routers/tenant/main.ts:268
Replace hardcoded ["facebook","linkedin","instagram"] with real DB query of OAuth channel connections.
15.14 BillingJobData Build Fix
Priority: 🔴 Blocking
Docs: docs/missing-incomplete-features/billing-type-mismatch-bug.md
BillingJobData test missing jobId + manual fields; breaks monorepo build.
15.15 Manage Platform Overview (/overview)
Priority: 🟡 Pre-launch
Docs: docs/apps/manage/screens.md (M1)
Real-time pulse: active agent runs, LLM spend (past 24h), queue depths, recent errors, slow queries.
15.16 Manage LLM Providers (/providers)
Priority: 🟡 Pre-launch
Docs: docs/apps/manage/screens.md (M9)
Provider health, rate limits, model availability, latency/cost per model.
15.17 Manage System Health (/system)
Priority: 🟡 Pre-launch
Docs: docs/apps/manage/screens.md (M15)
Service uptime, queue depths, DB metrics, recent errors, quick restart actions.
15.18 Performance Reporting Dashboard
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/performance-reporting-dashboard.md
Client-facing report viewer rendering report-writer output in structured layout; channel performance charts.
15.19 Cost Dashboard Graphs (/costs)
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/cost-dashboard.md
LLM cost charts by agent/model/day; budget alerts; export to CSV.
15.20 Report Delivery Integrations (Slack, Notion, Drive)
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/report-delivery-integrations.md
Push approved reports to Slack channels, Notion pages, Google Drive.
15.21 Twitter/X and Zoho Channel Detail Pages
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/twitter-zoho-channel-detail-pages.md
Currently fall through to NotImplementedDetail. Needs provider packages and insight workers.
15.22 TikTok Publishing
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/tiktok-publishing.md
TikTok API provider + social-post-writer TikTok path + publish worker.
15.23 GBP Post Publishing
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/gbp-publishing.md
Worker (stub): packages/agents/src/workers/gbp-post-writer.worker.ts (writes post, doesn’t publish)
Wire google-business-profile.ts provider to publish after GBP post approval.
15.24 Email Verification Flow
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/email-verification-missing.md
Verification email on registration; /auth/verify-email endpoint; restrict access until verified.
15.25 JWT Token Revocation on Logout
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/stateless-jwt-no-revocation.md
Server-side token blocklist (Redis) or refresh-token rotation to invalidate stolen tokens.
15.26 AI Chat Executor Subagent (16 tools)
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/ai-chat-executor-subagent.md
12 DM executor tools + 4 client tools (approve content, trigger agents, manage activities, etc.); orchestrator references them but only analytics is wired.
15.27 AI Chat Token Management
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/ai-chat-token-management.md
Token counting per message, sliding window history trimming, context budget management, streaming token display.
15.28 Qdrant Health Check on Startup
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/rag-qdrant-health-check.md
RAG engine should wait for Qdrant readiness; add Docker healthchecks for MongoDB/Qdrant.
15.29 Subscription Cancellation Cleanup
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/subscription-cancellation-cleanup.md
On cancellation: freeze tenant, lock credits, send notification, schedule data export.
15.30 Payment Failed Notification
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/payment-failed-no-notification.md
Payment failure webhook should update invoice status + notify tenant via email + notification.
15.31 OAuth Token Key Rotation
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/oauth-token-key-rotation.md
No key rotation process for AES-256-GCM OAuth token encryption; rotation procedure needed.
15.32 File Upload Security Scanning
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/document-security-scanning.md
No antivirus scan or magic-byte validation before Docling extraction; needed before accepting tenant uploads.
15.33 Overage Billing
Priority: 🟡 Pre-launch
Docs: docs/missing-incomplete-features/overage-billing.md
Usage-based overage charges when Pro credit cap exceeded; overage rate per credit type; invoice line items.
15.34 Brand Voice Scoring & Compliance
Priority: 🟡 Pre-launch (new feature)
Docs: docs/new-features/brand-voice-scoring.md
Structured brand voice definition (tone, personality, vocabulary use/avoid, writing style, examples) · 0–100 compliance scoring pass after every agent generation · flag off-brand content · optional brand compliance audit dashboard
15.35 Audience Personas & Personalization
Priority: 🟡 Pre-launch (new feature)
Docs: docs/new-features/audience-personas-personalization.md
AudiencePersona model (demographics, psychographics, channel preferences, buyer stage) · persona-aware content generation (inject into agent context) · auto-persona generation from CRM + GA4 data · personas page + persona selector on content creation · persona performance analytics
15.36 Content Calendar Auto-Scheduling
Priority: 🟡 Pre-launch (new feature)
Docs: docs/new-features/content-calendar-auto-scheduling.md
Analyse past channel performance → engagement heatmap per channel · auto-pick optimal posting times · scheduling rules (spacing, frequency) · scheduledAt field on posts · social.post.publish BullMQ task at scheduledAt · calendar shows green optimal slots · “Best Times” analytics page
15.37 Competitor Social Monitoring
Priority: 🟡 Pre-launch (new feature)
Docs: docs/new-features/competitor-social-monitoring.md
CompetitorSocial model (platform, followerCount, postFrequency, avgEngagement) · weekly Playwright scraping (latest 20 posts per competitor) · competitor-social-analyst agent (monthly or on-demand) · side-by-side comparison charts · top posts + theme analysis · engagement delta alerts
15.38 AI SEO Optimization — AEO/GEO (Phase 2–4)
Priority: 🟡 Pre-launch (new feature — Phase 1 live)
Docs: docs/new-features/ai-seo-optimization-aeo-geo.md · docs/project/seo-optimizer-feature.md
Phase 2: AEO optimization (Q&A structure, quotable answers, structured data, citations) · Phase 3: GEO monitoring dashboard (brand mention tracking in ChatGPT/Perplexity/Google AI vs competitors) · Phase 4: seo-optimizer agent for guided in-editor content suggestions
15.39 Blog Image Generator Agent
Priority: 🟡 Pre-launch (new feature)
Docs: docs/agents/blog-image-generator.md · docs/new-features/...
Hero + inline images per blog post via Azure GPT Image; brand-matched styles; logo overlay; auto-triggers after blog approval. Worker not yet created.
15.40 Content Auditor Agent
Priority: 🟡 Pre-launch (new feature)
Docs: docs/agents/content-auditor.md
Post freshness audit · content health score · refresh workflow trigger · keyword cannibalisation detection. Worker not yet created.
15.41 WhatsApp Lead Capture
Priority: 🟡 Pre-launch
Provider: packages/providers/whatsapp/src/whatsapp.ts (built, not wired)
Docs: docs/providers/whatsapp-business.md
WhatsApp Business API for lead capture; provider package built but no worker or UI wires it.
15.42 Multi-Language Content & Localization
Priority: 🟢 Post-MVP
Docs: docs/new-features/multi-language-localization.md
language field on all content models · contentLanguages[] on Tenant · content-translator agent · language selector on content creation · side-by-side view · hreflang tags for SEO · Priority languages: EN, HI, TA, ML, AR, TE
15.43 White-Label Client Portal
Priority: 🟢 Post-MVP
Docs: docs/new-features/white-label-client-portal.md
clientUser role with read-only portal · TenantBranding model (agencyName, logo, colors, domain) · custom domain + CNAME + auto-SSL (Nginx/Caddy) · branded reports + emails (SendGrid domain verification) · limited AI Chat for clients
15.44 Webhook & Public API
Priority: 🟢 Post-MVP
Docs: docs/new-features/webhook-public-api.md
ApiKey model (prefix lm_live_/lm_test_, permissions, expiry) · public /api/v1/ endpoints · WebhookEndpoint model (HMAC signing, 3× retry + backoff) · events: blog., social., lead., agent., invoice., subscription. · OpenAPI/Swagger at docs.leadmetrics.app · Zapier integration
15.45 Lead Scoring & Nurture Sequences
Priority: 🟢 Post-MVP
Docs: docs/missing-incomplete-features/lead-scoring-nurture.md
Lead scoring model + score bands + auto nurture sequence trigger
15.46 A/B Ad Variant Generation
Priority: 🟢 Post-MVP
Docs: docs/missing-incomplete-features/a-b-ad-variants.md
A/B variants for Google RSA and Meta ads · variant tracking in Campaign model
15.47 Queue Monitoring UI (Manage)
Priority: 🟢 Post-MVP
Docs: docs/missing-incomplete-features/queue-monitoring-ui.md
Cross-tenant BullMQ queue depth visibility in Manage portal (OQ-2)
15.48 Tenant Storage Cleanup on Cancellation
Priority: 🟢 Post-MVP
Docs: docs/missing-incomplete-features/tenant-storage-cleanup.md
Deactivated/cancelled tenant files remain in Spaces indefinitely; scheduled cleanup job needed.
15.49 Manage Tenant Detail — Config, Agents, Knowledge Base Tabs
Priority: 🟡 Pre-launch
Docs: docs/apps/manage/screens.md (M3 planned tabs)
3 tabs not yet built on tenant detail: Config (plan, feature flags, LLM providers, spending limits) · Agents (per-tenant agent enable/disable override) · Knowledge Base (dataset summary, file counts, re-index controls)
15.50 Activity Templates — Visual Pipeline Editor
Priority: 🟡 Pre-launch
Docs: docs/apps/manage/screens.md (M11 enhancement)
Split templates into Pipeline Templates + Recurring Task Templates tabs · visual drag-and-drop pipeline editor · cron-based recurring task editor · variable substitution preview
15.51 Bing Webmaster Integration
Priority: 🟢 Post-MVP
Provider: packages/providers/microsoft/src/bing-webmaster.ts (built)
Docs: docs/providers/bing-webmaster-tools.md
Provider package complete; no worker, insight, or channel detail page yet.
16. Known Issues Summary
🔴 Blocking (14 items)
| # | Issue | Doc |
|---|---|---|
| 1 | CMS auto-publish (WordPress/Webflow) not wired | cms-publishing.md |
| 2 | Mailchimp/Klaviyo newsletter delivery not built | email-newsletter-delivery.md |
| 3 | Campaign orchestration logic incomplete | campaign-orchestration.md |
| 4 | Agent progress SSE not complete; activity detail no live streaming | real-time-agent-status.md |
| 5 | activity_templates.steps schema undefined (OQ-4) | activity-templates.md |
| 6 | BillingJobData test missing jobId+manual — breaks build | billing-type-mismatch-bug.md |
| 7 | Social posts (FB/IG/LinkedIn) never auto-publish after approval | social-post-platform-publishing.md |
| 8 | Scheduler handles only 3 email tasks; 8 critical types missing | scheduler-missing-task-types.md |
| 9 | Deliverable planner uses hardcoded channel list | hardcoded-connected-channels.md |
| 10 | Free plan not defined — all tenants get Starter forever | free-plan-limits.md |
| 11 | Agent plan gating TODO never implemented | agent-plan-gating.md |
| 12 | Notifications server publishes to non-existent HTTP hub | notification-hub-sse-service.md |
| 13 | Razorpay webhook signature bypass when secret unset | razorpay-webhook-signature-bypass.md |
| 14 | reserveCredits() race condition — double-spend possible | credit-race-condition.md |
🟡 Pre-launch (21 items)
| # | Issue | Doc |
|---|---|---|
| 1 | Performance reporting dashboard incomplete | performance-reporting-dashboard.md |
| 2 | Cost dashboard graphs incomplete | cost-dashboard.md |
| 3 | Report delivery (Slack/Notion/Drive) not built | report-delivery-integrations.md |
| 4 | Notifications server app incomplete | notifications-app.md |
| 5 | TikTok publishing not built | tiktok-publishing.md |
| 6 | GBP post publishing not wired | gbp-publishing.md |
| 7 | Overage billing not built | overage-billing.md |
| 8 | Twitter/X and Zoho channel detail pages are placeholders | twitter-zoho-channel-detail-pages.md |
| 9 | OAuth token key rotation missing | oauth-token-key-rotation.md |
| 10 | No file upload security scanning | document-security-scanning.md |
| 11 | Subscription cancellation: no freeze/lock/notification | subscription-cancellation-cleanup.md |
| 12 | Payment failure webhook doesn’t notify tenant | payment-failed-no-notification.md |
| 13 | No email verification flow | email-verification-missing.md |
| 14 | JWT logout has no server-side revocation | stateless-jwt-no-revocation.md |
| 15 | AI Chat executor subagent: 16 tools not built | ai-chat-executor-subagent.md |
| 16 | AI Chat: no token counting or context window management | ai-chat-token-management.md |
| 17 | RAG engine starts without checking Qdrant health | rag-qdrant-health-check.md |
| 18 | Brand voice scoring not implemented | docs/new-features/brand-voice-scoring.md |
| 19 | Audience personas feature not built | docs/new-features/audience-personas-personalization.md |
| 20 | Content calendar auto-scheduling not built | docs/new-features/content-calendar-auto-scheduling.md |
| 21 | Competitor social monitoring not built | docs/new-features/competitor-social-monitoring.md |
🟢 Post-MVP (8 items)
| # | Issue | Doc |
|---|---|---|
| 1 | Lead scoring and nurture sequences | lead-scoring-nurture.md |
| 2 | A/B ad variant generation | a-b-ad-variants.md |
| 3 | Queue monitoring UI in Manage | queue-monitoring-ui.md |
| 4 | Mobile in-app FCM push registration | mobile-push-notifications.md |
| 5 | Tenant storage cleanup on cancellation | tenant-storage-cleanup.md |
| 6 | Multi-language content & localization | docs/new-features/multi-language-localization.md |
| 7 | White-label client portal | docs/new-features/white-label-client-portal.md |
| 8 | Webhook & Public API | docs/new-features/webhook-public-api.md |
All issue details, build steps, and open decisions:
docs/missing-incomplete-features/
New feature specs:docs/new-features/
Agent documentation:docs/agents/
Feature architecture:docs/features/
Provider integration docs:docs/providers/
Screen-level specs:docs/apps/*/screens.md
17. Competitive Gaps — Features Missing vs. Market
Features identified through analysis of HubSpot, Sprout Social, Semrush, Ahrefs, ActiveCampaign, Klaviyo, AgencyAnalytics, Planable, Hotjar, CoSchedule, and India-specific platforms. None of these exist anywhere in the current codebase unless noted.
Priority guide for this section:
- 🔴 Table-stakes — Customers will not switch to Leadmetrics without this; competitors have had it for years
- 🟡 Differentiator — Meaningfully increases platform value; not universally available
- 🟢 Expansion — Adds a new market segment or use case
17.1 Marketing Automation & Workflow Engine
Current state: Individual BullMQ agent pipelines exist but there is no user-configurable automation layer. Tenants cannot define their own triggers or sequences.
Visual Automation Workflow Builder
Priority: 🔴 Table-stakes · Competitors: HubSpot, ActiveCampaign
Drag-and-drop workflow editor with: enrollment triggers (form fill, page visit, tag applied, lead score threshold), actions (send email, enqueue agent, update CRM field, add to list, create task), if/else conditional branching, delays (fixed + smart), goal-based exit conditions (stop messaging when desired action completed). Without this, the platform cannot replace ActiveCampaign or HubSpot for any agency client.
Event-Based Triggers & Site Tracking
Priority: 🔴 Table-stakes · Competitors: ActiveCampaign, HubSpot
Track contact behavior on client websites (page visits, time on page, CTA clicks, form abandonment) and fire automation triggers based on it. Requires a JavaScript tracking snippet per tenant + event ingestion pipeline into contact profiles.
A/B Testing (Email + Landing Page + Automation Paths)
Priority: 🔴 Table-stakes · Competitors: HubSpot, ActiveCampaign
Split-test email subject lines, send times, body variants, CTA copy, and full automation paths. Winner auto-selection after statistical significance. Without A/B testing, email campaigns cannot be optimized, which is a hard blocker for serious marketers.
Predictive Send-Time Optimization
Priority: 🟡 Differentiator · Competitors: ActiveCampaign, Klaviyo
ML model predicts the best time to send each email per contact based on historical open behavior. 15–25% open rate improvement vs. fixed send times.
Workflow Split Testing (Path-Level A/B)
Priority: 🟡 Differentiator · Competitors: ActiveCampaign
A/B test entire automation paths, not just individual emails. Measures which sequence of touches drives better conversion.
17.2 Lead Scoring & Predictive Intelligence
Current state: Lead model exists. No scoring system of any kind is built.
Behavioral + Demographic Lead Scoring
Priority: 🔴 Table-stakes · Competitors: HubSpot, ActiveCampaign
Manual scoring rules: +N points for email opens, page visits, form fills, specific content consumed; −N points for inactivity, low-fit firmographics. Score thresholds trigger sales handoff or nurture sequences. This is expected at every SMB marketing platform.
Predictive Lead Scoring (ML)
Priority: 🟡 Differentiator · Competitors: HubSpot Enterprise, Klaviyo
ML model calculates likelihood-to-close (or convert) within 90 days based on historical patterns. Requires ≥1,000 contacts and ≥500 conversion events to train. Surface as a “Conversion Probability” field on each lead/contact.
Customer Lifetime Value (CLV) Prediction
Priority: 🟡 Differentiator · Competitors: Klaviyo
Forecast total future spend per customer based on past purchase/engagement behavior. Weekly model retraining. Critical for eCommerce customers; useful for B2B subscription clients.
Churn Risk Scoring
Priority: 🟡 Differentiator · Competitors: Klaviyo
ML predicts 90-day non-purchase (or non-renewal) probability per contact. Trigger re-engagement workflows automatically when churn risk crosses threshold.
RFM Segmentation (Recency · Frequency · Monetary)
Priority: 🟡 Differentiator · Competitors: Klaviyo
Automatically segment contacts into RFM tiers (Champions, Loyal, At Risk, Lost, etc.). Surface in contact list filters and as automation enrollment triggers.
17.3 Analytics, Attribution & Reporting
Current state: Per-channel AI insights exist (ChannelInsight). No cross-channel attribution, no funnel analytics, no revenue attribution.
Multi-Touch Revenue Attribution
Priority: 🔴 Table-stakes · Competitors: HubSpot, Ruler Analytics, Dreamdata
Connect every marketing touchpoint (blog read, email click, ad impression, form fill) to actual closed deals or revenue. Models: First touch, Last touch, Linear, Time decay, Data-driven (algorithmic). Without this, marketers cannot prove marketing ROI — a hard requirement for any agency pitching to clients.
Customer Journey Analytics
Priority: 🟡 Differentiator · Competitors: HubSpot, Amplitude
Visualise the complete path from first touch to conversion: channels visited, content consumed, time between touchpoints, drop-off stages. Surfaces which channel sequences convert best.
SERP Rank Tracking
Priority: 🔴 Table-stakes · Competitors: Ahrefs, Semrush, AgencyAnalytics
Daily keyword position tracking across Google (desktop + mobile, multi-location). History chart per keyword. Share of Voice calculation across tracked keyword set. Ranking change alerts. This is expected by every SEO client — its absence is a hard blocker.
Keyword Gap / Content Gap Analysis
Priority: 🔴 Table-stakes · Competitors: Ahrefs, Semrush
Identify keywords competitors rank for that the client does not. Surfaces missed opportunities ranked by search volume and difficulty. Direct input into the content brief and blog-writer pipeline.
Competitor Organic Traffic Estimation
Priority: 🟡 Differentiator · Competitors: Semrush
Estimate any competitor’s monthly organic traffic from their rankings + CTR model. No access to their analytics required. Valuable for client reporting and competitor benchmarking.
Share of Voice (SOV) Tracking
Priority: 🟡 Differentiator · Competitors: Ahrefs, Sprout Social
Calculate what percentage of impressions (organic, social, or paid) the client captures vs. competitors across a defined keyword/topic set.
UTM Parameter Builder & Campaign Tracker
Priority: 🔴 Table-stakes · Competitors: Every major platform
Generate, save, and manage UTM-tagged URLs. Auto-populate campaign names/sources. Report on UTM-tagged traffic performance. Currently there is no UTM tooling anywhere in the platform — every campaign link has to be hand-crafted.
Portfolio-Level Anomaly Detection
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics
Automatically flag metric deviations across all tenants (not just one). Alert DM when a client’s organic traffic drops >15%, engagement falls, or ad spend spikes. The anomaly-detector worker exists but has no scheduler and no UI surface.
Industry Benchmarking
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics (150K+ campaigns)
Compare client performance metrics against industry averages. Essential for agencies setting realistic KPIs and demonstrating value to clients.
Budget Pacing & Goal Tracking Alerts
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics, HubSpot
Alert when a campaign is under/over-pacing against its budget or monthly goal. Prevents surprise overspend and missed targets.
17.4 SEO Intelligence (Beyond Current Capabilities)
Current state: Keyword table, backlinks, link building, and a 10-dimension SEO score on blog posts exist. No rank tracking, no competitor SEO analysis, no technical SEO UI, no content optimization editor.
Real-Time Content Optimization Editor (Surfer SEO / Clearscope Style)
Priority: 🔴 Table-stakes · Competitors: Surfer SEO, Clearscope, Semrush Writing Assistant
In-editor SEO scoring panel showing: keyword density, recommended terms, heading structure, word count vs. top-ranking pages, readability score, topical completeness score. Ideally integrates with the blog writer output. Without this, the seo-optimizer worker score is a black box with no guidance for human editors.
Internal Linking Recommendations
Priority: 🟡 Differentiator · Competitors: Clearscope, Surfer SEO, LinkWhisper
After a blog post is drafted, suggest relevant internal links to other published content. Builds topical authority and improves crawlability.
Technical SEO Audit UI
Priority: 🔴 Table-stakes · Competitors: Semrush, Ahrefs, Screaming Frog
The site-auditor.worker.ts exists but has no dashboard UI. Build a Technical SEO page showing: crawl errors, broken links, duplicate meta tags, missing alt text, redirect chains, canonical issues, page speed, Core Web Vitals. Agencies cannot work without this.
Core Web Vitals Monitoring
Priority: 🟡 Differentiator · Competitors: Google Search Console, ContentKing, Semrush
Track LCP, FID/INP, CLS over time per URL. Alert on regressions. Feeds into technical SEO audit.
Local SEO — Citation Management & NAP Consistency
Priority: 🟡 Differentiator · Competitors: BrightLocal, Yext, Semrush Local
For clients serving local markets: manage business listings across 50+ directories (Google, Bing, Apple Maps, Yelp, Justdial, Sulekha), detect inconsistent NAP (Name/Address/Phone), bulk-update citations. Extremely relevant for Indian SMB clients (restaurants, clinics, service businesses).
Local Rank Tracking (Map Pack / Heatmap)
Priority: 🟡 Differentiator · Competitors: BrightLocal, Semrush Local
Track Google Maps / local pack rankings for location-specific keywords. Visualise as a geo-heatmap showing ranking position by neighbourhood/radius. Valuable for any brick-and-mortar or service-area business.
Schema Markup Generator
Priority: 🟡 Differentiator · Competitors: Semrush, RankMath, Surfer
Generate JSON-LD structured data (Article, FAQ, HowTo, Product, LocalBusiness, BreadcrumbList) for blog posts and landing pages. Feeds directly into AEO/GEO visibility.
Programmatic SEO Page Generator
Priority: 🟢 Expansion · Competitors: Webflow CMS, custom builds
Generate hundreds of location- or topic-specific landing pages from a data template (e.g., “[Service] in [City]” pages). Auto-populate using the landing-page-writer worker. Critical for local service businesses scaling SEO.
17.5 Social Intelligence & Influencer Marketing
Current state: Social post generation and scheduling exist. No listening, no brand monitoring, no influencer tooling, no employee advocacy.
Social Listening & Brand Monitoring
Priority: 🔴 Table-stakes · Competitors: Sprout Social, Brand24, Mention
Monitor brand name, competitor names, and topic keywords across Twitter/X, Instagram, Reddit, news sites, and blogs in real-time. Sentiment analysis on mentions. Alert on spikes (viral content, PR crisis). Every serious social media manager expects this.
Sentiment Analysis on Brand Mentions
Priority: 🔴 Table-stakes · Competitors: Sprout Social, Brandwatch
Classify brand and competitor mentions as positive/neutral/negative. Aspect-cluster the sentiment (e.g., “slow delivery” vs. “great product”). Track sentiment trend over time. Surface in DM portal for client reporting.
Influencer Discovery & Campaign Management
Priority: 🟡 Differentiator · Competitors: Sprout Social, GRIN, CreatorIQ
Discover relevant influencers/creators by topic, audience demographics, engagement rate, and platform. Manage outreach, content briefs, approvals, deliverables, and ROI reporting in one workflow. High demand from agencies running influencer campaigns for clients.
Employee Advocacy
Priority: 🟢 Expansion · Competitors: Sprout Social, Hootsuite Amplify
Curate pre-approved content for client employees to share on their personal LinkedIn/social profiles. Track amplification reach and engagement. Demonstrated 85%+ organic reach improvement in Sprout Social case studies.
Pinterest Integration
Priority: 🟡 Differentiator · Competitors: Planable, Hootsuite, Later
Pinterest content creation, scheduling, and analytics. Particularly relevant for fashion, food, home décor, and wedding clients — high volume segments in India.
YouTube Content Support (Scripts + Analytics)
Priority: 🟡 Differentiator · Competitors: VidIQ, TubeBuddy, general platforms
Video script generation, YouTube SEO (title/description/tags optimization), channel analytics (views, watch time, subscriber growth, top videos). Video is the dominant format for engagement in India.
17.6 CRM & Lead Intelligence Depth
Current state: Basic Lead and Contact models exist. No scoring, no deal pipeline, no behavioral event tracking, no CRM integrations.
Deal Pipeline / Opportunity Tracking
Priority: 🔴 Table-stakes · Competitors: HubSpot CRM, Zoho CRM
Visual kanban pipeline with stages (Lead → MQL → SQL → Proposal → Closed). Drag deals between stages. Revenue forecasting by stage probability. Without this, the Lead model is just a contact list — not a CRM.
CRM Integrations (Zoho, HubSpot, Salesforce)
Priority: 🔴 Table-stakes · Competitors: Every major marketing platform
Bi-directional sync with Zoho CRM (dominant in India), HubSpot CRM, and Salesforce. New leads from Leadmetrics forms/campaigns flow into the CRM; deal stage changes in CRM update contact status in Leadmetrics. Most agencies and SMBs already have a CRM — they need Leadmetrics to plug in, not replace it.
Account-Based Marketing (ABM)
Priority: 🟡 Differentiator (🔴 Table-stakes if B2B clients are confirmed) · Competitors: HubSpot, 6sense, Demandbase, Terminus
For B2B agencies serving enterprise clients (IT services, SaaS, industrial — all major segments in Indian agency market), ABM is the core workflow, not a nice-to-have. The platform currently has no account-level view at all.
Core ABM features required:
- Company/Account grouping: Cluster
Contactrecords under a parentAccount(company). Track account-level engagement score as the aggregate of individual contact activities. Add anAccountmodel linked toContactandLead. - LinkedIn outreach sequences: Automated multi-touch LinkedIn connection + message sequences targeting specific job titles at target accounts. Wire through
packages/providers/linkedin/+ LinkedIn Message API (v202504). - Deal-stage content mapping: Auto-suggest or auto-generate content based on the account’s current deal stage (awareness → consideration → decision). TOFU for new accounts, MOFU for engaged, BOFU for proposal-stage.
- CRM deal sync: Bi-directional sync of account and deal stage with Zoho CRM (India-dominant), HubSpot CRM, and Salesforce. When an account moves to “Proposal Sent” in CRM, trigger a content delivery sequence.
- Intent data integration: Surface which target accounts are actively researching the client’s category (via Bombora or G2 intent signals). Surface as “surging accounts” in a pipeline view — allows proactive outreach timing.
- Company-level attribution: Credit each content touchpoint to the deal revenue it influenced at the account level, not just the individual contact.
For Indian IT/SaaS/B2B agencies, this is the single feature that determines whether the platform competes with HubSpot or stays in the SMB/eCommerce lane.
Behavioral Event Tracking (Website → CRM)
Priority: 🟡 Differentiator · Competitors: ActiveCampaign, HubSpot
Embed a tracking pixel on the client’s website. Every page visit, CTA click, and download by a known contact is logged to their profile. Trigger automations based on on-site behavior (e.g., enroll in nurture when contact visits the pricing page 3 times).
17.7 Lead Capture & Conversion
Current state: No form builder, no lead capture widgets, no chatbot, no A/B testing.
Form Builder (Drag-and-Drop, Conditional Logic, Multi-Step)
Priority: 🔴 Table-stakes · Competitors: HubSpot, Typeform, Gravity Forms
Build embeddable forms with: field types (text, dropdown, date, file), conditional field display, multi-step wizard flows, spam protection (reCAPTCHA), custom thank-you pages. Connect form submissions directly to automations and contact creation. This is how the Lead model gets populated.
Lead Capture Widgets (Pop-ups, Slide-ins, Exit-Intent)
Priority: 🟡 Differentiator · Competitors: HubSpot, OptinMonster, Sleeknote
On-site overlays triggered by: scroll depth, time on page, exit intent, specific page visit. A/B testable. Connected to contact creation and automation enrollment. Critical for lead generation for SMB clients.
Progressive Profiling Forms
Priority: 🟡 Differentiator · Competitors: HubSpot
Forms that hide fields already known from CRM. Each visit collects new data points without asking the same questions. Increases form completion rate.
AI Chatbot / Live Chat for Lead Capture
Priority: 🟡 Differentiator · Competitors: Intercom, Drift, HubSpot Chat
AI-powered chat widget on client websites that qualifies visitors, answers FAQs, captures contact details, and books meetings. Hands off to human agent when needed. The AI Chat infrastructure already exists — this is a website widget surface.
Landing Page Visual Builder (Drag-and-Drop)
Priority: 🟡 Differentiator · Competitors: Unbounce, Instapage, Leadpages
Currently landing pages are AI-generated HTML only. A visual drag-and-drop editor (Webflow/Framer-style) lets DMs and clients tweak layouts without code. At minimum: edit text/images/buttons in-line; at most: full section-based builder.
17.8 eCommerce Integration
Current state: No eCommerce integrations of any kind.
Shopify / WooCommerce Integration
Priority: 🟡 Differentiator · Competitors: Klaviyo, ActiveCampaign, Omnisend
Sync product catalog, orders, customers from Shopify or WooCommerce. Feed purchase data into contact profiles and automation triggers. Required for any eCommerce client. Klaviyo built its entire business on this.
Abandoned Cart & Browse Abandonment Flows
Priority: 🟡 Differentiator · Competitors: Klaviyo, Omnisend
Automatically trigger email/SMS/WhatsApp flows when a known contact abandons a cart or browses products without purchasing. Among the highest-ROI automations in eCommerce marketing.
Post-Purchase Flows (Review Requests, Upsell, Win-Back)
Priority: 🟡 Differentiator · Competitors: Klaviyo
Automated sequences after purchase: thank-you email → review request → upsell recommendation → win-back if no repeat purchase within X days.
Product-Level Analytics
Priority: 🟢 Expansion · Competitors: Klaviyo
Track which products drive the most revenue, repeat purchases, and churn. Surface as a product performance dashboard.
17.9 WhatsApp & Messaging (India-Critical)
Current state: packages/providers/whatsapp/src/whatsapp.ts is built but nothing is wired to it. SMS provider (MSG91/Twilio) packages are not built.
WhatsApp Marketing Campaigns
Priority: 🔴 Table-stakes for India · Competitors: WATI, Zoko, Interakt, WebEngage
Send broadcast messages, promotional campaigns, and transactional notifications via WhatsApp Business API. Segment-based targeting. Template message management (pre-approved by Meta). Delivery + read rate analytics. WhatsApp has 500M+ users in India and significantly outperforms email open rates. Any Indian marketing platform without native WhatsApp is at a major competitive disadvantage.
WhatsApp Automation Flows
Priority: 🔴 Table-stakes for India · Competitors: WATI, Zoko
Automate WhatsApp message sequences: welcome flow on first contact, lead nurture, abandoned cart, appointment reminders, post-purchase. Interactive buttons and quick replies. NLP-based FAQ responses.
WhatsApp Chatbot for Lead Capture
Priority: 🟡 Differentiator · Competitors: WATI, Interakt
AI chatbot on WhatsApp that qualifies leads, captures contact details, and routes to human agent. Integrates with the Lead model.
SMS Marketing Campaigns (MSG91 / Exotel)
Priority: 🟡 Differentiator · Competitors: MSG91, Exotel (India), Twilio (global)
The notifications server has an SMS handler stub. Building out actual provider packages (@leadmetrics/provider-msg91) unlocks SMS broadcasts, OTPs, and transactional alerts. High relevance for India (low data connectivity segments).
Web Push Notifications (Browser-Based)
Priority: 🟡 Differentiator · Competitors: OneSignal, PushOwl, Pushwoosh
Browser push notifications for website visitors (opt-in). Separate from mobile FCM push. Useful for re-engaging website visitors who haven’t subscribed to email. Segment-targeted, triggered by behavior.
RCS Messaging
Priority: 🟢 Expansion · Competitors: Klaviyo, Sinch
Rich Communication Services — next-gen SMS with images, buttons, carousels. Google has been rolling out RCS broadly; increasingly relevant for marketing in India.
17.10 Reputation Management & Social Proof
Current state: review-response-writer.worker.ts exists but there is no review collection, aggregation, or display surface anywhere.
Review Aggregation & Management
Priority: 🔴 Table-stakes · Competitors: Birdeye, Podium, ReviewTrackers, Sprout Social
Aggregate reviews from Google, Facebook, Justdial (India), Trustpilot, and industry-specific platforms into a single inbox. Sentiment prioritisation (flag 1-star reviews for immediate response). One-click response from unified UI. The review-response-writer worker already generates responses — it just needs a platform to surface them on.
AI-Powered Review Response Automation
Priority: 🟡 Differentiator · Competitors: Birdeye, Podium
Auto-generate contextual responses to new reviews (positive and negative) using the existing review-response-writer worker. Queue for human approval before posting. Auto-post for 4–5 star reviews if confidence is high.
Social Proof Widgets (Testimonials, Star Ratings)
Priority: 🟡 Differentiator · Competitors: Senja, EmbedSocial, Trustmary
Embeddable widgets for client websites: testimonial grids, review carousels, “wall of love”, live review feeds, star rating badges. Connected to the review aggregation pipeline. Helps clients convert website visitors using social proof.
FOMO / Real-Time Notification Widgets
Priority: 🟢 Expansion · Competitors: Notifyio, Proof
Live pop-up notifications on client websites: “X people signed up today”, “5 people viewing this page”, recent purchase notifications. Proven to increase conversion rates.
17.11 Behavioral Analytics (UX Intelligence)
Current state: No behavioral analytics of any kind. No heatmaps, no session recording, no funnel analysis.
Heatmaps (Click, Scroll, Hover)
Priority: 🟡 Differentiator · Competitors: Hotjar, Microsoft Clarity (free), Crazy Egg
Visual heatmaps of where users click, how far they scroll, and where they hover on landing pages and web pages. Identify above-the-fold content effectiveness, CTA placement, and content drop-off. Essential for optimizing AI-generated landing pages.
Session Recording & Replay
Priority: 🟡 Differentiator · Competitors: Hotjar, FullStory, Microsoft Clarity
Record individual user sessions as video replays. Detect rage clicks (frustrated rapid clicking), dead clicks (clicking non-interactive elements), and navigation confusion. Directly informs landing page and content quality.
Funnel Analysis & Conversion Drop-off
Priority: 🟡 Differentiator · Competitors: Hotjar, Mixpanel, Google Analytics 4
Define multi-step funnels (e.g., Landing Page → Form Partial Fill → Form Submit → Thank You) and visualise where visitors abandon. Critical for optimising lead capture flows built on the platform.
On-Page Feedback Widgets
Priority: 🟢 Expansion · Competitors: Hotjar, Userpilot
Embed micro-survey widgets (“Was this helpful? 👍 👎”) or star ratings on any page. Collect qualitative feedback tied to specific content or page sections.
17.12 Collaboration & Approval Workflows (Advanced)
Current state: Two-level approval exists: DM reviews → client approves. No team comments, no multi-level custom routing, no workspace isolation per client.
Team Commenting & @Mentions on Content
Priority: 🔴 Table-stakes · Competitors: Planable, Loom, Notion
Inline comments on any content item (blog, social post, newsletter, ad copy). @mention teammates to assign feedback. Threaded discussion per content item. Resolve/unresolve comment threads. Every content collaboration tool has this — its absence forces teams to use Slack/email for feedback, breaking the workflow.
Multi-Level Custom Approval Routing
Priority: 🟡 Differentiator · Competitors: Planable, Gain.app, Approval Studio
Configure approval chains per client or per content type: e.g., Writer → Senior Editor → Legal → Client. Each approver sees only their stage. Reject at any level sends back to previous stage with notes. Lock content after final approval to prevent last-minute changes.
Visual Grid View (Instagram Aesthetic Planning)
Priority: 🟡 Differentiator · Competitors: Planable, Later, Planoly
Preview how a sequence of social posts will look side-by-side on an Instagram/Facebook grid before publishing. Essential for brand-consistency-focused clients.
Auto-Publish on Final Approval
Priority: 🟡 Differentiator · Competitors: Planable, Hootsuite
When the final approver signs off, automatically queue the content for publishing at its scheduled time — no manual step required.
Workspace Isolation Per Client (Multi-Workspace)
Priority: 🟡 Differentiator · Competitors: Planable, Sprout Social
Separate workspace per tenant with isolated: approval workflows, brand assets, content calendar, team member access, and reporting settings. Currently all tenants share the same platform config.
17.13 Agency & White-Label Reporting
Current state: White-label client portal is planned (§15.43) but not started. No automated client reporting, no custom domain, no data aggregation dashboard.
Automated Client Report Generation & Delivery
Priority: 🔴 Table-stakes for agencies · Competitors: AgencyAnalytics, DashThis, Whatagraph
Schedule monthly/weekly PDF/email reports per client: SEO rankings, social engagement, ad spend ROAS, organic traffic, lead gen numbers. Branded with agency logo. Auto-delivered without manual effort. Agencies live and die by this — no automated reporting = hours of manual work per client per month.
Multi-Channel Aggregated Dashboard (SEO + Social + Paid + Email)
Priority: 🔴 Table-stakes for agencies · Competitors: AgencyAnalytics, DashThis
Single dashboard combining: organic rankings, social engagement, Google Ads ROAS, Meta Ads CPA, email open rates, lead counts. Currently each data source is siloed in its own section.
White-Label Custom Domain for Client Portals
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics, NinjaCat
Host client dashboards at reports.agencyname.com instead of leadmetrics.ai. Custom branding (logo, colors, fonts, login page). Removes vendor branding entirely.
Trend Forecasting & Scenario Modeling
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics
AI-driven best-case / worst-case projections for key metrics (organic traffic, lead volume, social reach). Helps agencies set realistic client expectations and demonstrate value.
Goal Tracking & Budget Pacing Alerts
Priority: 🟡 Differentiator · Competitors: AgencyAnalytics, HubSpot
Alert DMs and clients when campaigns go off-pace: “You’ve used 80% of your monthly ad budget in 12 days” or “Organic traffic is 40% below monthly target at mid-month.”
17.14 India-Specific Platform Requirements
Current state: Razorpay integrated; GST/INR/PAN fields exist on Invoice model. No regional language support, no Zoho CRM integration, no Paytm/Cashfree, no DPDP compliance.
Zoho CRM Native Integration
Priority: 🔴 Table-stakes for India · Competitors: Zoho One, WebEngage, MoEngage
Zoho CRM has 40%+ market share among Indian SMBs. Bi-directional contact/lead/deal sync between Leadmetrics and Zoho CRM is effectively mandatory for the Indian market. Provider package packages/providers/zoho/src/zoho-books.ts exists for Zoho Books (invoicing) — extend to Zoho CRM.
Additional Payment Gateways (Paytm, Cashfree, PayU)
Priority: 🟡 Differentiator · Competitors: Indian-market platforms
Paytm Payment Gateway has zero charges for domestic transactions. Cashfree and PayU are widely used by Indian SMBs. Offering multiple gateways reduces friction for Indian clients paying subscription fees.
Regional Language Support (Hindi, Tamil, Telugu, etc.)
Priority: 🟡 Differentiator · Competitors: Regional Indian marketing tools
UI localisation for Hindi, Tamil, Telugu, Marathi, Kannada (top 5 Indian languages by internet user base). Agent-generated content in regional languages (already planned as §15.42 multi-language). Critical for reaching Tier 2/3 Indian cities.
DPDP Act Compliance (India Data Protection)
Priority: 🔴 Table-stakes for India · Competitors: All India-market SaaS
India’s Digital Personal Data Protection Act (2023) requires: consent management for data collection, data deletion on request, data localisation option, privacy notice on forms, purpose limitation. Non-compliance = legal risk for clients.
Justdial / IndiaMart Integration
Priority: 🟡 Differentiator · Competitors: India-specific CRMs
Import leads from Justdial and IndiaMart (the two largest Indian B2B lead directories) directly into the Leadmetrics contact/lead pipeline. These are primary lead sources for a majority of Indian SMBs.
Paytm / UPI Payment Links in WhatsApp & Email
Priority: 🟡 Differentiator · Competitors: WATI, Zoko
Embed UPI payment links in WhatsApp and email campaigns for direct B2C conversions. Particularly relevant for service businesses (clinics, salons, coaching) that collect payment via UPI.
17.15 Content Operations & Quality
Current state: Content is AI-generated and reviewed by DM. No quality scoring beyond SEO, no plagiarism checking, no grammar tooling, no content health monitoring.
Plagiarism / Duplicate Content Checker
Priority: 🟡 Differentiator · Competitors: Copyscape, Quetext, Grammarly Business
Scan AI-generated content against the web before publishing. Flag duplicate or near-duplicate passages. Protects clients from SEO penalties and copyright issues.
Grammar & Readability Scoring
Priority: 🟡 Differentiator · Competitors: Grammarly Business, Hemingway
Automated grammar checking and Flesch-Kincaid readability scoring on all generated content. Partially addressed by the seo-optimizer worker but not surfaced as an editable writing score.
Content Health & Freshness Monitoring
Priority: 🟡 Differentiator · Competitors: Clearscope, ContentKing, SEMrush Content Audit
Track published blog posts: ranking decline signals, content age, traffic trend, suggested refresh date. Queue stale posts for an content-auditor agent run. Feeds into the planned content auditor (§10.29).
Content Brief Template Library
Priority: 🟡 Differentiator · Competitors: Semrush, MarketMuse
Industry-specific content brief templates (SaaS, eCommerce, healthcare, legal, real estate) pre-loaded in the content brief system. Reduces setup time per new client.
17.16 Survey, Feedback & NPS
Current state: No survey or NPS tooling of any kind.
NPS & Customer Satisfaction Surveys
Priority: 🟡 Differentiator · Competitors: Delighted, SurveyMonkey, HubSpot
Send automated NPS surveys post-purchase or at key lifecycle milestones. Track Net Promoter Score over time. Route detractors into re-engagement workflows, promoters into review request flows. Essential for clients who want to measure customer loyalty.
In-App / On-Page Feedback Widgets
Priority: 🟢 Expansion · Competitors: Hotjar, Userpilot, Delighted
Embed lightweight rating widgets on client web pages or in emails. Collect micro-feedback without redirecting users to an external survey tool.
17.17 Webinar & Event Marketing
Current state: No event or webinar support.
Webinar / Event Landing Page & Registration
Priority: 🟢 Expansion · Competitors: Zoom Webinars, Demio, HubSpot Events
Create event registration pages, send automated reminders (email + WhatsApp), and trigger post-event follow-up sequences. Integrates with Zoom/Google Meet for scheduling. High demand from coaches, consultants, and B2B agencies running webinar-based lead gen.
17.18 DataForSEO-Powered SEO Suite
Decision: Use DataForSEO (or equivalent: SerpAPI, SE Ranking API) as the data backbone. All features below become buildable without owning crawl infrastructure.
DataForSEO APIs relevant: SERP API · Keywords Data API · DataForSEO Labs API · Backlinks API · On-Page API · Business Data API · Content Analysis API · Merchant API
Pricing: ~$0.0006–$0.002 per SERP query; $0.002 per keyword data point at live tier.
⚠️ Pre-integration validation required: DataForSEO has excellent global coverage but India-specific keyword volume data for regional-language queries (Tamil, Hindi, Kannada, Telugu) is historically thinner than Semrush’s. Before committing exclusively to DataForSEO, test a sample of 100+ vernacular Indian keywords against both APIs. If a quality gap exists, consider a hybrid approach: DataForSEO for global + English-language India queries (best unit economics for white-label SaaS) + Semrush API for India vernacular/regional keywords. A hybrid often costs less than compensating for gaps with a single-source approach. Evaluate SerpAPI and SE Ranking API as additional fallbacks.
SERP Rank Tracking
Priority: 🔴 Table-stakes · Competitors: Ahrefs, Semrush, AgencyAnalytics · Data source: DataForSEO SERP API
Daily keyword position tracking (Google, Bing — desktop + mobile, multi-location). History chart per keyword. Ranking change alerts (+/− N positions). Share of Voice calculation. Up to 40 tracked projects, 5,000+ keywords. Integrate with the existing Keyword model — add a KeywordRanking table with daily snapshots.
Keyword Research & Difficulty Scoring
Priority: 🔴 Table-stakes · Data source: DataForSEO Keywords Data API + Labs API
Seed keyword expansion, search volume, difficulty, CPC, intent classification (informational / navigational / transactional / commercial), SERP feature flags (featured snippet, PAA, local pack). Feeds directly into the content-brief-writer and keyword-researcher agents as live data.
Keyword Gap / Content Gap Analysis
Priority: 🔴 Table-stakes · Data source: DataForSEO Labs API (ranked keywords per domain)
Compare client domain vs. up to 5 competitor domains. Surface keywords competitors rank for that the client doesn’t. Sort by search volume + difficulty gap. Direct input into the content planning pipeline. Wire results to auto-generate ContentBrief records.
Competitor Organic Traffic Estimation
Priority: 🟡 Differentiator · Data source: DataForSEO Labs API
Estimate any domain’s monthly organic traffic from ranking positions + click-through rate model. No access to their GA required. Use for client reporting and competitive benchmarking slides.
Technical SEO Audit UI (Site Auditor)
Priority: 🔴 Table-stakes · Worker exists: site-auditor.worker.ts (no UI) · Data source: DataForSEO On-Page API (100+ parameters)
Dashboard page surfacing crawl results: broken links, missing/duplicate meta tags, missing alt text, redirect chains, canonical errors, slow pages, Core Web Vitals (LCP/INP/CLS), structured data validation. The worker already runs — it just needs a results page. Build a SiteAuditReport model and a /seo/site-audit page.
SERP Feature Tracking (Featured Snippets, PAA, Local Pack)
Priority: 🟡 Differentiator · Data source: DataForSEO SERP API
Track which of the client’s keywords trigger rich SERP features (featured snippet, People Also Ask, image carousel, local pack, knowledge panel). Alert when client gains or loses a featured snippet position.
AI Search Visibility (LLM Brand Mentions)
Priority: 🟡 Differentiator · Data source: DataForSEO Content Analysis API + AI Optimization Data API
Track brand and competitor mentions in AI-generated answers (ChatGPT, Perplexity, Google AI Overviews). Already planned in §6.2 — DataForSEO provides the data backbone.
Local SEO — Citation Management
Priority: 🟡 Differentiator · Data source: DataForSEO Business Data API + Google My Business API
Manage business listings across 50+ directories. Detect NAP (Name/Address/Phone) inconsistencies. Bulk-update citations. Local rank tracking with geo-heatmap. Critical for Indian brick-and-mortar and service-area businesses.
Google Shopping Product Intelligence
Priority: 🟡 Differentiator · Data source: DataForSEO Merchant API
Monitor competitor product listings on Google Shopping: pricing, promotions, product titles. Track client product feed health. Identify pricing gaps vs. competitors.
17.19 eCommerce Platform Integrations
Current state: No eCommerce integrations. Provider packages for Meta/LinkedIn exist but aren’t wired for product publishing. Confirmed requirement: clients do sell products online.
Shopify Integration (Native)
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend, ActiveCampaign
Bi-directional sync: product catalog, orders, customers, inventory levels, tags, discount codes. Trigger automations on Shopify events (order placed, order cancelled, product viewed, cart created, checkout started). Install via Shopify app. Every eCommerce client with Shopify expects this as a baseline.
WooCommerce Integration
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend, Mailchimp
WordPress plugin or REST API sync: products, orders, customers, coupons. Same event model as Shopify. WooCommerce powers ~39% of global eCommerce sites and is dominant on Indian self-hosted stores.
Magento / Adobe Commerce Integration
Priority: 🟡 Differentiator · Competitors: Klaviyo, Dotdigital
REST/GraphQL API sync for enterprise-tier eCommerce clients. Product catalog, order history, customer segments.
Indian eCommerce Platform Integrations
Priority: 🟡 Differentiator · Unique to India market
- Dukaan — India-built store platform (UPI, COD, regional payment support)
- Instamojo — Quick-setup Indian seller platform; import leads from Instamojo store
- Shiprocket — India’s largest logistics aggregator; sync order status, shipping events → trigger post-purchase flows
- Meesho / Flipkart Seller — Import seller orders and customer data for reseller marketing (India Tier 2/3 segment)
Product Feed Management
Priority: 🔴 Table-stakes for eCommerce · Competitors: DataFeedWatch, Channable
Real-time product catalog sync to Google Merchant Center and Meta Catalog. Automatic attribute mapping (title, price, images, MPN, GTIN, category). Feed rule automation (dynamic title enrichment, price adjustments). Out-of-stock suppression. Error validation before submission. Required to run Google Shopping and Meta dynamic product ads.
17.20 eCommerce Automation Flows
Current state: BullMQ workers for blog/social/newsletter exist. No eCommerce-specific automation flows. These are the highest-ROI automations in eCommerce marketing — Klaviyo customers report 30–60% of email revenue comes from automated flows.
Abandoned Cart Recovery
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend, Privy
Multi-step sequence triggered when a known contact starts checkout but doesn’t complete it. Typical flow: Email 1 (1h after abandon) → Email 2 with product image (24h) → Email 3 with discount (48–72h) → SMS/WhatsApp nudge (72h+). Show the specific abandoned products in each message. Dynamic product images and prices. Average revenue recovery: 5–15% of abandoned carts.
Browse Abandonment Flow
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend
Triggered when a contact views a product page but doesn’t add to cart. Sends personalised “you were looking at this” email within 1–4 hours. Lower conversion than cart abandon but 10–20× higher volume of triggers.
Back-in-Stock Alerts
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Back In Stock (Shopify app)
Visitor opts into restock notification on a sold-out product page. When inventory > 0, fire immediate email/SMS/WhatsApp alert to all opted-in contacts. Priority access (first-come-first-served) messaging increases urgency. Average conversion rate: 15–25% of waitlist.
Price Drop Notifications
Priority: 🟡 Differentiator · Competitors: Klaviyo, PriceWaiter
When a product’s price drops below a threshold (absolute or %, e.g. “now 20% off”), notify contacts who viewed/saved/wishlisted it. Combine with “only 5 left” inventory signal for maximum urgency.
Wishlist Abandonment Flow
Priority: 🟡 Differentiator · Competitors: Klaviyo, Wishlist Plus
Time-based reminders for contacts with saved wishlists: “Still thinking about it?” at 7 days, price drop alert if any wishlisted item goes on sale, low-stock warning when inventory dips below 5 units.
Post-Purchase Flow
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend
Full post-purchase sequence: Order confirmation (minutes) → Shipping notification with tracking link → Delivery confirmation → Educational content (how to use the product) → Review request (day 7–14) → Cross-sell recommendation (day 21–30) → Win-back if no repeat purchase (day 60–90). First-time buyer vs. repeat buyer branch logic.
Win-Back / Re-Engagement Flow
Priority: 🔴 Table-stakes · Competitors: Klaviyo, ActiveCampaign
Automatically enrol contacts who haven’t purchased in X days (configurable per client: 60/90/180). Multi-step sequence: “We miss you” → best-selling product showcase → personalised discount → final “last chance” message → suppress from marketing list if no response.
Welcome Series (New Customer / New Subscriber)
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Omnisend, Mailchimp
Trigger on first purchase or email opt-in. Multi-step: brand story → best sellers → social proof (reviews) → discount for second purchase. Highest open rates of any automated flow (40–60%).
Replenishment / Subscription Reminder
Priority: 🟡 Differentiator · Competitors: Klaviyo, Recharge
For consumable products (supplements, cosmetics, pet food), predict next purchase date based on average replenishment cycle and send a reminder before they run out. “Time to reorder?” with one-click reorder link.
17.21 eCommerce Product Intelligence & Merchandising
AI Cross-Sell / Upsell Recommendation Engine
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Nosto, Barilliance
ML-powered product recommendations: “Frequently Bought Together”, “Customers also bought”, “Complete the look”. Real-time inference without batch retraining. Personalised per contact based on browse + purchase history. Surface in: post-purchase emails, abandoned cart emails, product page widgets, checkout upsell modal. Amazon credits 35% of sales to cross-sell/upsell — average AOV lift of 10–30%.
RFM Segmentation Dashboard
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Drip
Auto-compute and maintain RFM scores (Recency, Frequency, Monetary) per contact. Map to named segments: Champions, Loyal Customers, Potential Loyalists, At Risk, Can’t Lose Them, Lost. Use as automation enrollment triggers and campaign filter criteria. Build on the existing Contact model — add rfmScore, rfmSegment, predictedClv, churnRisk fields.
Customer Lifetime Value (CLV) Prediction
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Triple Whale
ML model predicting total future spend per customer. Weekly retraining as new orders arrive. Surface CLV tier in contact profiles. Use to: suppress low-CLV contacts from acquisition campaigns, prioritise high-CLV contacts for VIP treatment, set ad audience bids by CLV tier.
Churn Risk & Predicted Next Order Date
Priority: 🟡 Differentiator · Competitors: Klaviyo
90-day churn probability per contact (Low/Medium/High). Expected Date of Next Order (ENDO) based on individual purchase cadence. Fire win-back flow when churn risk crosses High threshold.
Product Review Collection & Management
Priority: 🔴 Table-stakes · Competitors: Yotpo, Stamped, Judge.me
Automated post-purchase review request flow (email + SMS + WhatsApp). Photo/video review submission. Review moderation dashboard. Q&A per product. Rating aggregation with structured data (JSON-LD) for Google rich results. Display reviews as social proof widgets on client landing pages.
UGC Collection & Shoppable Display
Priority: 🟡 Differentiator · Competitors: Yotpo, TINT, EmbedSocial
Aggregate customer photos/videos from Instagram (hashtag + tag), email submissions, and review submissions. AI auto-product recognition in customer images. Shoppable UGC gallery for product pages (click photo → buy product). Rights management for UGC usage.
Google Shopping Campaign Management
Priority: 🔴 Table-stakes · Competitors: Semrush, DataFeedWatch, Channable
Product feed submission to Google Merchant Center. Shopping campaign setup in Google Ads (product groups, bid strategies, custom labels). Feed health monitoring (missing attributes, disapproved products). Performance Max campaign creation with asset groups. ROAS measurement per product/category. Built on top of the existing packages/providers/google/src/google-ads.ts provider.
Dynamic Retargeting Ads (Google + Meta)
Priority: 🔴 Table-stakes · Competitors: Klaviyo, AdRoll, Criteo
Automatically show site visitors the exact products they viewed as they browse Google Display/YouTube and Facebook/Instagram. Uses the product feed + pixel data. Dynamic creative assembly (product image + price + CTA). Audience segmentation: viewers, cart abandoners, purchasers. Wire into existing Meta/Google providers.
Performance Max Campaigns
Priority: 🟡 Differentiator · Competitors: Google Ads, Semrush
AI-optimised Google campaigns that run across Search, Shopping, YouTube, Display, Discover, Gmail, and Maps from a single campaign. Requires asset groups (headlines, descriptions, images, videos) + product feed. ML-driven audience targeting and bid optimisation.
17.22 Loyalty, Referral & Subscription Programs
Points-Based Loyalty Program
Priority: 🟡 Differentiator · Competitors: Yotpo Loyalty, Smile.io, Zoho Thrive
Earn points on purchases, reviews, referrals, social shares, birthdays. Tiered structure (Bronze/Silver/Gold/Platinum) with progressive benefits. Points expiration rules. Branded loyalty hub page. Redemption as discount codes or product rewards. 5% retention increase → 95% profit increase (Bain & Company).
Referral Program
Priority: 🟡 Differentiator · Competitors: ReferralCandy, Smile.io, PartnerStack
Unique referral links per customer. Dual-sided incentives (referrer + new customer both rewarded). Anti-fraud mechanisms. Track referral chain and attribution. Wire rewards delivery into existing email/WhatsApp flows. Average: referred customers have 37% higher retention than non-referred.
Subscription Commerce Support
Priority: 🟡 Differentiator · Competitors: Recharge (Shopify), Chargebee, Stripe Billing
Recurring billing for physical product subscriptions (supplements, coffee, beauty boxes). Dunning management: smart retry logic on failed payments, multi-channel failure notifications (email + SMS + WhatsApp), escalating retry schedule (day 1 → 3 → 7 → 14). Subscription pause/skip/swap. Churn prevention portal for subscribers.
Gamification & Spin-to-Win
Priority: 🟢 Expansion · Competitors: Privy, OptiMonk, WheelOfPopups
Spin-the-wheel pop-up for email/SMS opt-in incentive. Scratch card reveals. Progress bars toward next loyalty tier. Gamification increases opt-in rates by 3–5× vs. standard discount pop-ups.
17.23 Customer Data Platform (CDP) & Unified Profiles
Current state: Contacts exist in the Contact table. No cross-channel identity resolution, no event timeline, no unified profile across web, email, WhatsApp, and purchase history.
Unified Customer Profile
Priority: 🔴 Table-stakes · Competitors: Klaviyo, Segment, HubSpot CDP
Single profile per contact aggregating: purchase history, email engagement, website behavior (pages visited, products viewed), WhatsApp interactions, support tickets, review submissions, loyalty points balance. Profile enrichment from 350+ data integrations. Real-time update on every event.
Identity Resolution (Cross-Device / Cross-Channel)
Priority: 🟡 Differentiator · Competitors: Segment, Lytics, mParticle
Stitch anonymous web sessions to known contacts when they identify (form fill, email click, WhatsApp opt-in). Merge duplicate profiles created across devices. Build a complete journey even before the contact first provides their email.
First-Party Event Tracking & Ingestion Pipeline
Priority: 🔴 Table-stakes · Competitors: Segment, Klaviyo, ActiveCampaign
JavaScript pixel + server-side event API to capture: page views, product views, add-to-cart, checkout started, purchase completed, search queries, video plays, form interactions. Store as an event timeline per contact. Privacy-first (first-party only; no reliance on third-party cookies — critical post-Chrome deprecation of third-party cookies).
Audience Segmentation Builder
Priority: 🔴 Table-stakes · Competitors: Klaviyo, ActiveCampaign, HubSpot
Visual drag-and-drop segment builder with conditions: demographic (location, language, device), behavioral (pages visited, products viewed, emails opened, purchase frequency), transactional (CLV tier, last order date, total spend), predictive (churn risk, next order date). “Segment AI” — natural language prompt → segment definition (Klaviyo-style). Use segments as automation triggers and campaign audience filters.
Consent Management & Privacy Controls
Priority: 🔴 Table-stakes · Competitors: All platforms
GDPR-compliant consent capture on forms and tracking pixels. DPDP Act (India) compliance: purpose limitation, data deletion on request, breach notification. Consent preferences stored per contact, respected by all send operations. Cookie consent banner for client websites.
17.24 Multi-Touch Revenue Attribution
Current state: No attribution of any kind. Confirmed as a required feature.
Attribution Model Engine
Priority: 🔴 Table-stakes · Competitors: HubSpot, Ruler Analytics, Dreamdata, Triple Whale (eCommerce)
Implement all standard models in parallel (each computed from the same event data, so the marketer can compare):
| Model | Logic | Best for |
|---|---|---|
| First Touch | 100% credit to first touchpoint | Brand awareness measurement |
| Last Touch | 100% credit to final touchpoint | Closing channel measurement |
| Linear | Equal credit across all touchpoints | Balanced view |
| Time Decay | More credit to touchpoints near conversion | Nurture sequence valuation |
| Position-Based (U-shaped) | 40% first + 40% last + 20% middle | Both awareness and closing |
| Data-Driven (ML) | ML assigns credit by statistical contribution | Most accurate; requires ≥1K conversions |
Data sources to connect: Google Ads, Meta Ads, LinkedIn Ads, email campaigns, organic search (via GSC), social posts, WhatsApp campaigns, direct/referral (via UTM tags).
Revenue Attribution (not just Conversion Attribution)
Priority: 🔴 Table-stakes · Competitors: Ruler Analytics, Dreamdata
Connect every touchpoint to actual deal/order revenue — not just “a conversion happened”. For eCommerce: order value per channel. For B2B: closed deal ARR per channel. Transform reporting from lead counts to £/₹ values. Requires CRM deal + eCommerce order sync.
Customer Journey Visualisation
Priority: 🟡 Differentiator · Competitors: HubSpot, Dreamdata
Interactive timeline of every touchpoint a contact had before converting. Filter by channel, campaign, content type. Answer: “Which content pieces appear most often in the paths of high-value customers?”
View-Through vs. Click-Through Attribution
Priority: 🟡 Differentiator · Competitors: Triple Whale, Northbeam
Separate attribution windows for ad impressions (view-through, 1–7 days) vs. ad clicks (click-through, 7–30 days). Critical for measuring brand awareness campaigns where no direct click precedes conversion.
Incrementality Testing
Priority: 🟢 Expansion · Competitors: Triple Whale, Northbeam, Rockerbox
Holdout experiments that measure whether a marketing channel genuinely drives incremental conversions vs. conversions that would have happened anyway. Uses geo-split or randomised holdout groups. Answers “Did this channel actually cause the sale?” — the only true measure of causation vs. correlation.
eCommerce-Specific Attribution (DTC Mode)
Priority: 🟡 Differentiator · Competitors: Triple Whale, Northbeam
Shopify-native attribution dashboard: ROAS per channel, new customer acquisition cost (nCAC), repeat purchase rate by acquisition channel, contribution margin on automated revenue. Weekly retraining of the data-driven model as new order data arrives.
17.25 Conversion Rate Optimisation (CRO) Suite
Current state: No A/B testing, no heatmaps, no session recordings, no funnel analysis anywhere on the platform.
A/B Testing Engine
Priority: 🔴 Table-stakes · Competitors: VWO, Optimizely, HubSpot
Test email subject lines, send times, body variants, CTA copy, landing page headlines, and full automation paths. Statistical significance tracking (sequential likelihood ratio test — no peeking problem). Auto-winner selection when significance is reached. A/B test entire automation paths (path-level split testing). Sample size calculator with MDE (Minimum Detectable Effect) estimator.
Multivariate Testing (MVT)
Priority: 🟡 Differentiator · Competitors: VWO, Optimizely
Test combinations of multiple page elements simultaneously (headline × hero image × CTA button). Interaction analysis — understand how elements affect each other, not just in isolation. More efficient than running sequential A/B tests.
Heatmaps, Session Recordings, Funnel Analysis
Priority: 🟡 Differentiator · Competitors: Hotjar, Microsoft Clarity (free), Crazy Egg
Click/scroll/hover heatmaps on AI-generated landing pages. Session replay with rage-click and dead-click detection. Funnel analysis showing drop-off stages in multi-step flows (landing page → form → checkout). Visit segmentation (separate heatmaps by traffic source or device). Directly informs quality scoring of agent-generated landing pages.
AI-Powered Test Recommendation
Priority: 🟡 Differentiator · Competitors: VWO, Optimizely
Auto-suggest A/B tests based on heatmap data and session recordings: “30% of users drop off at the pricing section — test moving it below the testimonials.” Over 30% of 2024 CRO tool releases included AI-generated experiment suggestions.
On-Page Personalisation Engine
Priority: 🟡 Differentiator · Competitors: HubSpot, Optimizely, VWO
Dynamically adapt content on client landing pages based on visitor attributes: returning vs. new, traffic source (Google Ads → show ad-specific headline), geo (India → show INR pricing), device, or CRM segment (existing customer → show upsell vs. acquisition messaging).
17.26 WhatsApp Commerce & Marketing (India + Global)
Priority upgrade: Based on confirmed India + Global + eCommerce targets, WhatsApp features are upgraded to 🔴 Table-stakes across the board.
Current state: packages/providers/whatsapp/src/whatsapp.ts is built but nothing is wired. This is the single largest competitive gap for the Indian market.
⚠️ Provider recommendation: Going direct via Meta’s Cloud API takes 4–8 weeks for WABA (WhatsApp Business Account) approval. For faster time-to-market in India, use a BSP (Business Solution Provider): Gupshup, Kaleyra, or Interakt. BSPs have pre-approved access, pre-built festival template libraries, INR billing, and India-based support — compressing launch from months to days. Design
packages/providers/whatsapp/to abstract over the underlying BSP so the application code doesn’t change if the provider is swapped. Interakt is the most SMB/eCommerce-aligned; Kaleyra is better for enterprise volume; Gupshup has the broadest India coverage.
WhatsApp Product Catalog & Commerce
Priority: 🔴 Table-stakes · Competitors: WATI, Zoko, Interakt, WebEngage
Digital storefront within WhatsApp showing product listings, collections, pricing, real-time inventory. WhatsApp Cart: customers select multiple items, review cart, send order in a single message. Sync catalog from Shopify/WooCommerce in real-time. WhatsApp Pay / UPI payment collection within conversation thread. Order confirmation, shipment tracking, and delivery alerts all within the same conversation.
WhatsApp Broadcast Campaigns
Priority: 🔴 Table-stakes · Competitors: WATI, Zoko, Kaleyra
Segment-targeted broadcast messages to opted-in contacts. Meta-approved template message management (HSM templates). Multimedia support: images, videos, PDFs, product carousels. Delivery + read rate analytics. Festival season campaign templates (Diwali, Navratri, Holi, Eid — pre-built, compliant with Meta policies).
WhatsApp Automation Flows
Priority: 🔴 Table-stakes · Competitors: WATI, Interakt, Gallabox
Automated sequences: welcome flow on first opt-in, abandoned cart recovery (WhatsApp as a channel alongside email), post-purchase sequence, re-engagement, subscription renewal reminder. Interactive buttons (Quick Reply, Call-to-Action) and WhatsApp Flows (interactive multi-step forms within WhatsApp). NLP-based FAQ auto-responses.
WhatsApp AI Chatbot for Lead Qualification
Priority: 🟡 Differentiator · Competitors: WATI, Interakt, Landbot
AI chatbot that qualifies inbound WhatsApp enquiries: collects name/contact/requirement, scores against ICP criteria, routes to human agent or directly creates a Lead record. Uses the existing AI Chat infrastructure — surface it as a WhatsApp channel.
UPI Payment Links in WhatsApp & Email
Priority: 🟡 Differentiator · India-specific
Embed UPI payment links directly in WhatsApp messages and email campaigns. One-tap payment collection for service businesses (clinics, salons, coaching, events). Integrates with Razorpay/Paytm payment link APIs.
17.27 India eCommerce-Specific Features
Cash on Delivery (COD) Order Tracking & Marketing
Priority: 🔴 Table-stakes for India · Unique to India
COD is the dominant payment method for Indian eCommerce (40–60% of orders depending on category). Specific flows needed: COD order confirmation SMS/WhatsApp, delivery attempt notification, COD-to-prepaid conversion campaign (“Pay online and get 5% off”), return-of-undelivered COD flow. Integrate with Shiprocket for real-time delivery status.
Festival Season Campaign Engine
Priority: 🔴 Table-stakes for India · Unique to India
Pre-built campaign templates and automation flows for: Diwali (Oct–Nov), Navratri / Durga Puja (Sept–Oct), Holi (March), Eid, Christmas, Republic Day / Independence Day sales, Big Billion Day / Great Indian Festival countdowns. Calendar-aware scheduler that flags upcoming festivals and suggests campaign creation 2–3 weeks ahead.
BNPL Integration (ZestMoney, LazyPay, Simpl)
Priority: 🟡 Differentiator · India-specific
Surface Buy Now Pay Later options in checkout-abandonment campaigns. “Did you know you can pay in 3 EMIs with LazyPay?” messaging. Track BNPL-enabled orders separately in attribution. BNPL is the fastest-growing payment method in India (projected 9% of eCommerce by 2024).
Justdial & IndiaMart Lead Import
Priority: 🟡 Differentiator · India-specific
Auto-import leads from Justdial and IndiaMart listings into the Lead pipeline with source tagging (justdial / indiamart). Both are primary inbound lead sources for B2B and local service SMBs in India. Justdial alone generates millions of monthly business enquiries.
Regional Language Content Generation
Priority: 🟡 Differentiator · India + Global
Generate marketing content (emails, WhatsApp messages, social posts, ad copy) in Hindi, Tamil, Telugu, Marathi, Kannada (India), plus Arabic (Gulf) and other regional languages. Build on the multi-language feature (§15.42). Festival campaigns in regional languages have significantly higher engagement in Tier 2/3 cities.
Tier 2/3 City Targeting & Vernacular SEO
Priority: 🟡 Differentiator · India-specific
Keyword research and content generation for regional search terms (non-English). Location-targeting in campaigns for Tier 2/3 cities (Jaipur, Surat, Coimbatore, etc.). Meesho-style value messaging for price-sensitive segments. Vernacular SEO keyword data via DataForSEO (supports 190+ countries/regions).
DPDP Act Compliance (India Data Protection)
Priority: 🔴 Table-stakes · All India-deployed clients
India’s Digital Personal Data Protection Act (2023) requirements: consent capture and storage per contact, purpose-limitation enforcement (only use data for stated purpose), data deletion workflow on user request (30-day SLA), data breach notification within 72 hours, data localisation option (India-resident data stays on India servers). Non-compliance exposes platform and clients to penalties.
GDPR Compliance (Global Clients)
Priority: 🔴 Table-stakes · All global clients
EU/UK GDPR requirements: lawful basis documentation for data processing, right to erasure (delete contact + all their data on request), data portability (export contact data as CSV/JSON), consent management for email/SMS opt-ins, Data Processing Agreement (DPA) template for B2B clients.
Summary: Competitive Gaps by Priority (Updated)
| Priority | Count | Key Areas |
|---|---|---|
| 🔴 Table-stakes | 32 | Automation builder, A/B testing, rank tracking (DataForSEO¹), keyword gap, technical SEO UI, Shopify/WooCommerce integration, abandoned cart, post-purchase flow, welcome series, win-back flow, product feed management, Google Shopping, RFM + CLV, unified customer profiles, first-party event tracking, segmentation builder, attribution engine, revenue attribution, WhatsApp campaigns + flows + catalog (via BSP²), COD tracking, festival campaigns, DPDP, GDPR, review collection, deal pipeline, CRM integrations (Zoho), UTM management, social listening, automated client reports, multi-channel dashboard, form builder |
| 🟡 Differentiator | 38 | Predictive lead scoring, churn risk, AI upsell engine, dynamic retargeting, back-in-stock/price-drop flows, loyalty program, referral program, subscription dunning, UGC + shoppable gallery, Performance Max, Surfer-style content editor, internal linking, local SEO + citations, schema markup, AI search visibility, competitor traffic estimation, customer journey viz, view-through attribution, eCommerce attribution dashboard, CRO heatmaps, session recordings, A/B MVT, personalisation engine, WhatsApp chatbot, BNPL flows, Justdial/IndiaMart import, regional language content, influencer management, employee advocacy, workspace isolation, trend forecasting, budget pacing, local rank heatmap, SERP feature tracking, identity resolution, NPS surveys, chatbot lead capture, visual grid view, ABM³ |
| 🟢 Expansion | 10 | Incrementality testing, gamification/spin-to-win, product analytics, programmatic SEO, Pinterest, RCS messaging, FOMO widgets, YouTube content, webinar integration, Bing Webmaster |
Footnotes:
- DataForSEO¹ — Verify India vernacular keyword quality before committing. If insufficient, use a hybrid approach: DataForSEO (global) + Semrush API (India regional). See §17.18 for details.
- WhatsApp BSP² — Use Gupshup, Kaleyra, or Interakt (not direct Meta Cloud API) for faster WABA approval and pre-built India festival templates. See §17.26 for details.
- ABM³ — Priority upgrades to 🔴 Table-stakes if B2B agencies are confirmed as a target segment. See §17.6 for the full ABM feature set.
Sources: HubSpot · Sprout Social · Semrush · Ahrefs · DataForSEO · AgencyAnalytics · Planable · ActiveCampaign · Klaviyo · Omnisend · Yotpo · Hotjar · CoSchedule · BrightLocal · WATI · Zoko · Clearscope · Surfer SEO · Triple Whale · Northbeam · Rockerbox · Ruler Analytics · VWO · Optimizely · Recharge · Smile.io · India eCommerce analysis (Flipkart/Meesho/Dukaan/Shiprocket) · Indian payment gateway research · April 2026