{"id":50554606,"url":"https://github.com/Deodat-Lawson/LaunchStack","last_synced_at":"2026-06-21T01:00:43.880Z","repository":{"id":270636867,"uuid":"910960179","full_name":"Deodat-Lawson/LaunchStack","owner":"Deodat-Lawson","description":"AI-powered StartUp Accelerator Engine built with Next.js, LangChain, PostgreSQL + pgvector. Upload, organize, and chat with documents. Includes predictive missing-document detection, role-based workflows, and page-level insight extraction.","archived":false,"fork":false,"pushed_at":"2026-05-01T03:36:28.000Z","size":66703,"stargazers_count":807,"open_issues_count":4,"forks_count":114,"subscribers_count":66,"default_branch":"main","last_synced_at":"2026-05-01T05:15:23.546Z","etag":null,"topics":["claude","docker","knowlege-graph","langchain","mcp","n8n","neo4j","nextjs","ollama","open-source","openai","pgvector","postgresql","rag","self-hosted","typescript","workflow-automation"],"latest_commit_sha":null,"homepage":"https://www.pdrai.online/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Deodat-Lawson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-01T22:56:11.000Z","updated_at":"2026-05-01T03:36:37.000Z","dependencies_parsed_at":"2025-12-17T12:03:33.379Z","dependency_job_id":"9801dd89-fda8-41ef-877d-ddd8aa09fff4","html_url":"https://github.com/Deodat-Lawson/LaunchStack","commit_stats":null,"previous_names":["deodat-lawson/pdr_ai_v2","deodat-lawson/launchstack"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Deodat-Lawson/LaunchStack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deodat-Lawson%2FLaunchStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deodat-Lawson%2FLaunchStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deodat-Lawson%2FLaunchStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deodat-Lawson%2FLaunchStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Deodat-Lawson","download_url":"https://codeload.github.com/Deodat-Lawson/LaunchStack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deodat-Lawson%2FLaunchStack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34590216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","docker","knowlege-graph","langchain","mcp","n8n","neo4j","nextjs","ollama","open-source","openai","pgvector","postgresql","rag","self-hosted","typescript","workflow-automation"],"created_at":"2026-06-04T06:00:24.656Z","updated_at":"2026-06-21T01:00:43.846Z","avatar_url":"https://github.com/Deodat-Lawson.png","language":"TypeScript","funding_links":[],"categories":["6 つのトラック"],"sub_categories":["Tier 2：YC / Startup Accelerator"],"readme":"# Launchstack\n\n**The TypeScript engine for AI-native Next.js apps.** Ingestion, OCR, RAG, knowledge graph, LLM abstractions, and background jobs — ports-based, framework-agnostic, and designed to be wired into the Next.js app you already have.\n\n[![npm](https://img.shields.io/npm/v/@launchstack/core.svg)](https://www.npmjs.com/package/@launchstack/core)\n[![license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![CI](https://github.com/launchstack/launchstack/actions/workflows/CI.yml/badge.svg)](https://github.com/launchstack/launchstack/actions/workflows/CI.yml)\n[![types](https://img.shields.io/badge/types-TypeScript-blue.svg)](https://www.typescriptlang.org/)\n\n[Quickstart](#quickstart) · [Packages](#whats-in-the-box) · [Architecture](#architecture) · [Reference app](#reference-app) · [Contributing](CONTRIBUTING.md) · [Discussions](https://github.com/launchstack/launchstack/discussions)\n\n---\n\n## Quickstart\n\n```bash\npnpm add @launchstack/core\n```\n\n```ts\nimport { createEngine } from \"@launchstack/core\";\n\nconst engine = createEngine({\n  db: { url: process.env.DATABASE_URL! },\n  llm: { openai: { apiKey: process.env.OPENAI_API_KEY! } },\n  embeddings: { indexName: \"openai-3-small\" },\n  ocr: { defaultProvider: \"DOCLING\" },\n  providers: {},\n  storage: myStoragePort,        // you implement StoragePort (S3, local, etc.)\n  jobs: { dispatcher: inngest }, // or any JobDispatcherPort\n});\n\n// Use any subsystem\nconst { db } = engine;\nconst results = await engine.rag?.port.search({ query: \"What's in my docs?\" });\nawait engine.close(); // graceful shutdown\n```\n\nCore reads **zero environment variables** at runtime — you supply the config, which makes the engine portable across Next.js, CLIs, workers, and MCP servers.\n\n---\n\n## What's in the box\n\n| Package | Status | What it does |\n|---|---|---|\n| [`@launchstack/core`](packages/core) | **published** | The engine. DB, LLM, embeddings, OCR, RAG, graph, crypto, guardrails, ingestion. Framework-agnostic. |\n| [`@launchstack/features/*`](packages/features) | internal | Vertical features built on top of core: `adeu`, `client-prospector`, `company-metadata`, `doc-ingestion`, `legal-templates`, `marketing-pipeline`, `repo-explainer`, `trend-search`, `voice` |\n| [`@launchstack/features/mcp`](packages/features/src/mcp) *(planned)* | roadmap | MCP server factory — expose core capabilities as tools |\n| [`@launchstack/features/workflow-generation`](packages/features/src/workflow-generation) *(planned)* | roadmap | LLM-authored workflow DSL |\n| [`@launchstack/features/rules-extraction`](packages/features/src/rules-extraction) *(planned)* | roadmap | Regulatory rule extraction |\n| [`@launchstack/features/connectors`](packages/features/src/connectors) *(planned)* | roadmap | Third-party connector integrations |\n| [`apps/web`](apps/web) | — | The Next.js reference app — how we wire everything together |\n\nFeatures import core via subpath imports (`@launchstack/core/db`, `@launchstack/core/ocr/processor`, etc.). The reference app imports features and supplies the ports (storage, jobs, credits, RAG) that connect to real infrastructure.\n\n---\n\n## Architecture\n\nCore exposes four **ports** that the host wires up. Features depend only on these ports; they never reach into the app or the framework.\n\n```\n          ┌───────────── apps/web (Next.js host) ────────────┐\n          │  env.ts  →  engine.ts  →  createEngine(config)   │\n          │              │                                   │\n          │              └─ wires: StoragePort (S3)          │\n          │                        JobDispatcherPort (Inngest)\n          │                        CreditsPort (DB)          │\n          │                        RagPort (hybrid search)   │\n          └──────────────────┬────────────────────────────────┘\n                             │\n          ┌──────────────────▼────────────────────┐\n          │   @launchstack/features/*             │\n          │   (adeu, marketing-pipeline, ...)     │\n          │   import via @launchstack/core/\u003csub\u003e  │\n          └──────────────────┬────────────────────┘\n                             │\n          ┌──────────────────▼────────────────────┐\n          │   @launchstack/core                   │\n          │   db · llm · embeddings · ocr · rag · │\n          │   graph · guardrails · ingestion      │\n          └───────────────────────────────────────┘\n```\n\n- **Core** reads no env, knows no framework. All config comes through `CoreConfig`.\n- **Features** can read `process.env`, but cannot import from the host app.\n- **Host** owns env, auth, routing, and implements the ports.\n- ESLint enforces these boundaries — see [`eslint.config.js`](eslint.config.js).\n\n---\n\n## Reference app\n\n[`apps/web`](apps/web) is a production-grade Next.js app built on the engine. It demonstrates:\n\n- Clerk employer/employee auth with role-aware middleware\n- Document upload + optional OCR (Marker, Docling, Azure, Landing.AI, Datalab)\n- PostgreSQL + pgvector semantic retrieval for RAG\n- AI chat with agent guardrails (PII filter, grounding, confidence gate)\n- Predictive document analysis across 8 document types (contract, financial, technical, compliance, educational, HR, research, general)\n- Marketing pipeline for Reddit, X, LinkedIn, Bluesky\n- Inngest-backed background jobs\n- Optional LangSmith tracing\n\n**Run it locally:**\n\n```bash\ngit clone https://github.com/launchstack/launchstack.git\ncd launchstack\npnpm install\ncp .env.example .env          # fill in required keys\npnpm db:push                  # sync Drizzle schema\npnpm dev                      # Next.js + Inngest on :3000 and :8288\n```\n\nOr spin the full stack (Postgres + SeaweedFS + sidecars) with Docker:\n\n```bash\n# macOS / Linux\nmake up          # lite (~400MB RAM)\nmake up-ocr      # with Docling for Office docs (~1.2GB RAM)\n```\n\n```powershell\n# Windows (PowerShell or cmd — requires Docker Desktop)\ndocker compose --env-file .env up --build                                                      # lite (~400MB RAM)\ndocker compose --env-file .env --profile ocr -f docker-compose.yml -f docker-compose.ocr.yml up --build -d   # with Docling (~1.2GB RAM)\n```\n\n\u003e Or install `make` on Windows via [Chocolatey](https://chocolatey.org/) (`choco install make`) or [Scoop](https://scoop.sh/) (`scoop install make`) to use the `make up` shortcuts.\n\n**Stop the stack:**\n\n```bash\n# macOS / Linux\nmake down         # stop containers (keeps volumes — DB + S3 data persists)\nmake down-clean   # stop + wipe volumes (fresh DB on next up)\n```\n\n```powershell\n# Windows\ndocker compose --env-file .env down                     # stop containers (keeps volumes)\ndocker compose --env-file .env down -v --remove-orphans # stop + wipe volumes (fresh DB)\n```\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full dev guide.\n\n### Supported document sources\n\nThe ingestion pipeline reads exports from common tools without requiring OAuth — just drop the files in:\n\n| Source | Export | Adapter |\n|---|---|---|\n| Notion | Markdown \u0026 CSV / HTML | TextAdapter, HtmlAdapter |\n| Google Docs / Sheets | DOCX / CSV / XLSX | DocxAdapter, SpreadsheetAdapter |\n| Google Drive | Takeout ZIP | DocxAdapter |\n| Slack | Workspace export JSON | JsonExportAdapter |\n| GitHub | Code ZIP, `gh issue/pr list --json` | TextAdapter, JsonExportAdapter |\n\nPlus first-class PDF, DOCX, PPTX, XLSX, MD, HTML, TXT, and image adapters.\n\n---\n\n## Using core standalone\n\n`@launchstack/core` is a plain TypeScript library published to npm — **you don't need the monorepo to use it**. Drop it into any Node-20+ project that has a Postgres database and implement a `StoragePort`. The reference app is one way to wire it up; it isn't the only way.\n\nSee [`packages/core/README.md`](packages/core/README.md) for the full API surface and port interfaces.\n\n---\n\n## Community \u0026 support\n\n- **Discussions** — [github.com/launchstack/launchstack/discussions](https://github.com/launchstack/launchstack/discussions)\n- **Issues** — [github.com/launchstack/launchstack/issues](https://github.com/launchstack/launchstack/issues)\n- **Security** — email per [SECURITY.md](SECURITY.md)\n\n---\n\n## Contributing\n\nWe welcome PRs — start with [CONTRIBUTING.md](CONTRIBUTING.md). A few things to know up front:\n\n- One issue per PR\n- Changes to `packages/core/` need a [Changeset](https://github.com/changesets/changesets) (`pnpm changeset`)\n- ESLint enforces core/features/host import boundaries; don't work around them\n\n## License\n\nLicensed under the [Apache License 2.0](LICENSE). By contributing you agree your contributions will be released under the same license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeodat-Lawson%2FLaunchStack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDeodat-Lawson%2FLaunchStack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeodat-Lawson%2FLaunchStack/lists"}