# System Overview

> What Numu Angels is and how its major parts fit together.

_Verified against the codebase on 2026-07-23._

---

## What it is

**Numu Angels** is a Laravel 12 platform for an angel-investment community. It serves **two subject audiences — Investors and Startups** — through public onboarding, a back-office admin dashboard, and an AI/automation layer. The back office is kept in sync with a **Monday.com** CRM, and scheduling runs through **Microsoft** services.

## Major components

| Component | Role |
|-----------|------|
| **Admin dashboard** (`/admin/*`, Blade) | The primary operator surface: manage investors, startups, meetings, committees, demos, notifications, labels, groups, sync. |
| **Public portals** | Signup (investor/startup), OTP-gated self-service booking, committee/demo attendance portals, initial due-diligence upload. |
| **REST + PWA API** | `/api/v1/*`, plus a read-only "Numu Executive PWA" (`/app/api/*`, `/api/pwa/*`). |
| **MCP host** (native PHP) | Lets Claude.ai connect as an MCP client over OAuth 2.1 / Sanctum. Feature-gated by `ai.enabled`. |
| **Managed Agent Runtime** | Startup-analysis agents that produce proposals routed through policy → approval → execution inside Numu. |
| **Monday.com sync** | Two-way-ish CRM sync (pull items → map → upsert; inbound webhooks). |
| **Microsoft Graph** | Bookings (meeting scheduling) and Teams Webinars (demo days) — two separate Azure apps. |
| **Notification engine** | Email / SMS / WhatsApp / push / in-app across three sources. |

## Actors

- **Admin** — the confirmed operational actor (Sanctum tokens + Spatie roles/permissions, `admin` guard). Creators of committees, demos, notifications.
- **Investor / Startup** — subject records (not authenticatable users); interact via public portals with OTP.
- **AI clients / agents** — Claude via MCP; managed agents via the runtime.
- **User** model — appears to be Laravel default/legacy. **Usage status: Unknown - requires confirmation.**

## Deployment status caveat

The AI/MCP and Managed Agent layers are **implemented in code but their production/deployment status must not be assumed** (see [`01-architecture/ai-architecture.md`](../01-architecture/ai-architecture.md)). MCP endpoints return 404 when `ai.enabled` is false.
