{
  "reviewed": "2026-08-23",
  "source": "https://compliance.freedomlabs.in/playbook/04-app-register.md",
  "apps": [
    {
      "id": "music-gen",
      "name": "Music Gen",
      "tier": 5,
      "status": "development-prototype",
      "path": "RM Portfolio/Music_Gen",
      "url": "https://experiment.freedomlabs.in",
      "regions": [
        "operator development use; public-launch regions not approved"
      ],
      "data_classes": [
        "P0 user-supplied Google API key (page memory only)",
        "P1 creative prompts, lyrics and music preferences",
        "P1 optional browser projects: name, creative setup, AI text drafts, model, random ID, revisions, timestamps and storage-notice version in IndexedDB until user deletion or browser eviction; explicit Save only; no key, consent or audio",
        "P2 generated audio (page memory only; voluntary download)",
        "session consent record (page memory only)"
      ],
      "modules": [
        "M6",
        "M16"
      ],
      "regimes": [
        "Google Gemini API terms",
        "copyright and synthetic-media disclosure",
        "DPDP and SPDI",
        "regional privacy and consumer rules before public launch"
      ],
      "ai": "Operator-requested Google Gemini/Lyria BYOK exception for this development prototype, 2026-09-14: user explicitly requested enabling the disabled Gemini integration. User chooses and pays for Google; no RM-managed key or other provider fallback. Creative text and settings go directly from the browser to Google only after session consent; interactions use store=false. Local synth remains a separately labelled option. This records development-use authorisation, not public-launch or legal approval.",
      "red_flags": [
        "public Vite development hostname; not production-approved",
        "browser extensions can access page memory and IndexedDB; project storage is not app-encrypted",
        "Google model access, billing and regional availability are project-dependent",
        "store=false is not a promise of zero provider retention",
        "browser projects are origin/profile-specific, not cloud backups; prices are dated Google USD estimates, not invoices"
      ],
      "must_do": [
        "unchecked consent before key verification or content egress",
        "18+ and paid-project/eligible-region acknowledgement",
        "no sensitive or third-party confidential material",
        "never persist or log the key; disconnect clears it and aborts requests",
        "label AI text and audio; no voice cloning or copied copyrighted lyrics",
        "test cancellation, error handling, no egress before consent, and stale-response protection",
        "complete production hosting, privacy, vendor terms, transfer and public-launch review before external users"
      ]
    },
    {
      "id": "rm-health",
      "name": "RM Health (ex FitterMe)",
      "tier": 1,
      "status": "pilot",
      "path": "RM External/FitterMe",
      "url": "https://health.freedomlabs.in",
      "regions": [
        "IN",
        "US",
        "UK"
      ],
      "data_classes": [
        "P0 health",
        "P0 food photos",
        "P1 identity"
      ],
      "modules": [
        "M1",
        "M11",
        "M16"
      ],
      "regimes": [
        "DPDP",
        "SPDI",
        "UK GDPR Art 9",
        "FTC Act",
        "FTC HBNR",
        "WA MHMDA",
        "CA CMIA",
        "CalOPPA",
        "Apple HealthKit",
        "Google Health Connect",
        "DMR Act",
        "Colorado AI Act"
      ],
      "ai": "local ollama gemma4:12b",
      "red_flags": [
        "coach not a licensed dietitian",
        "sqlite single worker",
        "mobile store forms pending"
      ],
      "must_do": [
        "per-stream health consent",
        "deterministic ED and red-flag guardrails",
        "consumer health data privacy policy",
        "HealthKit and Health Connect declarations",
        "no analytics SDKs",
        "DPIA",
        "export and delete in app",
        "18+ gate"
      ]
    },
    {
      "id": "rm-pharma",
      "name": "RM Pharma screening assistant + DuoFlow Dx",
      "tier": 1,
      "status": "investigational",
      "path": "RM Pharma; DuoFlow",
      "url": "https://healthtest.freedomlabs.in; https://pharma.freedomlabs.in",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P0 symptoms",
        "P0 photos (memory only)"
      ],
      "modules": [
        "M1",
        "M1b",
        "M13"
      ],
      "regimes": [
        "Medical Devices Rules 2017",
        "CDSCO",
        "NDCT Rules 2019",
        "FDA",
        "UK MDR",
        "EU IVDR",
        "Telemedicine Guidelines 2020",
        "DMR Act",
        "DPDP",
        "Patents Act s3(i)"
      ],
      "ai": "local ollama gemma4:12b multimodal",
      "red_flags": [
        "cartridge-photo interpretation is device functionality without licence",
        "public URL"
      ],
      "must_do": [
        "investigational banner",
        "no clinical claims",
        "ethics approval for evaluations",
        "photos memory-only test",
        "AI self-identification all languages",
        "ISO 13485 and IEC 62304 file"
      ]
    },
    {
      "id": "tulip",
      "name": "CampusIndex (Tulip engine)",
      "tier": 1,
      "status": "pilot-ready",
      "path": "RM Portfolio/Tulip",
      "url": "https://home.campusindex.in",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P0 children",
        "P0 location",
        "P0 staff financial identifiers",
        "P1 staff",
        "payments",
        "visitor log"
      ],
      "modules": [
        "M2",
        "M4",
        "M11",
        "M14"
      ],
      "regimes": [
        "DPDP children Rule 10",
        "Fourth Schedule Part A",
        "IT Rules",
        "RBI PA Directions",
        "GST",
        "E-Commerce Rules 2020",
        "Legal Metrology",
        "FSSAI",
        "TRAI DLT",
        "WhatsApp policy",
        "POCSO",
        "Aadhaar limits",
        "ASCI",
        "EPF and ESI Acts",
        "state professional tax",
        "Income-tax Act (PAN, TDS)"
      ],
      "ai": "local",
      "red_flags": [
        "payroll statutory rates need the school auditor's annual check",
        "analytics must never expose another child's mark"
      ],
      "must_do": [
        "school DPA bars cross-school training",
        "verifiable parental consent",
        "no ads or tracking",
        "DLT templates",
        "marketplace grievance officer",
        "POCSO SOP",
        "keep cross-school write and child-read guard tests green"
      ],
      "done": [
        "staff bank/PAN/UAN encrypted at rest (2026-10-11)",
        "retention: visitors 180d, pickups 1y, bus positions 48h (2026-10-11)",
        "fee reminders opt-in and weekly at most (2026-10-11)"
      ]
    },
    {
      "id": "coparent",
      "name": "CoParent",
      "tier": 1,
      "status": "pilot-ready",
      "path": "RM Portfolio/CoParent",
      "url": "https://coparent.freedomlabs.in",
      "regions": [
        "US",
        "IN"
      ],
      "data_classes": [
        "P0 children",
        "P0 family-law messages",
        "payments",
        "attorney access"
      ],
      "modules": [
        "M2",
        "M3",
        "M4",
        "M5",
        "M7"
      ],
      "regimes": [
        "state privacy and breach laws",
        "FRE 902",
        "BSA 2023 s63",
        "DPDP",
        "UK GDPR",
        "FTC Act",
        "money transmission",
        "UPL"
      ],
      "ai": "tone analysis server-side",
      "red_flags": [
        "false E2EE claim",
        "single committed SECRET_KEY",
        "65B cites repealed Act, machine-signed",
        "unilateral attorney access"
      ],
      "must_do": [
        "remove E2EE claim",
        "three-key split",
        "BSA s63 human-signed certificate",
        "mutual consent for third-party access",
        "Stripe Connect for expenses",
        "disclose tone analysis"
      ]
    },
    {
      "id": "digitailor",
      "name": "Digitailor (Reach)",
      "tier": 1,
      "status": "live",
      "path": "RM External/Reach",
      "url": "https://home.digitailor.org",
      "regions": [
        "IN",
        "US",
        "GLOBAL"
      ],
      "data_classes": [
        "P0 immigration status",
        "P0 EEO answers",
        "P1 resumes",
        "inbox access",
        "P0 account credentials (bcrypt)",
        "servers in India"
      ],
      "modules": [
        "M8",
        "M11",
        "M10"
      ],
      "regimes": [
        "India DPDP Act 2023 and Rules 2025",
        "India IT Act intermediary and IT Rules 2021 (grievance officer, 180-day records)",
        "GDPR and UK GDPR for EU and UK data subjects",
        "CPRA sensitive PI",
        "VA CO CT opt-in",
        "CalOPPA",
        "FTC Act",
        "CFAA and platform terms",
        "Google API User Data Policy",
        "CAN-SPAM",
        "ROSCA"
      ],
      "ai": "Default Google Gemini Flash-Lite (cloud): resume text and job description are sent to Google under no-training service-provider terms. BYOK (OpenAI, Anthropic, Gemini) honored. Embeddings run locally (nomic-embed-text). Interview prep uses local Ollama.",
      "red_flags": [
        "resume PII sent to Google Gemini by default (cloud), consent checkpoint not yet a UI gate",
        "bot-detection episodes",
        "verification promise not yet met",
        "billing incomplete"
      ],
      "must_do": [
        "per-channel terms review",
        "candidate approval and preview",
        "never infer protected answers",
        "Gmail restricted-scope verification or forwarding design",
        "cloud-LLM consent with provider (Google Gemini) named",
        "sub-processor list published",
        "data-location (India) disclosed in privacy notice",
        "grievance officer for India users",
        "international transfer basis for EU, UK, other"
      ]
    },
    {
      "id": "legalos",
      "name": "LegalOS",
      "tier": 1,
      "status": "live",
      "path": "RM Portfolio/LegalOS",
      "url": "https://legalos.freedomlabs.in",
      "regions": [
        "IN",
        "US"
      ],
      "data_classes": [
        "P0 legal matters",
        "P1 founder data",
        "user API keys"
      ],
      "modules": [
        "M3",
        "M16"
      ],
      "regimes": [
        "Advocates Act",
        "US state UPL",
        "Texas 81.101(c)",
        "Colorado AI Act",
        "DPDP",
        "CalOPPA"
      ],
      "ai": "local ollama; BYOK cloud",
      "red_flags": [
        "personas can read as attorneys",
        "documented demo passwords"
      ],
      "must_do": [
        "not-legal-advice line at every output",
        "persona AI disclosure",
        "verified dated citations",
        "encrypt BYOK keys",
        "rotate passwords"
      ]
    },
    {
      "id": "merit",
      "name": "Merit",
      "tier": 1,
      "status": "building",
      "path": "RM Portfolio/EB1A",
      "url": "https://merit.freedomlabs.in",
      "regions": [
        "US",
        "IN"
      ],
      "data_classes": [
        "P0 immigration files",
        "P0 identity documents"
      ],
      "modules": [
        "M3",
        "M13",
        "M11"
      ],
      "regimes": [
        "8 CFR 1001.1",
        "notario fraud laws",
        "UK IAA",
        "CPRA sensitive PI",
        "DPDP",
        "Gemini API terms"
      ],
      "ai": "Gemini Flash Lite only (exception)",
      "red_flags": [
        "drafting engine could produce filings"
      ],
      "must_do": [
        "disclosure on every output",
        "two scores never collapsed",
        "evidence traceability",
        "local PII redaction before Gemini",
        "no outcome guarantees"
      ]
    },
    {
      "id": "nimitra",
      "name": "Nimitra (Kala Chakra)",
      "tier": 1,
      "status": "live",
      "path": "Nimitra",
      "url": "https://nimitra.freedomlabs.in",
      "regions": [
        "IN",
        "US",
        "UK"
      ],
      "data_classes": [
        "P1 birth data",
        "P0 religion or caste",
        "matching data"
      ],
      "modules": [
        "M12",
        "M11"
      ],
      "regimes": [
        "CPA 2019 s2(47)",
        "DMR Act",
        "state anti-superstition laws",
        "NY Penal Law 165.35",
        "UK CPUT Sch 1",
        "CAP Code",
        "UK GDPR Art 9",
        "DPDP"
      ],
      "ai": "Gemini Flash Lite (exception); LLM never performs astrology",
      "red_flags": [
        "production serves readings with allow_unsigned=True; 502 rules, 0 board-signed",
        "21 of 108 graha-in-bhava rules cite a BPHS chapter that does not name the graha (measured 2026-08-22)",
        "no AI disclosure found on the landing page",
        "shastra corpus is CC BY-SA 4.0; ShareAlike applies to a distributed verse-text derivative"
      ],
      "must_do": [
        "entertainment positioning by region",
        "suppressed safety classes",
        "no remedy upsell",
        "AI-forward persona",
        "explicit consent for religion or caste"
      ]
    },
    {
      "id": "lakshmi",
      "name": "Lakshmi",
      "tier": 1,
      "status": "internal",
      "path": "RM Orbit/Lakshmi",
      "url": "https://lakshmi.freedomlabs.in (auth)",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P2 market data",
        "company paper book"
      ],
      "modules": [
        "M4"
      ],
      "regimes": [
        "SEBI RA and IA regulations (if external)",
        "Upstox terms",
        "exchange data licences"
      ],
      "ai": "cloud (Gemini Flash-Lite workhorse, Claude/GPT teacher) — Ollama removed 2026-07-15",
      "red_flags": [
        "public hostname exists",
        "AI is CLOUD, not local: register said 'local' until 2026-08-22 while the code had been cloud-only since 2026-07-15. Policy decision open — see Lakshmi docs/PRE_REGISTRATION_ai_as_extractor.md"
      ],
      "must_do": [
        "auth on every route",
        "no external sharing",
        "SEBI registration before productising",
        "decide local-vs-cloud for Lakshmi; no market data or holdings in cloud prompts either way"
      ]
    },
    {
      "id": "rm-mail",
      "name": "RM Mail",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/Mail",
      "url": "https://mail.freedomlabs.in",
      "regions": [
        "IN",
        "global recipients"
      ],
      "data_classes": [
        "P0 message content",
        "attachments",
        "contacts"
      ],
      "modules": [
        "M5",
        "M16"
      ],
      "regimes": [
        "IT Rules 2021",
        "DPDP",
        "CERT-In",
        "CAN-SPAM",
        "PECR",
        "Gmail and Yahoo bulk-sender rules",
        "lawful access"
      ],
      "ai": "local ai_worker triage",
      "red_flags": [
        "history of BCC leak, lost sends, RLS bypass (fixed on unpushed branch)"
      ],
      "must_do": [
        "keep RLS after_begin hook",
        "disclose and allow disabling AI triage",
        "retention schedule",
        "law-enforcement policy",
        "SPF DKIM DMARC per domain",
        "grievance officer page"
      ]
    },
    {
      "id": "rm-meet",
      "name": "RM Meet",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/Meet",
      "url": "https://meet.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0 audio video recordings transcripts",
        "chat"
      ],
      "modules": [
        "M5",
        "M16"
      ],
      "regimes": [
        "recording consent laws",
        "UK IPA",
        "BIPA",
        "FTC Act",
        "Online Safety Act",
        "COPPA"
      ],
      "ai": "local captions and notes",
      "red_flags": [
        "false E2EE claim",
        "no server-side host authz",
        "serve.cjs path traversal",
        "dev guest endpoint live in prod",
        "in-process state"
      ],
      "must_do": [
        "remove E2EE claim",
        "enforce host roles server-side",
        "path containment",
        "disable guest endpoint",
        "meeting entity with ACL",
        "recording consent prompt and indicator"
      ]
    },
    {
      "id": "rm-drive",
      "name": "RM Drive",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/drive",
      "url": "https://drive.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0/P1 files",
        "viewer analytics",
        "locked-note ciphertext"
      ],
      "modules": [
        "M5",
        "M7",
        "M16"
      ],
      "regimes": [
        "DMCA 512",
        "IT Rules",
        "DSA",
        "PECR and GDPR tracking",
        "CSAM reporting",
        "Online Safety Act"
      ],
      "ai": "local tagging and summaries",
      "red_flags": [
        "viewer analytics needs notice on gate",
        "anonymous file requests"
      ],
      "must_do": [
        "tracking notice on data-room gate",
        "DMCA agent and takedown page",
        "malware and hash scanning",
        "share-link expiry defaults",
        "honest locked-notes copy"
      ]
    },
    {
      "id": "rm-writer",
      "name": "RM Writer (Docs, Sheets, Slides)",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/Writer.tmp",
      "url": "https://docs.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0/P1 document content",
        "uploaded images",
        "comments and mentions",
        "read receipts",
        "P1 identity"
      ],
      "modules": [
        "M5",
        "M16"
      ],
      "regimes": [
        "DPDP",
        "SPDI",
        "CERT-In",
        "IT Rules",
        "GDPR",
        "UK GDPR",
        "DSA",
        "Online Safety Act"
      ],
      "ai": "local ollama",
      "red_flags": [
        "shipped with authentication off until 2026-08-23; X-Workspace-Id header was the only gate",
        "ran a Vite dev server on a public hostname until 2026-08-23",
        "Writer.tmp is gitignored, the live app is not in version control",
        "no backup of writer.db"
      ],
      "must_do": [
        "keep WRITER_AUTH_REQUIRED=true and ALLOW_LOCAL_HS256_FALLBACK=false",
        "share links expire by default",
        "notice for read receipts",
        "AI disclosure, local model only",
        "export and delete in settings",
        "malware scanning on image upload",
        "put the live tree in version control",
        "back up writer.db"
      ]
    },
    {
      "id": "rm-tour",
      "name": "RM Tour",
      "tier": 2,
      "status": "design; docs seam verified",
      "path": "RM Orbit/Tour",
      "url": "",
      "regions": [
        "internal first",
        "global if productised"
      ],
      "data_classes": [
        "P0 screen captures of arbitrary pages (may contain any class)",
        "step text",
        "selectors and URLs",
        "operator identity"
      ],
      "modules": [
        "M5",
        "M16"
      ],
      "regimes": [
        "DPDP",
        "CERT-In",
        "IT Rules 2021",
        "GDPR and UK GDPR if published to EU or UK viewers",
        "third-party site terms for capture of other products"
      ],
      "ai": "local ollama for step text, summaries, translation",
      "red_flags": [
        "screen capture of live screens will contain customer personal data",
        "published guides are shareable, so a missed redaction leaves the tenant",
        "recording another vendor's product may breach that vendor's terms",
        "RM Docs API was publicly writable with no auth until 2026-08-23; now Gate-enforced (WRITER_AUTH_REQUIRED=true), fail-closed verified"
      ],
      "must_do": [
        "visible recording indicator for the whole session",
        "blank credential, card, and one-time-code fields before the screenshot is taken",
        "manual blur and crop before publish, baked into the published asset",
        "90-day retention on raw captures, then purge",
        "assets authorised server-side against the owning workspace, stored outside the web root",
        "data map before the first stored capture",
        "no end-to-end encryption claim",
        "register entry updated to the real status before the first real user"
      ]
    },
    {
      "id": "nest",
      "name": "Nest (Connect)",
      "tier": 2,
      "status": "live-internal",
      "path": "RM Orbit/Connect",
      "url": "https://chat.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0 messages"
      ],
      "modules": [
        "M5"
      ],
      "regimes": [
        "IT Rules",
        "DPDP",
        "Online Safety Act",
        "DSA"
      ],
      "ai": "local agents",
      "red_flags": [],
      "must_do": [
        "agent disclosure in channel",
        "tenant scoping tests",
        "export and deletion",
        "abuse reporting"
      ]
    },
    {
      "id": "gate",
      "name": "Gate (AuthX), Authenticator, Gate Admin",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/Gate; RM Orbit/Authenticator",
      "url": "https://sso.freedomlabs.in; https://auth.freedomlabs.in; https://admin.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0 credentials",
        "MFA seeds",
        "push subscriptions"
      ],
      "modules": [
        "M16"
      ],
      "regimes": [
        "NIST 800-63B",
        "RFC 9700",
        "DPDP",
        "UK GDPR",
        "CERT-In"
      ],
      "ai": "none",
      "red_flags": [
        "no refresh grant (apps align TTLs)",
        "2.5GB untracked Authenticator tree"
      ],
      "must_do": [
        "key rotation runbook with JWKS overlap",
        "consent screen per client",
        "issuance and revocation audit log",
        "admin MFA enforced",
        "breached-password check"
      ]
    },
    {
      "id": "folio",
      "name": "Folio (RMBook + Calendar)",
      "tier": 2,
      "status": "live",
      "path": "RM Orbit/RMBook; RM Orbit/Calendar",
      "url": "https://folio.freedomlabs.in; https://calendar.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P1 calendars contacts bookings",
        "Google OAuth tokens",
        "video intros"
      ],
      "modules": [
        "M5",
        "M11",
        "M10"
      ],
      "regimes": [
        "Google API User Data Policy",
        "CalOPPA",
        "PECR",
        "DPDP"
      ],
      "ai": "none",
      "red_flags": [
        "server/.env secrets committed to a repo with a remote",
        "token in localStorage",
        "no CSRF or rate limits",
        "Spamhaus-listed sending IP"
      ],
      "must_do": [
        "rotate Google secret, SECRET_KEY, mail password",
        "httpOnly cookies",
        "rate limits",
        "send via Resend",
        "Google verification for Calendar scopes",
        "delete flow revokes tokens"
      ]
    },
    {
      "id": "rm-sign",
      "name": "RM Sign",
      "tier": 2,
      "status": "live",
      "path": "RM External/RM Sign",
      "url": "https://sign.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0 documents and signatures",
        "signer identities"
      ],
      "modules": [
        "M7",
        "M16"
      ],
      "regimes": [
        "ESIGN",
        "UETA",
        "UK eIDAS",
        "IT Act s3 s3A",
        "BSA presumptions",
        "DPDP"
      ],
      "ai": "none",
      "red_flags": [],
      "must_do": [
        "region-aware signature-level statement",
        "ESIGN consumer consent",
        "First Schedule exclusions",
        "PAdES-LTV and RFC 3161",
        "verification page",
        "external-signer notice"
      ]
    },
    {
      "id": "rm-bills",
      "name": "RM Bills",
      "tier": 2,
      "status": "live",
      "path": "RM External/RMBills",
      "url": "https://bills.freedomlabs.in",
      "regions": [
        "IN",
        "exports"
      ],
      "data_classes": [
        "P1 client and invoice data",
        "P0 processor credentials (encrypted at rest, console-entered)"
      ],
      "modules": [
        "M4",
        "M16"
      ],
      "regimes": [
        "GST invoice rules",
        "LUT exports",
        "Companies Act retention",
        "Consumer Protection"
      ],
      "ai": "none",
      "red_flags": [],
      "must_do": [
        "state code 37",
        "immutable numbering",
        "GST fields",
        "e-invoice readiness",
        "FIRC references",
        "short-lived portal tokens",
        "RMBILLS_CREDENTIALS_KEY backed up; rotation re-enters saved credentials"
      ]
    },
    {
      "id": "rm-cloud",
      "name": "RM Cloud + console",
      "tier": 2,
      "status": "live-clients",
      "path": "RM External/RMCloud",
      "url": "https://cloud.freedomlabs.in",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P1 client billing",
        "P0 client-stored data"
      ],
      "modules": [
        "M9",
        "M4"
      ],
      "regimes": [
        "CERT-In 5-year KYC and 180-day logs",
        "DPDP processor",
        "GST"
      ],
      "ai": "none",
      "red_flags": [],
      "must_do": [
        "client KYC register",
        "DPA and AUP per client",
        "tenant isolation documented",
        "off-site tested backups",
        "status page",
        "no unmeasured uptime claims"
      ]
    },
    {
      "id": "planet",
      "name": "Planet (CRM)",
      "tier": 2,
      "status": "building",
      "path": "RM Orbit/Planet",
      "url": "https://planet.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P1 contacts",
        "outreach",
        "AI scores"
      ],
      "modules": [
        "M10"
      ],
      "regimes": [
        "UK GDPR legitimate interest",
        "PECR",
        "CAN-SPAM",
        "CASL",
        "DPDP",
        "LinkedIn terms",
        "FTC fake-reviews rule"
      ],
      "ai": "local",
      "red_flags": [],
      "must_do": [
        "source field per contact",
        "suppression list",
        "opt-out in sequences",
        "no scraped enrichment",
        "explainable AI scores"
      ]
    },
    {
      "id": "orbit-internal",
      "name": "Atlas, Learn, Search, VSearch, Writer, Writer-X, Fonts, orbit-ui, OrbitShell, TurboTick, Wallet, Card, Capital Hub, Secure, Snitch, Control Center",
      "tier": 2,
      "status": "internal",
      "path": "RM Orbit/*",
      "url": "",
      "regions": [
        "internal"
      ],
      "data_classes": [
        "P1 work data",
        "P0 secrets (Wallet)",
        "confidential manuscripts (VSearch)"
      ],
      "modules": [
        "M16",
        "M13",
        "M10"
      ],
      "regimes": [
        "X automation rules (Writer-X)",
        "Claude API terms (OrbitShell)"
      ],
      "ai": "local; OrbitShell cloud exception",
      "red_flags": [],
      "must_do": [
        "Wallet threat model",
        "VSearch confidentiality and retention",
        "Writer-X automation labels",
        "OrbitShell no P0 data"
      ]
    },
    {
      "id": "scribe",
      "name": "Scribe",
      "tier": 3,
      "status": "live",
      "path": "RM Portfolio/Scribe",
      "url": "",
      "regions": [
        "US",
        "UK"
      ],
      "data_classes": [
        "P1 profiles",
        "OAuth tokens LinkedIn X",
        "drafts",
        "third parties mentioned"
      ],
      "modules": [
        "M10",
        "M6",
        "M11"
      ],
      "regimes": [
        "LinkedIn API terms",
        "X developer agreement",
        "FTC Endorsement Guides",
        "FTC fake-reviews rule",
        "ASCI",
        "CAP Code",
        "UK GDPR + IDTA",
        "PECR",
        "CalOPPA",
        "ROSCA",
        "CA ARL",
        "Gemini and Groq terms"
      ],
      "ai": "Gemini Flash Lite primary, Groq fallback (exception)",
      "red_flags": [
        "one LinkedIn token per install",
        "singleton scheduler",
        "no billing or email verification",
        "no Postgres backups"
      ],
      "must_do": [
        "per-profile encrypted channel_credentials",
        "per-tenant jobs",
        "customer approval before publish",
        "no fabricated engagement",
        "DPA with IDTA",
        "backups",
        "billing with easy cancellation",
        "keep privacy/terms in sync with code (rewritten 2026-08-21)"
      ]
    },
    {
      "id": "aibookly",
      "name": "AIBookly",
      "tier": 3,
      "status": "live",
      "path": "RM Portfolio/AIBookly",
      "url": "https://aibookly.freedomlabs.in",
      "regions": [
        "US",
        "UK"
      ],
      "data_classes": [
        "P1 manuscripts",
        "P1 story plan per book (book_memory.story_json: premise, cast, scene cards, canon; AI-written from the author's premise, exported and deleted with the book, 2026-10-28)",
        "BYOK keys (encrypted)",
        "billing subject id (Paddle holds card data)",
        "PLANNED: P1 uploaded source material",
        "PLANNED: P1 interview/change chat transcripts",
        "PLANNED: P1 claims ledger + author answers"
      ],
      "modules": [
        "M6",
        "M13",
        "M11"
      ],
      "regimes": [
        "US Copyright Office AI guidance",
        "UK CDPA s9(3)",
        "India s2(d)(vi)",
        "Amazon KDP AI disclosure",
        "provider terms",
        "UK GDPR + IDTA",
        "ROSCA (one-time purchase)",
        "CCR 2013",
        "CalOPPA"
      ],
      "ai": "BYOK; managed cloud (exception): Google Gemini 2.5 Flash first, then Groq, OpenRouter, local Ollama (Cerebras in the chain but out of credit since 2026-09-13). Anthropic Claude via the official SDK is wired in code and takes the lead for planning, evaluation and the whole-book read as soon as an AIBookly-scoped ANTHROPIC_API_KEY is provisioned; none was as of 2026-09-14. Filesystem hand-off.",
      "red_flags": [
        "BYOK chain tails to local Ollama silently when the key is missing or throttled (open decision)",
        "managed provider in production is Gemini while the plan names Anthropic: privacy notice and sub-processors page are correct for Gemini; the Anthropic key is an open decision (keyholder policy)"
      ],
      "must_do": [
        "authorship and copyright guidance to authors",
        "KDP disclosure reminder",
        "plagiarism and quotation checks",
        "encrypted scoped BYOK keys",
        "manuscript export and delete cover uploads, transcripts, ledger",
        "uploads notice: author responsible for third-party data in material",
        "when the Anthropic key is provisioned: add Anthropic to the sub-processors page and the privacy notice the same day, with the no-training posture of the API tier"
      ]
    },
    {
      "id": "rollout",
      "name": "Rollout",
      "tier": 3,
      "status": "live-demo",
      "path": "rollout",
      "url": "https://rollout.freedomlabs.in",
      "regions": [
        "US"
      ],
      "data_classes": [
        "P1 artist and creator contacts",
        "unreleased masters and artwork",
        "billing"
      ],
      "modules": [
        "M6",
        "M10",
        "M11",
        "M4"
      ],
      "regimes": [
        "copyright and confidentiality",
        "CAN-SPAM",
        "PECR",
        "Apple and Google IAP",
        "ROSCA",
        "CalOPPA"
      ],
      "ai": "RAG Ask",
      "red_flags": [],
      "must_do": [
        "signed short-lived asset URLs",
        "licence limited to service",
        "no training on assets",
        "outreach suppression",
        "store billing",
        "in-app deletion"
      ]
    },
    {
      "id": "dwell",
      "name": "Dwell (isdwell.com)",
      "tier": 3,
      "status": "pre-launch",
      "path": "RM Portfolio/Dwell",
      "url": "https://home.isdwell.com",
      "regions": [
        "US"
      ],
      "data_classes": [
        "P0 screening results",
        "leases",
        "payments via Stripe",
        "P1 resident contacts"
      ],
      "modules": [
        "M15",
        "M4",
        "M7",
        "M10",
        "M5"
      ],
      "regimes": [
        "Fair Housing Act",
        "HUD AI guidance",
        "FCRA",
        "state landlord-tenant law",
        "ESIGN",
        "Stripe Connect",
        "TCPA",
        "CalOPPA",
        "Colorado AI Act",
        "Documenso AGPL"
      ],
      "ai": "Google Gemini (gemini-flash-lite-latest). Standalone product, outside the RM Orbit local-AI standard.",
      "red_flags": [
        "Resend burst to fake seed addresses",
        "fragile migrations",
        "Resident personal data reached Gemini until 2026-08-21"
      ],
      "must_do": [
        "adverse-action flow",
        "no cross-landlord pricing",
        "state-aware templates",
        "suppression in workers",
        "TCPA consent",
        "trust-account disclaimer",
        "Documenso licence posture",
        "AI disclosure where assistant output appears"
      ]
    },
    {
      "id": "gulgul",
      "name": "Gulgul",
      "tier": 3,
      "status": "dormant",
      "path": "RM Portfolio/Gulgul",
      "url": "",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P1 identity",
        "P0 precise location",
        "payments"
      ],
      "modules": [
        "M4",
        "M11",
        "M8"
      ],
      "regimes": [
        "DPDP",
        "MV Aggregator Guidelines 2020",
        "Code on Social Security 2020",
        "state gig-worker acts",
        "FSSAI",
        "RBI PA",
        "E-Commerce Rules"
      ],
      "ai": "",
      "red_flags": [],
      "must_do": [
        "aggregator and gig-worker review before revival",
        "location minimisation"
      ]
    },
    {
      "id": "isdwell",
      "name": "isdwell (MES maintenance)",
      "tier": 4,
      "status": "pilot-prep",
      "path": "RM External/isdwell",
      "url": "",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P2 units (zero-PII)",
        "job cards",
        "restricted station data"
      ],
      "modules": [
        "M14",
        "M7",
        "M15"
      ],
      "regimes": [
        "Official Secrets Act",
        "MoD and CERT-In audit",
        "GIGW 3.0",
        "Official Languages Act",
        "GeM",
        "DPDP processor",
        "BSA"
      ],
      "ai": "local",
      "red_flags": [],
      "must_do": [
        "zero-PII test",
        "station data never public or in cloud prompts",
        "on-premise default",
        "CERT-In empanelled audit",
        "bilingual UI",
        "vendor cannot close"
      ]
    },
    {
      "id": "myjanata",
      "name": "MyJanata",
      "tier": 4,
      "status": "live-prototype",
      "path": "RM External/MyJanata",
      "url": "https://myjanata.freedomlabs.in",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P1 citizen contact",
        "P0 location and photos"
      ],
      "modules": [
        "M5",
        "M14"
      ],
      "regimes": [
        "IT Rules",
        "DPDP",
        "TRAI DLT",
        "WhatsApp policy",
        "defamation",
        "GIGW"
      ],
      "ai": "local ollama; Anthropic only if key",
      "red_flags": [
        "email OTP via GoDaddy SMTP"
      ],
      "must_do": [
        "blur faces and plates publicly",
        "reduce public location precision",
        "takedown path",
        "DLT templates",
        "move OTP mail to Resend",
        "controller agreement with municipalities"
      ]
    },
    {
      "id": "rm-music",
      "name": "FreeTunes (was RM Music)",
      "tier": 5,
      "status": "private",
      "path": "RM Internal/Music",
      "url": "https://music.freedomlabs.in",
      "regions": [
        "household"
      ],
      "data_classes": [
        "P1 listening history",
        "P1 session device label and last IP (kept 180 days or until the account signs in elsewhere; shown to the account holder only)"
      ],
      "modules": [
        "M6"
      ],
      "regimes": [
        "YouTube ToS",
        "Copyright Act 1957",
        "17 USC 106 and 1201",
        "performing-rights licences"
      ],
      "ai": "local",
      "red_flags": [
        "yt-dlp and InnerTube path is unlicensed; shared pool is public performance"
      ],
      "must_do": [
        "private household only",
        "no signup, marketing, demos, or monetisation",
        "cached audio capped and short-lived",
        "rebuild on licensed path before any external user",
        "one session per account; login rate-limited; no SSO or sign-up path"
      ]
    },
    {
      "id": "imprint",
      "name": "Imprint",
      "tier": 5,
      "status": "personal",
      "path": "Imprint",
      "url": "https://architect.freedomlabs.in",
      "regions": [
        "personal"
      ],
      "data_classes": [
        "P0 beliefs and emotional state"
      ],
      "modules": [
        "M11",
        "M16"
      ],
      "regimes": [
        "CA SB 243",
        "NY companion law",
        "provider terms"
      ],
      "ai": "Gemini, Groq, Ollama (exception)",
      "red_flags": [],
      "must_do": [
        "single-user; if multi-user add companion-bot disclosure and self-harm protocol",
        "block minors",
        "no-training settings"
      ]
    },
    {
      "id": "research",
      "name": "Research, research-papers, Plume, ENTROPIA-VDI, Novus AI research",
      "tier": 5,
      "status": "research",
      "path": "RM External/Research; RM External/research-papers; Plume; RM External/ENTROPIA-VDI",
      "url": "https://research.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "manuscripts"
      ],
      "modules": [
        "M13"
      ],
      "regimes": [
        "ICMJE",
        "COPE",
        "venue AI policies"
      ],
      "ai": "cloud primary, Ollama fallback (exception)",
      "red_flags": [],
      "must_do": [
        "verified references",
        "AI disclosure per venue",
        "human-subjects consent",
        "cloud minimisation"
      ]
    },
    {
      "id": "rm-papers",
      "name": "RM Papers (inside Supernatural)",
      "tier": 5,
      "status": "built inside Supernatural; on once migration 0128 is applied",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/papers (kernel) and RM Orbit/FounderStack/01-Productivity/Papers (frontend, pipeline, standalone backend)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "manuscripts: topic, sections, checked references, tables, figure names, P1 confidential and may contain P0 (papers_paper.content)",
        "author name and affiliation as typed, P1 (papers_paper)",
        "reports about a draft and pipeline notes, P1 (papers_paper.reports, work)",
        "uploaded source material and its extracted text, P1 and may contain P0 (papers_upload, bytes in Drive's blob store)",
        "who is invited to a paper: address, person, role, a sha256 of the invite link, expiry (papers_member)",
        "who ran the pipeline and when (papers_run), the pipeline log (papers_log)",
        "figures and exports: LaTeX, PDF, DOCX (papers_file, bytes in Drive's blob store)"
      ],
      "modules": [
        "M13",
        "M6"
      ],
      "regimes": [
        "DPDP",
        "ICMJE",
        "COPE",
        "venue AI policies"
      ],
      "ai": "the workspace's own provider through the kernel runtime (cloud exception inherited from Research); metered per person; no RM key; none configured means nothing is written",
      "red_flags": [
        "manuscripts and source text are not encrypted beyond the disk",
        "uploaded text goes to the workspace's cloud provider with no anonymisation step and no notice at upload",
        "a made-up number outside the Results section is listed for the person, not removed",
        "an in-text citation whose reference was dropped stays in the prose and is listed, not removed",
        "no malware scan on uploads",
        "no similarity check before export"
      ],
      "must_do": [
        "notice and confirmation at upload of what is sent to the AI provider",
        "rights export and erasure must walk the papers_* tables and blobs",
        "malware scan on upload",
        "similarity check before export",
        "per-venue AI disclosure wording",
        "human-subjects question at intake"
      ]
    },
    {
      "id": "rm-charts",
      "name": "Charts (inside Supernatural)",
      "tier": 2,
      "status": "built, in the launcher; demo workspace only, no outside tenant",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/charts (kernel) and RM Orbit/FounderStack/Frontend/Apps/Charts (app)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "saved charts, dashboards, metrics, pinned answers (definitions), P2",
        "uploads and extracts as Parquet per workspace, P1 and may contain P0 (charts_dataset, Backend/data/charts)",
        "outside database host, user and an encrypted password (charts_dataset.secret_enc)",
        "shares and public links (sha256 of the token, publisher, expiry)",
        "alerts with recent aggregate values; scheduled report recipients",
        "comments and view log",
        "dashboard versions (each save), P2 (charts_dashboard_version)",
        "signed embed keys, encrypted (charts_link.settings.key_enc); signed viewer ids are not stored",
        "imported Tableau/Power BI layouts (file not kept; a .twbx's own data becomes a dataset)",
        "Python cell code (kept, never run on the server)"
      ],
      "modules": [
        "M5",
        "M16"
      ],
      "regimes": [
        "DPDP",
        "GDPR and UK GDPR",
        "IT Rules"
      ],
      "ai": "the workspace's own provider through the kernel runtime (Ask writes a query, never numbers; write-up from computed summaries); no RM key; statistics are numpy, not a model",
      "red_flags": [
        "uploads may hold P0 and are not encrypted beyond the disk",
        "database passwords under the one kernel key, no rotation path",
        "a public link shows what its publisher can see to anyone holding it (computed as publisher, own tiles only, 30-day default end)",
        "scheduled reports carry numbers out by mail",
        "signed embed keys under the one kernel key, like database passwords",
        "Python on a canvas runs in the reader's browser (WebAssembly, no network by content security policy); a dashboard's Python is code someone else wrote, contained by the same sandbox"
      ],
      "must_do": [
        "accessibility report drafted (Apps/Charts/ACCESSIBILITY_CONFORMANCE.md); needs NVDA, JAWS and VoiceOver sessions before it goes out",
        "privacy notice naming uploads, extracts, alerts, reports and what Ask sends",
        "extract retention setting",
        "privacy and terms links on public pages"
      ]
    },
    {
      "id": "rm-word",
      "name": "Word (inside Supernatural)",
      "tier": 2,
      "status": "step 1 built, in the launcher; demo workspace only, no outside tenant",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/word (kernel) and RM Orbit/FounderStack/Frontend/Apps/Word (app)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "documents: title, structured content, plain text, page settings, P1 and may contain P0 (word_document)",
        "kept versions with who saved each and whether Blue wrote it (word_version)",
        "pictures in Drive storage (word_image)",
        "shares, comments, suggestions (word_share, word_comment, word_suggestion)",
        "a Drive file per document; exports a person saves to Drive",
        "imported files are read and not kept",
        "search index: title and first 20,000 characters, removed on trash",
        "word_link, word_livefigure, word_read, word_update: empty, for later steps",
        "mentions: record ids and titles, and links from the document to mentioned records",
        "live figures (word_livefigure): metric or question, the query, last value, frozen or not",
        "figures asked of Blue: the question and the SELECT it wrote, re-run as each reader (value, or table of at most 50 rows and 8 columns)",
        "word_mention: who was named, by whom, the sentence around it, when seen",
        "dictation audio: streamed to our own speech model, not kept; only the accepted words are saved",
        "Blue panel: the document as the person sees it (live values and rows included) goes to the workspace's AI provider when they ask",
        "Dictate with Blue: the dictated words and matching record titles go to the workspace's AI provider at each pause; not kept"
      ],
      "modules": [
        "M5"
      ],
      "regimes": [
        "DPDP",
        "GDPR and UK GDPR"
      ],
      "ai": "the workspace's own provider through the kernel runtime; Blue reads the blocks a person can read and changes a document only by suggestion a person accepts; accepted AI changes are marked in the history; no RM key; a live figure asked in words sends the question and field names to that provider once (Charts' Ask); = and @blue send the question and the table and column list (no rows) once, and the SQL returned runs read-only as each reader",
      "red_flags": [
        "documents may hold P0 and are not encrypted beyond the disk; no end-to-end encryption yet (step 7)",
        "pictures are fetched with the reader's token in the address (access logs)",
        "exports and downloads take document text out of the suite",
        "read receipts planned on by default; reader notice required before they ship",
        "a frozen live figure shows its value to every reader of the document, whatever their access"
      ],
      "must_do": [
        "privacy notice naming documents, pictures, imports, exports and what Blue sends",
        "read-receipt notice before receipts ship",
        "retention setting for trashed documents",
        "accessibility pass with NVDA, JAWS and VoiceOver"
      ]
    },
    {
      "id": "rm-matrix",
      "name": "Matrix (inside Supernatural)",
      "tier": 2,
      "status": "step 1 built, in the launcher; demo workspace only, no outside tenant",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/matrix (kernel) and RM Orbit/FounderStack/Frontend/Apps/Matrix (app)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "workbooks: the engine's bytes (cells, formulas, styles, sheets), a text summary for search, P1 and may contain P0 (matrix_workbook)",
        "every edit as the engine's diffs with who made it and whether Blue did, folded into the workbook every 50 edits (matrix_op)",
        "kept versions with who saved each and whether Blue's change made it (matrix_version)",
        "shares, comments on cells, Blue's suggested cells (matrix_share, matrix_comment, matrix_suggestion)",
        "marks on cells Blue changed (matrix_workbook.marks)",
        "a Drive file per workbook; exports a person downloads or Blue saves to Drive",
        "imported files are read and not kept; a Drive spreadsheet opened in Matrix stays as it was",
        "live presence (who has the workbook open, their selected cells), in memory only",
        "Blue: the sheet or range a person asks about goes to the workspace's AI provider when they ask",
        "live tables (matrix_live): a source over the query layer and the rows it last wrote into cells, as the person who refreshed them can read; refreshed on business events as that person",
        "charts and checks (matrix_chart, matrix_check), P2",
        "who a comment names and when they saw it (matrix_comment.mentions)",
        "Blue panel: the sheet (first 80 by 24) and the selection go to the workspace's AI provider when asked; a live table asked in words sends the request and table and column names, no rows",
        "PDF exports printed by headless Chrome; .xls and .ods read as values (xlrd, odfpy); Numbers files refused"
      ],
      "modules": [
        "M5"
      ],
      "regimes": [
        "DPDP",
        "GDPR and UK GDPR"
      ],
      "ai": "the workspace's own provider through the kernel runtime; Blue reads ranges a person can read, tries formulas on a copy, and changes cells only by suggestion a person accepts; a formula that reaches the web needs a person to allow it and Blue cannot; accepted AI cells are marked; no RM key",
      "red_flags": [
        "workbooks may hold P0 (salaries, bank details) and are not encrypted beyond the disk",
        "the live connection carries the reader's token in its address (access logs)",
        "exports and downloads take workbook contents out of the suite",
        "web formulas (IMPORTDATA and the like) can send cell values to an outside address once allowed",
        "live tables show records to every reader of the workbook as the last refresher could read them"
      ],
      "must_do": [
        "privacy notice naming workbooks, imports, exports, presence and what Blue sends",
        "retention setting for trashed workbooks",
        "accessibility pass with NVDA, JAWS and VoiceOver (the grid is a canvas)",
        "outside-data connections: decide the allow list before web formulas are evaluated"
      ]
    },
    {
      "id": "rm-present",
      "name": "Present (inside Supernatural)",
      "tier": 2,
      "status": "steps 1 to 11 built, in the launcher; demo workspace only, no outside tenant",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/present (kernel) and RM Orbit/FounderStack/Frontend/Apps/Present (app)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "decks: title, theme, story, the text of every slide and note for search, P1 and may contain P0 (present_deck)",
        "slides: layout, parts and their content, live data bindings, speaker notes (present_slide)",
        "kept versions of the whole deck with who saved each and whether Blue did (present_version)",
        "shares, comments on slides with who they name, Blue's suggested changes (present_share, present_comment, present_suggestion)",
        "a Drive file per deck",
        "live numbers on slides read as each viewer at the moment of drawing, not stored",
        "live presence (who has the deck open, their slide), in memory only",
        "Blue drafting: the brief, pasted material, data view names and columns and the first rows of up to three matching workbooks go to the workspace's AI provider when asked",
        "links (token hashed, expiring), viewings with email when asked and seconds per slide only with the viewer's yes (present_link, present_view)",
        "live sessions: poll answers, quiz names, questions, upvotes by device id and typed name (present_session, present_vote)",
        "recordings of the presenter's screen and voice in Drive",
        "captions: speech recognised by the presenter's browser (Google in Chrome), lines translated by the workspace's AI provider, not kept",
        "Openverse: search words sent, chosen pictures kept in Drive with credit"
      ],
      "modules": [
        "M5"
      ],
      "regimes": [
        "DPDP",
        "GDPR and UK GDPR"
      ],
      "ai": "the workspace's own provider through the kernel runtime; drafts are checked so every figure is in the brief, the material or the person's data (others named in speaker notes); Blue changes a person's deck only by suggestion they accept; no RM key",
      "red_flags": [
        "decks may hold P0 and are not encrypted beyond the disk",
        "live numbers show each reader what they may read, which can be more than the owner expects",
        "the live connection carries the reader's token in its address (access logs)",
        "drafting sends the first rows of matching workbooks to the AI provider",
        "captions send the presenter's voice to Google through Chrome",
        "a linked deck's live numbers are read as the link's maker",
        "recordings can hold other people's voices"
      ],
      "must_do": [
        "privacy notice naming decks, live numbers, presence and what Blue sends",
        "retention setting for trashed decks",
        "accessibility pass with NVDA, JAWS and VoiceOver on the editor and the player",
        "privacy notice for links, viewing analytics, live sessions, captions, recordings and Openverse",
        "retention for viewing data and sessions",
        "notice to audiences when a talk is recorded"
      ]
    },
    {
      "id": "rm-home",
      "name": "RM Home",
      "tier": 5,
      "status": "internal",
      "path": "RM Home",
      "url": "",
      "regions": [
        "internal"
      ],
      "data_classes": [
        "P0 company identity documents"
      ],
      "modules": [
        "M16"
      ],
      "regimes": [
        "Companies Act records"
      ],
      "ai": "none",
      "red_flags": [],
      "must_do": [
        "internal only",
        "MFA",
        "access logs",
        "encrypted backups"
      ]
    },
    {
      "id": "dormant",
      "name": "Wardro, Bazaar, AnyPickles, Zoopolis, kiwi-mvp, Tether, Discovery OS, Operator, Varuna, agent-runtime, AgentTheatre, ContentMachine, BuilderStudio, Aleet (external)",
      "tier": 5,
      "status": "dormant-or-planned",
      "path": "various",
      "url": "",
      "regions": [],
      "data_classes": [],
      "modules": [],
      "regimes": [],
      "ai": "",
      "red_flags": [],
      "must_do": [
        "add a register entry before the first real user"
      ]
    },
    {
      "id": "founderstack",
      "name": "FounderStack",
      "tier": 1,
      "status": "building",
      "path": "RM Orbit/FounderStack",
      "url": "https://founderstack.freedomlabs.in",
      "regions": [
        "IN",
        "US",
        "UK",
        "EU"
      ],
      "data_classes": [
        "P0 provider API keys (tenant BYOK, encrypted at rest)",
        "P0 credential vault metadata (Safe)",
        "P0 message content and meeting transcripts (Mail, Ping) when built",
        "P1 contacts auto-created from meeting attendees and mail headers",
        "P1 workspace content: tasks, meetings, deadlines, tickets, files",
        "P1 Capital Hub (2026-10-10): invoices with lines, tax, payments received and credit notes (gapless numbers, issued only against an executed contract, except a sale paid in full as it is made, which bills no one and can never become owed); customer billing details (billing email, contact name, postal address, tax id); bank statements imported from files (account name, last four digits, every line with its description, amount and balance) and what each line was matched to; expenses with who paid (a person) and receipts filed in the uploader's Drive; budgets; closed-month P&L snapshots. Invoices, reminders and the month pack are sent from the person's own mailbox through Mail, to addresses a person entered; no open tracking. No live bank connection: statements only",
        "P1 Capital Hub (2026-10-28): quotes (capital_quote, Q- series, never counted as owed; sent for acceptance through Sign with the customer's name and billing email as signer); the workspace's own payment link template filled with amount, currency, number and reference (no card data, no money held); project hourly rates and billable flags on Atlas time entries, with the invoice each was billed on; weekly and fortnightly repeats",
        "AI usage ledger per tenant",
        "P0 per-project GitHub OAuth token (device flow, isolated credential home, never in an agent environment)",
        "P0 per-project Cloudflare origin certificate (account id, zone id and a scoped token; creates tunnels and DNS records in the customer's own account)",
        "P1 chat attachments: screenshots and documents a person puts in a project conversation. Sniffed and capped, stored outside any web root, reachable only with the tenant's own token, and copied into the working tree the tenant's chosen model reads",
        "P0 privately shown values: a password, token or command output an agent puts in front of a person without reading it. Fetched by the kernel from the project's deploy configuration file or the agent's working copy, encrypted at rest, revealed only against a signed person token, every reveal recorded, redacted from any later message that quotes it",
        "P0 tenant-issued API keys (integration credentials, stored as a SHA-256 with a short prefix, never recoverable, redacted from exports; a key is a person's access narrowed and is revocable)",
        "P0 signed documents, signature images and the hash-chained signing audit trail (Sign): signer name, email, consent time, action times, IP and user agent of external signers who hold no account; kept with the signed record; capability-token links stored as hashes only",
        "P1 timesheets, shifts and approval decisions (Roster); P2 hourly cost rates with history, readable by the person and admins only; P1 Roster requests (2026-10-10): change, leave or swap, with an optional free-text reason seen by the manager (the form says no reason is needed and not to write medical details), the other person's answer, the decision and who made it; leave days on the roster; closed months as a frozen snapshot of hours per person (expected, worked, leave, overtime) for pay; P1 availability (2026-10-10): when a person cannot work, with an optional note, set only by them and seen by their manager; leave allowances and balances; open shifts and who took them; Roster notifications are internal workspace Mail only, with a per-person off switch",
        "P1 motion design scenes (Shakespeare): the scene document, its edit history as an op log with the author of each commit, project names, and the brief a person typed. P1 uploaded assets: logos, images and footage a person puts in a scene, sniffed and capped, stored outside any web root, reachable only with the tenant's own token. Rendered frames of a scene are sent to the tenant's chosen model as pictures so the agent can judge its own layout. Exported media (MP4, GIF, Lottie, stills) is kept until the person deletes the scene",
        "P1 Shakespeare workspace assets: vector drawings a person pasted or uploaded, or the agent drew, kept per tenant with who added them and whether the agent made them. Stored only as the engine's own serialization of the geometry it read (paths, hex fills, plain-word part names), never the text that arrived; kept until deleted",
        "P1 Shakespeare Cinema Library (2026-10-20, implemented and tested locally; production migration not applied by this change): owner-private reference URLs, creator credits, cultural context, rights assertions, observation evidence, study notes and technique links in shakespeare_cinema_entry with existing tenant, owner and project identifiers. India-hosted PostgreSQL with forced tenant RLS and owner/project authorization; no new field-level encryption. Retained until explicit entry deletion or tenant erasure. Owner export covers accessible entries; privileged tenant export covers the table. Earlier Blue plans/chats, exports and backups have separate lifecycles. No media fetching, uploads, scraping, private offline storage or new model calls. Existing Blue/BYOK may receive retrieved notes when requested. Catalog is original AI-assisted unreviewed instruction plus reference-only bibliographic links, not licensed media or verified film analysis. Per-process tenant/actor limits: 120 reads, 30 writes and 6 exports per minute; shared-ingress verification, practitioner/content review, retention review and a named human owner remain required before external activation. Full data map: FounderStack/docs/shakespeare-cinema.md",
        "P1 early-access requests from the Supernatural landing (2026-10-02): email, an optional sentence of up to 280 characters, a coarse region from CF-IPCountry, and the consent time and notice version. Collected only with an unticked consent box, stored in India in early_access_request (forced RLS), never read by a model, deleted after 12 months untouched (scripts/early_access.py purge) or on request to hello@rmmail.in. IP addresses are used in memory for rate limiting and never stored",
        "P1 Reps voice agents (2026-10-08): agent instructions, voices, document scopes; API tools as cURL, whose secret header values (Authorization, keys, tokens, cookies) are Fernet-encrypted apart from the tool and never returned to a browser. P0 live call audio and its transcripts: audio is streamed to the tenant's chosen speech-to-text provider one turn at a time and never stored; the transcript lives in call memory only, except when an agent hands the call to a person, when the last 12 turns, the caller's name and the issue summary are sealed (encrypted at rest) on the handoff row and deleted after the workspace's retention setting (default 30 days, 1 to 365). P0 per-person voice-call consent: who, text version, when, withdrawal time. P1 uploaded documents for agents to answer from: sniffed, capped at 25 MB per file and 200 MB per upload, zip expansion capped, stored outside any web root under Backend/var/reps-store/<tenant>, erased with the tenant",
        "P1 account invites and password resets (2026-10-10): only a SHA-256 of each one-time link is stored; invite 7 days, reset 1 hour; mailed from accounts@rmmail.in via Resend",
        "P1 workspace mail addresses (2026-10-10): name@rmmail.in shared with standalone RM Mail (RM Mail is offered each message first; its names are reserved), or name@<workspace's own verified domain>",
        "P1 workspace mail domains (2026-10-10): domain, Resend domain id, DNS records, verification status; one workspace per domain",
        "P0 connected mail accounts (2026-10-10): IMAP/SMTP host, user name, Fernet-encrypted password never returned; owner-only; inbox mail copied in (first sync 14 days, max 200) and kept until deleted",
        "P1 business cards (Cards, 2026-10-10): drawn on demand from the directory (name, role, the person's Mail address, phone). Cards stores only the brand kit, each person's own choices (show email, show phone, colour) and a hash of the card as last printed, never a copy of the fields. A phone prints only when its owner turns it on; nobody else can set or show it. Addresses on unreachable domains (.local, .test) are never printed. Event payloads name changed fields, never values. Print files (PDF, 2026-10-10) are made on request from the same data, sent with no-store, and never kept on the server; a download marks nothing printed. Brand kit marks (2026-10-10): an uploaded SVG is parsed without network or entities and only its geometry (paths, flat colours) is kept; script, links, text and embedded images are refused, never stored. A PNG is re-encoded by the server. Uploads are filed in the uploader's own Drive (folder Brand), like chat attachments; a print file asked for in the chat is saved to the asker's Drive (folder Cards). Print orders (2026-10-10, live): on a person's yes, the print file (each card as it prints: name, role, the email and phone its owner chose to show) and the names in the order are mailed to the workspace's printer from that person's own mailbox through Mail, so the outside-mail list, caps and suppression apply. The printer is a processor chosen by the workspace: DPA with it required before the first real order. The printer's name, email, city, lead time and price table are stored per workspace. Digital card (2026-10-10, live): a public page at /x/cards/c/<token>, off by default and turned on only by the card's owner, showing exactly what the printed card shows plus a vCard. The token is an HMAC of the server key; only its sha256 is stored. A new link or turning it off kills the old one at once; optional 30/90/365-day end. No visit is counted, logged or tied to the person; noindex, no-store, no-referrer; rate limited per address in memory only. Print proofs (2026-10-10): each order keeps the exact PDF approved at proposal (the card data it shows) with its sha256, and mails those bytes; kept with the order. Photos (2026-10-10): a person's own photo, added only by them from their own files, re-encoded by the server (600 px JPEG, all metadata including location removed), hidden or deleted by them alone; printed only on photo designs and on their public digital card if that card shows it. Signature: the card's visible lines can be copied into the person's own Mail signature",
        "P2 expenses (Capital Hub, 2026-10-10): vendor, amount in minor units, currency, budget, source (e.g. a print order), who recorded it; never edited or deleted, a void moves the budget back and keeps the record",
        "P0 Reps call transcripts (2026-10-10): every call (sandbox, website button, later phone) keeps a sealed (Fernet) transcript that expires with the workspace retention setting (default 30 days); the consent text says so (version 2026-10-10)",
        "P1 Reps call records and wrap-ups: channel, version, duration, outcome, and a summary/qualification/next step written by the workspace's own chat model from the transcript; kept with the record",
        "P1 Reps booking on the call (2026-10-28, off unless the agent's owner turns it on): the caller's name and email as said on the call, a Meet meeting in the owner's calendar, one email invite to that address",
        "P1 Reps website visitors: a random visitor id in the visitor's localStorage, their consent (text version and time) in reps_consent, and per-hour rate-limit counters in memory (IP addresses not stored)",
        "P1 leads saved by a rep: name, email, phone and company as the caller said them, into the shared people/org tables (kind contact, org stage lead)",
        "P0 inbound phone calls via the workspace own Twilio (caller number, streamed audio, sealed transcript)",
        "P1 Cards designer (2026-10-11): a person's own card documents (elements and theme), their card profile fields (pronouns, mobile, office address, tagline, LinkedIn, X, Instagram, GitHub, calendar link, and their own labelled fields; theirs alone to edit; printed and published only where they place them on a card); pictures they upload or have generated for a card (re-encoded, metadata stripped, the generation prompt kept, owner-only); invite-only links (the invited address, a hash of each link, a count of opens per link); a count of opens on the public link, nothing about who opened it. Fill-with-AI sends the person's own field names and the theme to the workspace's chat model; backdrop generation sends only the prompt to the image model",
        "P1 Bridge CRM: contacts, companies, deals, memos, follow-ups (members, Blue with a yes, CSV import)",
        "Bridge custom modules (workspace-defined records); smart import: file shape to the workspace AI, 20 sample rows only on opt-in per import, never stored",
        "Bridge lead funnels: public form leads with UTM and consent fields; delivery log 30 days; funnel keys hashed",
        "Blue charts and pictures: a chart holds no new data; a picture sends only the description to the workspace image model after a yes, saved to the person's Drive under Blue images, tagged AI generated with the model",
        "Query layer: Blue's read-only SQL over views that apply each app's own visibility for the asker, from a signed per-question context; no secret or sealed column in any view",
        "Calls meet the CRM: inbound numbers matched to contacts at connect (new number becomes a contact); the agent is briefed with CRM facts its owner may see; verify before disclosing",
        "Scribe: author profile, posts, voice samples, verified facts, untrue claims, identity anchor (may hold work-authorisation status, author-only); drafts and checks go to the workspace chat model, capped per day",
        "Scribe (2026-10-13): sealed LinkedIn tokens per author and company account; uploaded results; third parties typed or pasted by the author (comment targets, commenters, watched people, rivals, boost squad, newsletter readers with consent record); interview answers and stories (author-only, used only once verified); profile picture; public blog pages (noindex)",
        "Ping chat AI (2026-10-14): recent messages of a non-private conversation go to the workspace chat model when a person asks; the local model is gone",
        "P1 TurboTick customer page (2026-10-14, off until a workspace manager turns it on): name, email address and the request text typed by a person outside the workspace into a public form, their later replies, and a 1 to 5 rating with an optional note. A contact is created from the email address. The form says who receives it and that it is stored in India. Links are capability tokens stored only as hashes. An optional notice email goes to the requester when staff send a public reply, through Mail's relay (suppression list, allowlist, daily cap); it carries a link, not the reply. Submitting the form sends no email",
        "Workspace security (2026-10-14, kernel app/security): P1 sign-in records per device (network address, browser description, times) kept as account_session rows and on the append-only event record with every sign-in and failed sign-in; P0 two-step sign-in secrets (encrypted with the kernel key) and recovery codes (SHA-256 only); P0 single sign-on client secret per workspace (encrypted); SCIM provisioning token (SHA-256 only, shown once). Administrators read the audit trail of their own workspace only; nothing in it can be edited from the product. Retention of the audit trail is not yet enforced (open item)",
        "Calls from Bridge (2026-10-16): a member with the Make calls permission (reps.calls.dial, granted by an admin) calls a contact from the workspace's Twilio number, by hand, from the contact's record; the browser must be on the call within ten seconds or it is hung up, so nothing rings without a person. P0 call audio both ways: relayed through the kernel, recorded as a stereo WAV (the other side left, the member right), Fernet-encrypted at rest under Backend/var/reps-store/recordings, kept for the workspace's transcript retention (default 30 days) and deleted with it; the recording is heard only by the member who made the call and roles with reps.transcripts.read. The transcript is made after the call on this server by the local Whisper service Meet uses (the audio does not leave the machine for it), sealed like other call transcripts; the wrap-up is written from the transcript by the workspace's own chat model. P1 the number dialled (E.164) and who called it. Before anything is kept the other side hears a spoken notice that the call from the workspace is recorded and transcribed; the member sees a Recording mark for as long as it is. A contact tagged do not call (or dnc) is refused at the dial path.",
        "Champagne (campaigns, 2026-10-16): sequences and broadcasts to Bridge contacts, sent as ordinary mail from mailboxes the workspace chooses (a member's own or a shared mailbox they belong to; never someone else's), through Mail's own delivery, so they sit in Sent and replies thread back. P1 the consent register: append-only rows per address and person, channel (email, phone, SMS) and purpose (sales, marketing), status (granted, withdrawn, objected), basis, wording version, source, who recorded it and when; kept for the life of the workspace as the evidence of consent. P1 enrolments (who is in which sequence, step, state, the reason it waits or stopped), touches (sent, held, replied with the reply's kind, bounced, unsubscribed) and broadcast recipients; audiences are filters over Bridge or lists of person ids, resolved through the author's own Bridge reach. Every campaign mail carries the company name, a postal address and an unsubscribe link, plus List-Unsubscribe and List-Unsubscribe-Post (RFC 8058); the link is an HMAC-signed token (nothing stored), GET changes nothing, POST withdraws both purposes, suppresses the address in Mail's list and stops every enrolment. Before each step the kernel reads, inside the same workspace, recent inbound mail and Reps calls with the person, their urgent tickets, agreements out for their signature, overdue invoices for their company, meetings with them and late-stage deals, to hold the step; nothing is copied. AI: the workspace's own chat model drafts sequences from a brief (the brief only), personalises one email from the template and these Bridge fields only (name, company, title, city, lifecycle, sender name), and sorts replies (the reply's subject and up to 3,000 characters of its body); a personalised email waits for a person's yes unless the sequence owner chose otherwise, and anything flagged (a number, link or address not in the template or the record) always waits. An AI call step hands the person to a Reps agent from the workspace number only with a recorded phone consent, never to Indian numbers.",
        "Designer (design studio, 2026-10-16): the workspace brand kit (name, colours, fonts, logos, a line on its voice); pictures members upload (re-encoded, metadata stripped), make with the workspace image model (the prompt kept, labelled AI with the model, a real person's likeness refused in the prompt) or cut out on this server (background removal runs locally, no provider); designs and their exports (into the member's own Drive, and kept as images for email; an export that contains an AI picture is tagged so); fonts the workspace uploads, accepted only with a licence statement recorded with who uploaded it. Pictures and fonts are served at signed, unguessable addresses so emails can show them; a removed picture leaves the library but still draws where it is already used, including sent emails. Words from a brief and drafting a design send the brief and the brand voice to the workspace chat model; lettering sends only the words and the style to the image model.",
        "Designed campaign emails (2026-10-16): blocks rendered to email-safe HTML with a plain-text copy of the same words; a raw HTML block is cleaned with nh3 (no scripts, forms, frames or event handlers); pictures load from Designer's signed addresses, with no tracking pixel and no open tracking; the footer with company, postal address and unsubscribe is added by the send path, never by a design.",
        "Designer outside pictures and 3D (2026-10-16): stock photos (Openverse public domain; Unsplash and Pexels when keys are set), GIFs and stickers (GIPHY) and 3D models (Poly Haven, CC0) are hotlinked, never stored: a design keeps the address and the credit; the kernel sends only the search words to the provider, but a viewer's browser loads the picture or model from the provider, so the provider sees that viewer's IP address and user agent (also when a designed email shows one). Workspaces may upload their own 3D models (.glb, checked to be glTF 2.0, up to 30 MB, kept like pictures, signed addresses).",
        "P1 DevStudio discovery (2026-10-17): a brief per app project (who it is for, the customer journey as a flowchart, screens, integrations, chosen template and look, rough HTML mock-ups and example customer messages written by the builder); each person's stated comfort with code (none, some, developer), which sets how the builder talks to them and how carefully it works. Things a person attaches to the chat from Drive or any other app are linked to the project, read as that person, and their contents (for a record, what its own app shows, which can include contacts' personal data) are written to the project's working copy and sent with the conversation to the coding tool's provider, which is the founder's own Claude Code or Codex account",
        "P0 integration credentials (2026-10-18): OAuth tokens or API keys for outside software an org admin connects, Fernet-encrypted, never returned or logged, every use audited, revoked on removal",
        "P0 integration routes (2026-10-18): personal keys a customer makes in their own software (HubSpot, Notion, GitHub and others), kept in the same encrypted credential vault; export files (Slack, Salesforce, HubSpot, Notion, Google Takeout, QuickBooks, Xero) read once from the admin's own Drive, only the mapped columns kept, nothing logged; Google Takeout and Gmail with an app password copy a whole mailbox into Mail",
        "P1 beta workspaces (2026-10-19, built, not open): a free workspace for the first 100 companies, up to 25 people, no clock; sign-up by email code with the beta terms version, an 18-or-older business declaration and a region tag; the workspace brings its own AI provider key (P0, encrypted), so content goes to the customer's own provider; release variables (DevStudio): per-environment values and secrets (P0, encrypted, never read back) and links that read workspace data as the admin who made them",
        "Beta by invitation (2026-10-19): single-use invite codes (operator table, admin-only, looked up by a keyed hash, kept encrypted for re-sending, the user's email stored only as a keyed hash); each early-access request (email and one sentence) is also mailed to the team mailbox (FS_BETA_REQUESTS_TO, default founder@freedomlabs.in) through Resend in the US, disclosed in the early-access privacy notice ea-2026-10-19",
        "P1 records synced with outside software (2026-10-18): CRM, calendar, files and received mail copied both ways through each app's own functions; pairings keep ids and hashes; mail is read only into a mailbox of the connection's own",
        "P1 test-account sign-up guards (2026-10-18): HMAC of the email, company domain, start and deletion times; outside any workspace, admin connection only; 90-day cooldown",
        "P1 test-account extension requests (2026-10-18): the reason and a usage summary, ticketed into Supernatural's own workspace",
        "P0 app gateway tokens (2026-10-18): SHA-256 and prefix, shown once or installed encrypted, revocable; call log of ids and codes only",
        "P1 outside-link guests (2026-10-28): the name and email a visitor types before opening a shared document, sheet, file, design or film, with first and last visit, number of opens and number of changes (share_guest); the link itself is a SHA-256 of its token, its access, expiry and who made it (share_link). Guests' comments and versions carry their guest id in Word, Matrix, Present and Designer, and Drive file versions; no guest content goes to an AI provider",
        "P1 version history (2026-10-28): earlier states of Designer designs and Shakespeare film plans, with who saved each (designer_design_version, shakespeare_production_version), kept until the design or film is deleted",
        "P1 Legal findings (2026-10-28): proposals read without AI from the person's own Drive files, PDF first pages, registry and tax mail, Sign envelopes and Capital addresses, each with a source and an evidence snippet of up to 400 characters (legal_record); accepted tax and registry numbers on legal_company.identifiers; matters (legal_matter) with investor or hire details"
      ],
      "modules": [
        "M4",
        "M5",
        "M6",
        "M7",
        "M9",
        "M16"
      ],
      "regimes": [
        "DPDP Act 2023 and Rules 2025",
        "GDPR and UK GDPR with SCCs or IDTA (data stored in India)",
        "FTC Act section 5",
        "CAN-SPAM and PECR",
        "ESIGN and BSA 2023 section 63 when Sign is built",
        "GST, UK and EU VAT",
        "CERT-In directions",
        "EU AI Act Article 50",
        "ESIGN, UETA, UK eIDAS (simple), IT Act 2000 s10A and First Schedule exclusions (Sign)",
        "copyright, right of publicity and synthetic-media disclosure for generated video (Shakespeare): YouTube altered-content disclosure, Meta AI labels, India synthetic-media rules, Tennessee ELVIS Act; SIL Open Font License for bundled fonts",
        "MIT licence for the bundled illustration library (Shakespeare): Microsoft Fluent Emoji, flat set, via fluentui-emoji 1.3.0. No attribution or share-alike duty passes to a customer's export; the licence text ships with the product"
      ],
      "ai": "BYOK per tenant. Any OpenAI-compatible endpoint including self-hosted vLLM, plus Anthropic, OpenAI, Gemini, Bedrock, Azure, OpenRouter. Local Ollama is the default and the default embedder. This is an approved exception to the local-only standard because the tenant chooses and pays for the provider. No RM-paid key exists in the product.",
      "red_flags": [
        "multi-tenant isolation is the whole product: every table needs forced RLS",
        "tenant data leaves the deployment to whichever provider the tenant configures, so the egress must be disclosed per role",
        "contacts are created from mail headers and meeting attendees without those people signing up",
        "the agent can act on a person's behalf, so the actor on outbound artefacts must be configurable and always logged",
        "money is gated on an executed contract (Law 5) and must stay gated",
        "automated sends must not land on a thread a person is working (Law 6)",
        "an API key is a credential a customer will paste into scripts, CI and agents, so leak paths (logs, exports, browsers, git) are the risk, not the key store",
        "Shakespeare shows the tenant's chosen model rendered frames of an ad, which carry the customer's logo and unreleased creative, so the egress page must name frames for the director role",
        "a font embedded in a Lottie or SVG export is redistributed, so an uploaded font needs an embedding licence the product cannot verify",
        "an uploaded SVG can carry script, so it is sanitised or rasterised and never served inline from the app origin",
        "Shakespeare imports SVG, which is markup somebody else wrote: scripts, links, images, foreign content and styles are never read, a drawing that needs them is refused by name, and nothing from a file is ever placed in a page as markup",
        "Reps sends what a caller says to the tenant's chosen speech, chat and voice providers in real time, and an agent's API tools make outbound HTTP calls from the kernel",
        "connected IMAP accounts copy a person's outside mailbox (third parties' messages) into the platform; IMAP/SMTP servers are reached only at checked public addresses over TLS",
        "rmmail.in is shared between RM Mail and Supernatural; a name RM Mail creates later that Supernatural already holds would take that person's inbound mail",
        "Reps now takes calls from the public through a website button: every visitor is told it is an AI and agrees (unticked box, versioned) before anything is sent; a publishable key works only for one agent, listed origins, the live version and a daily cap",
        "a rep mails recap emails to members of the public on its own (decided by the founder); they go through Mail (suppression, cap, outside-mail list) and are transactional only",
        "calls a member places from Bridge reach the public over phone lines and are recorded; the recording notice is the only consent, and DNC registries are not checked yet",
        "Champagne mails people outside the workspace in bulk in the workspace's name; consent by region is enforced at the send path, but the region comes from the country typed in Bridge or the plane region tag, and unknown is treated as needing consent"
      ],
      "must_do": [
        "register entry updated before the first external tenant",
        "provider egress page naming which data goes to which provider per role",
        "consent ledger and shared suppression list enforced at the send path",
        "tenant export and delete-tenant with a deletion event",
        "recording and transcript consent before Ping ships",
        "per-tenant Resend sending-domain verification before Mail ships",
        "nightly Postgres backups with a tested restore before the first tenant",
        "DPA template and sub-processor page listing tenant-chosen AI providers",
        "no per-token billing to customers; internal metering only",
        "git credential home stays separate from the agent credential home; only the kernel pushes",
        "tunnels and DNS records we create in a customer's Cloudflare account must be listable and deletable from the product",
        "agents run in a container with no network route: egress via an allowlist proxy, the kernel reachable only through a per-run unix socket, never a port other containers share",
        "a screenshot put in the chat is read by the tenant's chosen model like any other material, so the provider egress page must name it",
        "deleting a tenant or a project must take its chat attachments off disk, not only their rows",
        "the live kernel must not run FS_ENV=dev behind a public hostname: it trusts X-Tenant-Id/X-Person-Id as identity, which lets anyone act as anyone and lets a local agent open a privately shown value by other routes",
        "an API key is never stored or logged in clear, never returned after the one response that mints it, and never wider than the person who made it",
        "the developer documentation must not claim a security property the code lacks: encrypted in transit and at rest, never end-to-end or bank-grade",
        "developer.freedomlabs.in carries security.txt and links the trust pages; it is static and sets no cookies and no analytics",
        "MCP on a public hostname authenticates with an API key; it must never fall back to FS_MCP_TENANT/FS_MCP_PERSON outside FS_ENV=dev",
        "external signers see who is asking, the signature level per region, the India exclusions, the paper and decline options and exactly which four facts are recorded, before consent; the certificate prints the same statement",
        "the seal is a simple electronic signature with a hash chain and an RFC 3161 anchor; never call it a digital signature, Aadhaar eSign or PAdES until a SealProvider exists",
        "rates are compensation data: never on a list the whole workspace sees, never in an agent tool a non-admin can call",
        "Shakespeare ships only fonts under an open licence that permits embedding until a font-licence attestation exists; no font upload before that",
        "Shakespeare exports carry provenance metadata saying the piece was made with AI assistance, and a visible AI label once any generated image, audio or video source is added",
        "Shakespeare never clones a real person's voice or likeness; no generative voice or face source without written consent on file",
        "deleting a Shakespeare scene or its tenant takes the uploaded assets and the rendered files off disk, not only their rows",
        "scene ops from the model are validated against the typed op schema before they touch a document; model output is never executed or rendered unsanitised",
        "Shakespeare's asset library stays on licences that put no duty on the customer's output (MIT, ISC, Apache-2.0, OFL). No CC BY-SA or attribution-required art. The index records set, licence and source",
        "Shakespeare SVG upload and paste (shipped 2026-09-21): every drawing goes through the whitelist importer with a 300 KB cap, is refused by name when it needs anything unread, and only the engine's own re-serialization is stored, served or shown; thumbnails render as images, never as inline markup",
        "an asset the agent drew is recorded as made by the agent and labelled AI in the library; a customer is told a drawing pasted from another AI tool is theirs to clear for use",
        "Shakespeare asset_imagine sends the person's description and the scene's palette to the tenant's own image model (Gemini image, OpenAI images, or an OpenAI-compatible endpoint the tenant named); the picture is traced to vector shapes and only that serialization is stored; the asset is recorded as made by image:<provider>:<model> and labelled AI; the provider egress page must name asset descriptions for the image role",
        "Reps: a voice call starts only after the person ticks an unticked, versioned consent; the socket closes with 4409 without it, and the consent is withdrawable in the app",
        "Reps: every voice agent is told it is an AI and must say so when asked (EU AI Act Article 50); never write instructions that make one claim to be human",
        "Reps: stages are API providers only (Gemini, OpenAI, Groq, OpenRouter) from Settings, Voice; the egress page must name call audio (speech to text), transcript plus instructions plus document excerpts (chat model) and reply text (text to speech) per provider",
        "Reps: API tools run from the kernel, so they reach public addresses only (checked after DNS, no redirects); secret headers are encrypted and masked on every read",
        "Reps: no malware scan on document upload yet; add one before an external tenant uploads",
        "Reps: calls placed to the public over phone lines would bring TCPA, two-party recording consent and caller-ID rules; today Reps runs only in the browser for workspace members, and a telephony channel needs this entry updated first",
        "privacy notice names connected mail accounts, what is copied, how long it is kept, and that disconnecting forgets the password",
        "RM Mail must check Supernatural's names before creating an rmmail.in mailbox, or FS_MAIL_RESERVED_LOCALS kept in sync",
        "Gmail and Microsoft OAuth for connected accounts only after Google restricted-scope verification (CASA) and Microsoft publisher verification",
        "own-domain receiving needs the Resend webhook secret set and the egress page to name Resend for inbound mail",
        "Reps outbound calls only to people with recorded prior express consent for AI calls (TCPA artificial voice), never to suppressed numbers, and not to DND-registered Indian numbers; update this entry before any phone channel goes live",
        "privacy notice on any site carrying the Reps button: names the providers that hear the call, says a transcript is kept and for how long",
        "Reps phone: spoken AI and transcript notice, Twilio named on egress page, outbound off until consent, suppression and DND checks",
        "Bridge: notice for contacts who never signed up; erasure covers profile, committee, memos, follow-ups and soft-deleted rows; lawful-basis attestation on bought-list imports; no LinkedIn scraping",
        "Egress page: AI provider receives import column shape, and sample rows on opt-in",
        "Funnels: the workspace form shows its own notice and consent; marketing or calls to funnel leads only with that consent",
        "Blue pictures: egress page names picture descriptions for the image role; no real person's likeness; the AI generated tag travels with the file",
        "Query layer: egress page names query results (incl. own mail bodies) for the chat model; every new view ships with a parity test against its app",
        "Calls meet the CRM: privacy notice names number matching and auto-created contacts; egress page names caller CRM facts for voice and chat models; erasure clears person id on handoffs",
        "Scribe: egress page names author facts, anchor and post text for drafting and scoring; a person approves every post; integrity verdict is advisory; erasure clears profile, posts, samples, facts, anchor",
        "Scribe (2026-10-13): official LinkedIn APIs only, nothing reads or scrapes LinkedIn; a person approves every post, autopilot drafts only; claim before send, no self retry; newsletter sending off until a marketing stream and region consent exist; boost mail via Mail policy only, member consent record owed; public blog needs privacy, terms, takedown before indexing; verify or strip reach-rule citations; no upload malware scan yet",
        "Calls from Bridge (2026-10-16): before an external tenant uses it, decide with counsel whether the spoken recording notice (Twilio text-to-speech) counts as an artificial voice under the TCPA for calls to US mobiles, and whether staying on after the notice is enough consent in two-party-consent US states and the EU or a spoken yes is needed; telemarketing calls must be checked against the US National Do Not Call Registry and India's NCPR (DND) at the dial path, which today only honours a do-not-call tag; a phone suppression list with opt-out capture is owed; the egress page names Twilio for outbound call audio and dialled numbers; the privacy notice says calls from the workspace are recorded and transcribed and for how long; erasure of a person must delete their call recordings, not only the rows.",
        "Champagne (2026-10-16): the privacy notice names campaign mail, the consent register, reply sorting by the workspace's model, and the checks across apps before each step; the egress page names reply text, briefs and the personalisation fields for the chat model role; a workspace sending campaigns uses a domain it verified, not rmmail.in (M10); erasure of a person deletes their enrolments, touches, recipients and reviews but keeps consent withdrawals and the suppression as the record of their objection (counsel to confirm the retention basis); the region table (US opt-out; UK and EU sales on legitimate interest, marketing on consent or soft opt-in; India, Canada and unknown on consent) needs counsel sign-off before an external tenant; CASL and the US state telemarketing rules are not modelled beyond consent; SMS steps are not built and need DLT templates (India) and TCPA consent with STOP (US) before they are.",
        "Designer: a takedown that stops a picture drawing everywhere, sent emails included (removal today only leaves the library); say in the terms that a workspace uploading a font warrants its licence.",
        "Designer: name Openverse/StockSnap, Unsplash, Pexels, GIPHY and Poly Haven on the sub-processor page as services a viewer's browser contacts directly; keep the photographer credit with every hotlinked photo.",
        "DevStudio: the privacy notice names that a project's chat, brief and attached records go to the founder's own coding tool provider; export and erasure walk studio_brief, studio_person and message refs",
        "Integrations: register line per provider before it is offered; Google verification and security assessment for gmail.readonly and drive.readonly; providers on the egress page with DPAs; undo must not capture credential audit or oauth state",
        "Integration routes: the connect flow for Google Takeout and Gmail app passwords must say whose mailbox is copied and get that person's consent when it is not the admin's own; a register line per route before it is offered",
        "Beta: before FS_BETA_SIGNUP=1, publish the beta terms (draft FounderStack/legal-drafts/terms.html) and the privacy notice's beta workspaces section (draft legal-drafts/privacy-beta-section.html) after review; a DPA for business customers; the India grievance officer page; sign-up codes share the 100-a-day Resend cap with all suite mail and are refused in words when it is reached",
        "Test accounts: terms page, AI receipt retention per region, backup window in the notice, approved exception before an RM-paid model key, Resend cap before FS_TEST_SIGNUP=1",
        "App gateway: 180-day purge of the call log; network allowlist for app tokens",
        "Outside links: purge share_guest rows a set time after their link ends (today they stay until the workspace is erased); add guests to the privacy notice and to rights export and erasure; DSA and Online Safety Act notice-and-action for content shared to EU and UK viewers",
        "Legal findings: privacy notice line that Legal reads the person's own Drive and mail for registry and tax documents; evidence snippets in rights export and erasure; a retention for dismissed findings",
        "before external activation of Capital's 2026-10-28 additions and Reps booking: privacy notice names quotes, payment links and booked meetings; Reps consent text says an agent may book and email an invite; tax review of paid-on-the-spot invoices with no named customer per region"
      ]
    },
    {
      "id": "safenet",
      "name": "SafeNet (personal safety alarm and responder network)",
      "tier": 1,
      "status": "pre-launch",
      "path": "RM Portfolio/safenet",
      "url": "https://safenet.freedomlabs.in",
      "regions": [
        "IN"
      ],
      "data_classes": [
        "P0 precise location (requesters during alarms; responders while available or responding)",
        "P0 audio recordings",
        "P1 display name",
        "P1 responder name",
        "P1 responder saved areas (coarse, about 550 m)",
        "P1 trusted-contact phone numbers (on device only)",
        "P2 install id, push token, consent records, abuse reports",
        "P0 background location permission (used only during alarms and trips)",
        "P1 responder photo",
        "P1 physical activity (steps during alarms only)",
        "client-side encrypted phone-move backup"
      ],
      "modules": [
        "M5",
        "M11",
        "M16"
      ],
      "regimes": [
        "DPDP",
        "SPDI",
        "IT Act s66E and s72",
        "IT Rules 2021 grievance officer",
        "CERT-In",
        "Consumer Protection Act",
        "Google Play SMS and Call Log policy",
        "Google Play foreground service policy",
        "BNSS lawful access",
        "Google Firebase Cloud Messaging terms",
        "Good Samaritan guidelines (MoRTH 2015, Supreme Court 2016)"
      ],
      "ai": "none",
      "red_flags": [
        "safety-critical: a missed alarm is the worst failure; no promise of rescue in any copy",
        "evidence is write-once and duress-flagged incidents are on legal hold, which limits erasure; needs counsel sign-off",
        "records audio of third parties near the user during an alarm",
        "ops triage is founder on-call only; no 24x7 paging yet",
        "backups on the same host (different disk), not off-box",
        "grievance officer and contact emails not yet filled on trust pages",
        "name SafeNet may conflict with an existing security-product trademark",
        "crowd network: a bad actor can join as a responder; unverified responders see only a 100 m area, exact pin only after in-person verification",
        "abuse reports can be used to silence a real victim's crowd channel; needs 2 reporters or 1 verified, contacts and ops never paused",
        "responder volunteer liability and safety need counsel",
        "background location, special-use and full-screen-intent declarations are Play review risks; video demos required",
        "the microphone cannot start from the background on Android; hands-free alarms record audio only once the screen is on"
      ],
      "must_do": [
        "per-purpose consent for location, audio and SMS, none pre-ticked (built)",
        "18+ gate (built)",
        "no analytics or ad SDKs (built)",
        "P0 fields encrypted at rest with access logging (built)",
        "in-app deletion with 7-day delay and legal hold for duress incidents (built)",
        "fill grievance officer and support contacts before launch",
        "counsel review of terms, evidence retention and law-enforcement request process",
        "DPIA on file before first real user",
        "Play Data safety form and SMS declaration must match docs/PLAY_CONSOLE.md",
        "off-box encrypted backups with a tested restore",
        "separate consents for crowd alerts and for joining as a responder (built)",
        "push payload carries no location or name (built, tested)",
        "in-person ID check before marking a responder verified; record the note",
        "Firebase: Analytics off, Messaging auto-init off (built)",
        "prominent disclosure before the background-location prompt (built on the Hands-free screen)",
        "trip data deleted when the trip ends (built, tested)",
        "phone-move backup is encrypted on the phone; the server cannot read it (built, tested)"
      ]
    },
    {
      "id": "serverpro",
      "name": "ServerPro (host control panel)",
      "tier": 2,
      "status": "internal",
      "path": "RM Internal/ServerPro",
      "url": "http://127.0.0.1:8090 (localhost; tunnel exposure optional)",
      "regions": [
        "internal"
      ],
      "data_classes": [
        "P0 admin credential hash and TOTP seed",
        "P0 API keys (hashed)",
        "P0 Cloudflare API token (env)",
        "P1 audit log (actor, action, IP)"
      ],
      "modules": [
        "M16",
        "M9"
      ],
      "regimes": [
        "CERT-In 180-day logs",
        "OWASP ASVS L2"
      ],
      "ai": "none (MCP endpoint lets an external agent call tools; destructive tools gated by MCP_ALLOW_DESTRUCTIVE)",
      "red_flags": [
        "can stop client VMs (tenant1) and expose ports publicly: every action audit-logged",
        "sudoers rule grants systemctl start/stop/restart of any system unit"
      ],
      "must_do": [
        "admin TOTP enabled before tunnel exposure",
        "API keys rotated when a Claude session is shared",
        "MCP_ALLOW_DESTRUCTIVE stays off by default",
        "audit retention 180 days",
        "Cloudflare token scoped to DNS:Edit on owned zones only"
      ]
    },
    {
      "id": "pm-pilot",
      "name": "PM Pilot",
      "tier": 5,
      "status": "building-single-user",
      "path": "RM External/PM Pilot",
      "url": "",
      "regions": [
        "operator personal use; US (Florida) user; public-launch regions not approved"
      ],
      "data_classes": [
        "P0 uploaded meeting transcripts and notes (third-party communications)",
        "P1 projects, stakeholders, decisions, risks, commitments",
        "P1 growth profile and coaching reflections of one user",
        "P0 optional BYOK API key (Fernet at rest)",
        "classification tag on every project, meeting and note"
      ],
      "modules": [
        "M5",
        "M14",
        "M16"
      ],
      "regimes": [
        "Google Gemini API paid-tier terms",
        "Florida all-party recording consent (934.03)",
        "Florida public records (ch. 119) via the employer",
        "DPDP and SPDI"
      ],
      "ai": "Google Gemini Flash-Lite and Flash, paid tier, operator key; BYOK optional. Operator-requested cloud exception 2026-09-15. Transcript text goes to Google; audio never enters the app. Every claim carries a mechanically verified quote; user accepts before anything is recorded; no inference of owners, dates or stances.",
      "red_flags": [
        "employer (US public utility) data before written authorisation",
        "audio capture or recording",
        "auto-merge of commitments",
        "summaries without citations"
      ],
      "must_do": [
        "consent confirmation at transcript upload",
        "AI disclosure where output appears",
        "accept step before record",
        "provenance retained on raw delete",
        "classification-filtered retrieval",
        "privacy notice, AI page, export and delete before any second user"
      ]
    },
    {
      "id": "rm-editor",
      "name": "RM Editor-Pro (Chalkboard)",
      "tier": 2,
      "status": "live on its own host; building inside Supernatural",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/chalkboard (kernel) and RM Orbit/FounderStack/01-Productivity/Chalkboard (frontend, own-host backend)",
      "url": "https://editor.freedomlabs.in",
      "regions": [
        "global"
      ],
      "data_classes": [
        "board content, P1 and may contain P0 (chalk_board, chalk_board_version)",
        "pictures on boards, P1 and may contain P0 (chalk_board_image, bytes in Drive's blob store)",
        "who a board is shared with: person and address (chalk_board_member)",
        "view-only links stored as a sha256, expiry, revocation, a count of joins (chalk_board_share)",
        "per-person stars (chalk_board_star)",
        "live presence, in memory only"
      ],
      "modules": [
        "M5",
        "M2",
        "M6"
      ],
      "regimes": [
        "DPDP",
        "IT Rules",
        "DMCA 512",
        "Online Safety Act",
        "DSA",
        "CSAM reporting"
      ],
      "ai": "none inside Supernatural (helper not wired, says so); local ollama only on its own host; no cloud exception",
      "red_flags": [
        "board content may hold P0 and is not encrypted beyond the disk",
        "no malware or CSAM hash scan on pasted pictures",
        "a link with no end date is possible by the owner's choice",
        "noindex on the public board page is a script-set meta tag"
      ],
      "must_do": [
        "malware and CSAM hash scanning for pictures on shared boards",
        "scheduled trash purge (today: swept when someone trashes a board)",
        "rights export and erasure must walk the chalk_* tables",
        "server-side re-encode of pictures",
        "screen-reader pass with a real user",
        "M2 processor contract before any school tenant"
      ]
    },
    {
      "id": "rm-safe",
      "name": "RM Safe (was Wallet)",
      "tier": 2,
      "status": "building inside Supernatural",
      "path": "RM Orbit/FounderStack/Backend/app/capabilities/safe (kernel) and RM Orbit/FounderStack/02-Operations/Safe (frontend, standalone backend)",
      "url": "",
      "regions": [
        "global"
      ],
      "data_classes": [
        "P0 stored credential values, encrypted at rest, returned only by the reveal call (safe_entry.value_enc)",
        "P0 notes beside a value, encrypted at rest (safe_entry.notes_enc)",
        "P1 entry names, types, projects and tags, plain and searchable (safe_entry)",
        "P1 shared info list, values encrypted at rest (safe_shared_info)",
        "P1 access history: who added, revealed or deleted which entry and when, never a value (safe_audit)",
        "reveal count per person, in memory only"
      ],
      "modules": [
        "M16"
      ],
      "regimes": [
        "DPDP",
        "SPDI Rules",
        "CERT-In 180-day logs",
        "GDPR and UK GDPR",
        "FTC Act section 5"
      ],
      "ai": "none of its own; the workspace agent lists names, types, projects and tags and removes an entry as a confirmed plan; no tool returns or takes a value",
      "red_flags": [
        "one kernel key for every workspace, shared with session signing; no envelope encryption, no rotation path",
        "anyone with safe.write reveals any entry in the workspace; no per-entry policy, no two-person break-glass",
        "reveals are logged, nobody is alerted",
        "audit log is append-only for the app role only, not hash-chained",
        "reveal limit is in one process's memory",
        "development identity headers let a direct caller act as anyone"
      ],
      "must_do": [
        "close the development identity path before any real credential is stored",
        "envelope encryption with a per-workspace key held off the database host, and a tested rotation",
        "re-authentication or a second factor before reveal",
        "alert an admin on reveal and on the limit being hit",
        "per-entry access and two-person break-glass",
        "decide and publish audit retention",
        "add the vault to the provider-egress page (names and tags only)",
        "screen-reader pass of the reveal dialog with a real user"
      ]
    }
  ]
}
