Instruction file imported from maekass/Lacuna (
.cursor/rules/lacuna.mdc). Copyright stays with the author.
Lacuna — women's health M&A intelligence platform
Educational demo visualizing verified acquisition data, network relationships, health equity focus areas, and descriptive analytics. Honest provenance — not live institutional data. Product on Vercel only; Framer (framer.com) is marketing/narrative with CTA to the app — see docs/SITE_ARCHITECTURE.md.
Stack
Next.js 16, React 19, TypeScript (strict: true), Tailwind CSS v4, D3.js v7, Framer Motion. Server LLM: Vercel AI Gateway (src/lib/ai/inference.ts). No TensorFlow in the app bundle.
Data
Single source of truth: getVerifiedDataset() from src/data/dataset.verified.json.
Three arrays: companies (75), acquirers (35), acquisitions (58 deals).
Every deal cites public sources (SEC filings, press releases, investor relations).
Future DB toggle: LACUNA_DATA_MODE=db in src/lib/data/datasetProvider.ts. Ops: docs/INFRASTRUCTURE.md, GET /api/health, docker compose.
Paths
@/* → src/*. PascalCase in src/components/. Logic in src/lib/. API in src/app/api/.
Do
fetch+NextResponse; verified dataset as source of truth- Fix Deno lint (
require-await,no-unused-vars) - Read Next.js 16 docs in
node_modules/next/dist/docs/before code changes - Functional React + hooks;
interfacefor shared shapes; JSDoc on exported lib fns
Don't
- Synthetic
maDealsdata or invented TAM/SAM/sector-multiple fallbacks in UI - Keyword-derived risk scores presented as measured data
axios/styled-jsx/ Postgres unless askedasyncwithoutawait(Deno CI fails)anytype; components over ~300 lines
Full rules: AGENTS.md