Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Pilot - Instagram Automation Platform

Pilot — Turn Instagram DMs Into Qualified Leads

StatusGitHub IssuesGitHub Pull RequestsLicenseApp - React DoctorWeb - React Doctor


AI-powered Instagram sales system for lead management and revenue operations - built for creators, entrepreneurs, and social teams who want conversions, not brittle flow-builder bots.

Supported by teams building alongside us.

Greptile
Free Greptile license through their open source program, with setup support.
Supermemory
Startup Program support: $1,000 in Pro credits for 6 months, product team access, early feature access, and collaboration opportunities.

Table of Contents

About

Pilot is an Instagram automation and deal management platform designed to help creators, entrepreneurs, small businesses, and social media managers turn Instagram conversations into qualified pipeline.

Pilot is positioned as a sales system, not a bot:

  • Intent-aware conversation handling over rigid decision trees
  • CRM depth (lead score, stage, sentiment, tags, notes, follow-up context)
  • Human Response Needed (HRN) guardrails for risky threads
  • Open source and self-hostable for data and platform control

The AI-powered Sidekick supports lead qualification, response generation, and next-step recommendations while preserving human oversight where needed.

Pilot vs ManyChat

Common ManyChat pain points

  • Unreliable follow-to-DM behavior and delayed sends
  • Shadow-ban/account-risk anxiety from aggressive automation patterns
  • Per-contact pricing shock as contact count scales
  • Flow-builder complexity for simple use cases

Head-to-head comparison

DimensionManyChatPilotAdvantage
AI IntelligenceBasic rule-based flows + AI add-on ($)Native AI-first with intent detection, sentiment analysis, lead scoringPilot
Conversation HandlingOne reply per trigger patternSidekick tracks conversation context and tonePilot
Lead ManagementBasic contact listFull contact CRM with scoring, tags, stages, sentimentPilot
Human HandoffMostly manualHRN system with classifier + risk heuristicsPilot
Pricing ModelPer-contact scalingOpen-source, self-hostable, predictable model directionPilot
Shadow Ban ProtectionManual mitigationGuardrails-first automation designPilot
Setup ComplexityVisual flow builderTrigger + AI handlingPilot
Open SourceClosed, vendor lock-inFully open-source and forkablePilot
Multi-Step SequencesSupportedNot yet builtManyChat
Visual Flow BuilderSupportedNot yet builtManyChat
Multi-ChannelInstagram + FB + WhatsApp + SMSInstagram-first todayManyChat
Integrations50+ integrationsEarly-stage integration surfaceManyChat

Full competitive breakdown: competitive-analysis.md

Architecture

flowchart LR
U["User: Web App"] --> A["Auth & Access"]
A --> O["Onboarding"]
O --> W["Workspace"]
W --> S1["Sidekick AI Chat"] & S2["Contacts CRM"] & S3["Automations"] & S4["Settings & Instagram Connection"] & S5["Billing & Plans"]
IG["Instagram Platform"] --> WH["Webhook Ingestion"]
WH --> E["Decision Engine"]
E -- Trigger matched --> S3
E -- No trigger / AI reply --> S1
E -- Risky thread --> HRN["Human Response Needed Queue"]
E --> OUT["Instagram Reply APIs"]
S1 --> AI["Gemini AI Layer"]
S2 --> DB[("Postgres + Drizzle + RLS")]
S3 --> DB
S4 --> DB
S5 --> POLAR["Polar Billing"]
AI --> DB
JOBS["Background Jobs: Inngest"] --> S2 & IG & DB
OBS["Monitoring & Analytics"] --- W & WH & JOBS
Loading

Monorepo Setup

This repository uses pnpm workspaces + Turborepo.

Structure

  • apps/app -> Main product app
  • apps/web -> Marketing website and public waitlist
  • packages/ui -> Shared shadcn UI + Tailwind layer
  • packages/db -> Shared Drizzle schema/client/migrations
  • packages/instagram -> Shared Instagram Graph API client, token refresh, retries, webhook helpers
  • packages/core -> Shared product brain (automation logic, sidekick logic, contact workflows)
  • packages/config -> Shared eslint/postcss/tsconfig
  • packages/types -> Shared domain types

Install

pnpm install

App-specific docs

Turborepo Commands

Run from repo root:

# run both apps/dev tasks via turbo graph
pnpm dev
# targeted dev
pnpm dev:app
pnpm dev:web
# run builds with turbo graph + cache
pnpm build
# targeted builds
pnpm build:app
pnpm build:web
# changed-only graph build
pnpm build:affected
# type checks
pnpm check-types

Turbo local cache is stored in .turbo/.

For remote cache in CI/team machines, set:

TURBO_TEAM=...
TURBO_TOKEN=...

Roadmap

Roadmap is tracked in ROADMAP.md.

Documentation

Contributing

All code setup, development workflow, testing, and deployment notes live in CONTRIBUTING.md.

License

This project is licensed under the GNU Affero General Public License v3.0.

See LICENSE for the full text.

Authors

  • ArjunCodess - Project development and maintenance

Acknowledgements

  • Instagram for providing the API that powers social integrations
  • Vercel for the deployment platform and AI SDK
  • Neon for serverless PostgreSQL hosting
  • shadcn/ui and Radix UI for accessible UI components
  • Drizzle Team for the ORM toolkit
  • Open Source Community for the ecosystem of libraries and tools

Pilot - Transforming Instagram interactions into business opportunities

About

AI-powered Instagram automation for lead management and sales — built for creators, entrepreneurs, and social media managers to automate responses, manage contacts, and streamline deals.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages