{
  "about": "Key-systems catalog for the source repos. Capability-first tags grouped into Integration / Domain / Surface facets; the specific provider(s) are in 'vendors', and each tag lists the underlying key systems. 'tasks' is the number of tasks that touch that tag/system in that repo (aggregate counts only \u2014 no task contents). Use it to see which areas are well-covered vs thin when picking a diverse new task to build.",
  "facets": [
    "Integration",
    "Domain",
    "Surface"
  ],
  "repos": [
    {
      "repo": "Palolo",
      "tasks": 306,
      "tags": [
        {
          "tag": "Banking-Provider",
          "facet": "Integration",
          "definition": "Banking-as-a-service layer that provisions accounts/cards, moves money and runs identity \u2014 plus the in-repo provider seam and its fake. Via Solid.",
          "vendors": [
            "Solid",
            "Liquid (in-repo mock)"
          ],
          "tasks": 41,
          "systems": [
            {
              "system": "Solid BaaS",
              "definition": "Primary banking-as-a-service provider: opens accounts, issues cards, moves money, runs KYC.",
              "tasks": 36
            },
            {
              "system": "BaaS provider seam + Liquid/empty mocks",
              "definition": "The Provider interface + dispatch layer, and the in-repo fake providers (Liquid, empty) that tests swap in.",
              "tasks": 15
            }
          ]
        },
        {
          "tag": "Payroll-Providers",
          "facet": "Integration",
          "definition": "Payroll data integrations \u2014 member paycheck-connect and employer-side roster/pay providers, plus CSV import.",
          "vendors": [
            "Argyle",
            "Tartan",
            "Finch",
            "Atomic",
            "Sparrow"
          ],
          "tasks": 23,
          "systems": [
            {
              "system": "CSV payroll import",
              "definition": "In-house 'provider' ingesting employer payroll from uploaded CSV files.",
              "tasks": 8
            },
            {
              "system": "Argyle (member payroll)",
              "definition": "Worker-side paycheck-connection provider.",
              "tasks": 6
            },
            {
              "system": "Finch (employer payroll)",
              "definition": "Employer-side payroll roster/pay-data provider.",
              "tasks": 5
            },
            {
              "system": "Atomic (employer payroll + webhooks)",
              "definition": "Employer-side payroll provider; inbound webhooks with signature verification.",
              "tasks": 5
            },
            {
              "system": "Tartan (member payroll)",
              "definition": "Second worker-side paycheck-connection provider.",
              "tasks": 1
            },
            {
              "system": "Sparrow (employer payroll)",
              "definition": "Additional employer-payroll provider.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Bank-Account-Linking",
          "facet": "Integration",
          "definition": "Linking & verifying external bank accounts (processor tokens, balances). Via Plaid.",
          "vendors": [
            "Plaid"
          ],
          "tasks": 9,
          "systems": [
            {
              "system": "Plaid bank-linking",
              "definition": "External bank-account linking / verification for external accounts.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Cloud-Storage-Secrets",
          "facet": "Integration",
          "definition": "Cloud object storage + runtime secret fetching. Via AWS.",
          "vendors": [
            "AWS S3",
            "AWS Secrets Manager"
          ],
          "tasks": 8,
          "systems": [
            {
              "system": "AWS S3 + Secrets Manager",
              "definition": "Object storage (files/statements) + runtime secret fetching.",
              "tasks": 8
            }
          ]
        },
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 5,
          "systems": [
            {
              "system": "Twilio SMS",
              "definition": "Outbound SMS + phone-verification delivery.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Monitoring-Analytics",
          "facet": "Integration",
          "definition": "Observability & product analytics \u2014 APM/metrics + event tracking. Via New Relic + Mixpanel.",
          "vendors": [
            "New Relic",
            "Mixpanel",
            "Ahoy",
            "Blazer",
            "PgHero",
            "Flipper",
            "Sentry",
            "Slack"
          ],
          "tasks": 5,
          "systems": [
            {
              "system": "New Relic monitoring",
              "definition": "Server APM + custom events/metrics.",
              "tasks": 4
            },
            {
              "system": "Mixpanel analytics",
              "definition": "Client-side product-analytics event tracking.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "SendGrid email",
              "definition": "Outbound email delivery channel.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Benefit-Routing",
          "facet": "Domain",
          "definition": "The engine that routes an incoming deposit across a member's enabled benefits by priority.",
          "vendors": [],
          "tasks": 66,
          "systems": [
            {
              "system": "Transaction \u2192 perk routing engine",
              "definition": "Core engine routing an incoming deposit across perks by priority.",
              "tasks": 66
            }
          ]
        },
        {
          "tag": "Benefits-Framework",
          "facet": "Domain",
          "definition": "The benefit (\"perk\") extensibility spine \u2014 templates/instances, eligibility, opt-in \u2014 plus minor benefit types.",
          "vendors": [],
          "tasks": 59,
          "systems": [
            {
              "system": "Perks framework",
              "definition": "Perk templates/instances, eligibility, opt-in/approval, org-enabled categories.",
              "tasks": 50
            },
            {
              "system": "Minor perks (stream/auto/badge/referral/message)",
              "definition": "Smaller perk types: paycheck-stream, auto-perks, badges, app-referral, in-app messages.",
              "tasks": 16
            }
          ]
        },
        {
          "tag": "Accounts-Cards",
          "facet": "Domain",
          "definition": "Checking accounts, card issuance/state/statements, and merchant-category (MCC) classification.",
          "vendors": [],
          "tasks": 51,
          "systems": [
            {
              "system": "Financial accounts & cards",
              "definition": "Checking accounts, card issuance/state, card details/PIN tokens, statements.",
              "tasks": 51
            },
            {
              "system": "MCC merchant-category",
              "definition": "Merchant-category-code table + classification for card transactions.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Loans-Lending",
          "facet": "Domain",
          "definition": "Loan products + repayment holds and the in-house/Offbo loan-provider logic (amortization, balances).",
          "vendors": [],
          "tasks": 50,
          "systems": [
            {
              "system": "Loans & holds",
              "definition": "Loan perks + repayment holds routed at top priority.",
              "tasks": 50
            },
            {
              "system": "In-house loans provider",
              "definition": "In-house loan provider behind the loans interface.",
              "tasks": 7
            },
            {
              "system": "Offbo loans",
              "definition": "External loan-origination provider.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Organizations-Admin",
          "facet": "Domain",
          "definition": "Org/multi-tenancy setup, members/roles/invites, per-org config & feature flags, admin/impersonation/audit, activity feed.",
          "vendors": [],
          "tasks": 50,
          "systems": [
            {
              "system": "Member & org management (HQ)",
              "definition": "Employer org setup, members, roles, groups, invites, owners, notes/tags.",
              "tasks": 45
            },
            {
              "system": "Activity feed",
              "definition": "User-facing activity/event log.",
              "tasks": 5
            },
            {
              "system": "Feature flags",
              "definition": "Per-org feature-flag definitions/defaults gating behavior.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Payroll-Sync",
          "facet": "Domain",
          "definition": "Paycheck/roster ingestion from providers and pay-cycle computation.",
          "vendors": [],
          "tasks": 43,
          "systems": [
            {
              "system": "Payroll sync / paycheck ingestion",
              "definition": "Pulls member paychecks/roster from providers; computes pay cycles.",
              "tasks": 43
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 39,
          "systems": [
            {
              "system": "Member-facing notification pipeline",
              "definition": "Enqueue \u2192 channel selection \u2192 dispatch of member notifications across email/SMS/in-app.",
              "tasks": 32
            },
            {
              "system": "Reminders scheduler",
              "definition": "Scheduled reminder/nudge jobs on the queue.",
              "tasks": 8
            },
            {
              "system": "Email/SSR notification templates",
              "definition": "Separate Preact package that server-renders email/notification templates.",
              "tasks": 5
            },
            {
              "system": "Slack internal alerts",
              "definition": "Ops/internal notifications via Slack incoming webhooks.",
              "tasks": 3
            },
            {
              "system": "Zendesk help chat",
              "definition": "Client-side embedded support-chat widget.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Savings-Products",
          "facet": "Domain",
          "definition": "Employer-matched savings + interest/vesting.",
          "vendors": [],
          "tasks": 36,
          "systems": [
            {
              "system": "Savings (Save perk)",
              "definition": "Employer-matched savings pot + interest.",
              "tasks": 36
            }
          ]
        },
        {
          "tag": "Earned-Wage-Access",
          "facet": "Domain",
          "definition": "Advances against earned wages, repaid from the next deposit.",
          "vendors": [],
          "tasks": 33,
          "systems": [
            {
              "system": "Earned-wage access (advances)",
              "definition": "'My Pay' advances against earned wages, repaid from next deposit.",
              "tasks": 33
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 30,
          "systems": [
            {
              "system": "Sessions & credential auth",
              "definition": "Login sessions, argon2 password hashing, session store.",
              "tasks": 30
            }
          ]
        },
        {
          "tag": "Underwriting-Risk",
          "facet": "Domain",
          "definition": "Income-stability estimation + loan-decision verdicts from paycheck history (the analyze/risk layer).",
          "vendors": [],
          "tasks": 20,
          "systems": [
            {
              "system": "Underwriting / risk analysis",
              "definition": "Income-stability estimation + loan-decision verdicts from paycheck history.",
              "tasks": 20
            }
          ]
        },
        {
          "tag": "MFA-OTP",
          "facet": "Domain",
          "definition": "Second-factor auth \u2014 TOTP + SMS OTP, verification tokens, enable/toggle/disable.",
          "vendors": [],
          "tasks": 17,
          "systems": [
            {
              "system": "MFA/OTP & verification tokens",
              "definition": "Auth factors (email/phone), OTP + verification-token issuance/verification.",
              "tasks": 17
            }
          ]
        },
        {
          "tag": "KYC-Compliance",
          "facet": "Domain",
          "definition": "Identity/business verification (KYC/KYB) incl. beneficial owners, ID documents, onboarding address autocomplete.",
          "vendors": [],
          "tasks": 13,
          "systems": [
            {
              "system": "KYC/KYB compliance",
              "definition": "Identity verification of users (and businesses) via the BaaS provider.",
              "tasks": 13
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 82,
          "systems": [
            {
              "system": "Prisma data layer",
              "definition": "Prisma client, query modules, and query middlewares (dayjs, defaults, zod).",
              "tasks": 35
            },
            {
              "system": "Shared Zod schema / API contracts",
              "definition": "Zod endpoint specs, params, pagination, DB/service schema shared by client + server.",
              "tasks": 35
            },
            {
              "system": "Shared library (models + helpers)",
              "definition": "Business-logic model helpers + cross-cutting helpers (dates, decimal, retry, format).",
              "tasks": 25
            },
            {
              "system": "Prisma codegen pipeline",
              "definition": "@include mixin expander + Prisma\u2192Zod generator producing schema.prisma and shared/schema/db.",
              "tasks": 10
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 78,
          "systems": [
            {
              "system": "Preact SPA client (app + hq)",
              "definition": "Preact/Vite SPA: employee portal (/app) + admin portal (/hq), custom router, SWR hooks.",
              "tasks": 78
            }
          ]
        },
        {
          "tag": "Backend-Architecture",
          "facet": "Surface",
          "definition": "Request/API framework & business-logic layering \u2014 Express typed endpoints + rate limiting; Rails multi-audience API + ActiveInteraction service objects.",
          "vendors": [],
          "tasks": 47,
          "systems": [
            {
              "system": "Express REST API + typed endpoint framework",
              "definition": "Express app, router, error handling, typed endpoint/handler abstraction.",
              "tasks": 44
            },
            {
              "system": "Rate limiting",
              "definition": "Token-bucket rate limiter middleware (default + stricter auth limiter).",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 19,
          "systems": [
            {
              "system": "SQS worker process",
              "definition": "Long-running process consuming the queue and executing registered jobs.",
              "tasks": 19
            },
            {
              "system": "AWS SQS queue",
              "definition": "Message queue backing all async jobs (Localstack in dev).",
              "tasks": 11
            }
          ]
        },
        {
          "tag": "Dev-Infra-Testing",
          "facet": "Surface",
          "definition": "Deploy/infra (k8s, Terraform, k6 load) and the Playwright E2E harness.",
          "vendors": [],
          "tasks": 19,
          "systems": [
            {
              "system": "Infra / deploy / load testing",
              "definition": "k8s manifests, Atmos/Terraform stacks, k6 load scripts, autopatch scripts.",
              "tasks": 18
            },
            {
              "system": "E2E test harness",
              "definition": "Playwright end-to-end suite with its own env fixtures.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Mobile-App",
          "facet": "Surface",
          "definition": "The native mobile client \u2014 Palolo's Swift iOS WebView wrapper + native Plaid LinkController.",
          "vendors": [],
          "tasks": 6,
          "systems": [
            {
              "system": "iOS native wrapper",
              "definition": "Swift app wrapping the web client in a WebView + native Plaid LinkController.",
              "tasks": 6
            }
          ]
        }
      ]
    },
    {
      "repo": "ZenBill",
      "tasks": 138,
      "tags": [
        {
          "tag": "Card-Payments",
          "facet": "Integration",
          "definition": "Credit-card collections \u2014 identities, merchants, payment instruments, card transfers. Via Finix.",
          "vendors": [
            "Finix",
            "Stripe",
            "Pay"
          ],
          "tasks": 21,
          "systems": [
            {
              "system": "Finix credit-card",
              "definition": "Credit-card collections (identities, merchants, payment instruments, card transfers).",
              "tasks": 21
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 19,
          "systems": [
            {
              "system": "Mailers",
              "definition": "Transactional email across every domain (Rails mailer layer; provider-agnostic).",
              "tasks": 19
            }
          ]
        },
        {
          "tag": "ACH-Payments",
          "facet": "Integration",
          "definition": "The ACH bank-to-bank money-movement rail (execution + webhook reconciliation). Via Dwolla.",
          "vendors": [
            "Dwolla"
          ],
          "tasks": 14,
          "systems": [
            {
              "system": "Dwolla ACH",
              "definition": "ACH bank-to-bank money movement (core rail); transfer execution + webhook reconciliation.",
              "tasks": 14
            }
          ]
        },
        {
          "tag": "Accounting-Sync",
          "facet": "Integration",
          "definition": "Two-way accounting sync (vendors, customers, GL, bills, payments) + OAuth lifecycle. Via QuickBooks Online.",
          "vendors": [
            "QuickBooks Online"
          ],
          "tasks": 9,
          "systems": [
            {
              "system": "QuickBooks Online sync",
              "definition": "Two-way accounting sync (vendors, customers, GL categories, banks, bills, payments) + OAuth lifecycle.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Bank-Account-Linking",
          "facet": "Integration",
          "definition": "Linking & verifying external bank accounts (processor tokens, balances). Via Plaid.",
          "vendors": [
            "Plaid"
          ],
          "tasks": 5,
          "systems": [
            {
              "system": "Plaid bank-linking",
              "definition": "Bank-account linking + verification; issues processor tokens consumed by Dwolla.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Document-OCR",
          "facet": "Integration",
          "definition": "OCR extraction of header fields + line items from uploaded/emailed documents. Via base64.ai.",
          "vendors": [
            "base64.ai"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Base64.ai OCR",
              "definition": "Invoice OCR: extract header fields + line items from uploaded/emailed documents.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Twilio OTP SMS",
              "definition": "SMS delivery for two-factor / phone verification.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Subscription-Billing",
          "facet": "Integration",
          "definition": "The product's OWN premium/subscription billing (not customer money movement). Via Stripe.",
          "vendors": [
            "Stripe"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "Stripe subscriptions",
              "definition": "ZenBill's OWN premium/subscription billing (not customer money movement).",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Money-Transfers",
          "facet": "Domain",
          "definition": "Money-movement lifecycle: the Transfer state machine, polymorphic funding sources, recurring/scheduled, collections/AR, approvals, paper-check.",
          "vendors": [],
          "tasks": 88,
          "systems": [
            {
              "system": "Transfers core (AASM state machine)",
              "definition": "Transfer = inbound(request)/outbound(payment) with rich AASM approval\u2192schedule\u2192send\u2192settle lifecycle.",
              "tasks": 74
            },
            {
              "system": "Recurring / scheduled transfers",
              "definition": "Repeat transfers expanded into dated children; date-driven scheduling of one-offs.",
              "tasks": 26
            },
            {
              "system": "Collections / AR",
              "definition": "Inbound 'requests' (money-in): accept/reject a collection, send reminders.",
              "tasks": 20
            },
            {
              "system": "Approvals",
              "definition": "Single-step payout approval gate (approve/deny), tied to role/named-approver.",
              "tasks": 19
            },
            {
              "system": "Funding sources / routing",
              "definition": "Polymorphic funding sources (bank, card, paper check) + default inbound/outbound routing + counterpart matching.",
              "tasks": 15
            },
            {
              "system": "Paper-check disbursement",
              "definition": "Mailed paper check as a funding source + admin settlement.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Contacts-Onboarding",
          "facet": "Domain",
          "definition": "Vendors/customers (recipients) management + the tokenized counterparty self-onboarding portal.",
          "vendors": [],
          "tasks": 31,
          "systems": [
            {
              "system": "Contact / recipient management",
              "definition": "Vendors/customers CRUD, soft-delete, default funding sources, QBO-vendor linkage.",
              "tasks": 23
            },
            {
              "system": "Contact onboarding portal",
              "definition": "Separate authed portal for a counterparty to self-onboard (connect bank, submit W-9) via tokenized link.",
              "tasks": 11
            }
          ]
        },
        {
          "tag": "Organizations-Admin",
          "facet": "Domain",
          "definition": "Org/multi-tenancy setup, members/roles/invites, per-org config & feature flags, admin/impersonation/audit, activity feed.",
          "vendors": [],
          "tasks": 29,
          "systems": [
            {
              "system": "Organizations / multi-tenancy",
              "definition": "Tenant boundary: org + user membership, setup, per-org config (premium, timezone, custom_url).",
              "tasks": 19
            },
            {
              "system": "Admin / impersonation / audit",
              "definition": "Internal admin: user impersonation, org approval/rejection, activity audit feed, manual check settlement.",
              "tasks": 12
            }
          ]
        },
        {
          "tag": "Authorization-Permissions",
          "facet": "Domain",
          "definition": "Role/capability-based access control (abilities keyed off org membership).",
          "vendors": [
            "Pundit"
          ],
          "tasks": 26,
          "systems": [
            {
              "system": "Authorization / RBAC",
              "definition": "CanCan ability rules keyed off users_organization capability flags.",
              "tasks": 26
            }
          ]
        },
        {
          "tag": "Webhooks-Idempotency",
          "facet": "Domain",
          "definition": "Inbound provider-webhook ingestion (verification, dedup, async processing) + idempotency keys for retry-safe money moves.",
          "vendors": [],
          "tasks": 21,
          "systems": [
            {
              "system": "Idempotency / financial safety",
              "definition": "Idempotency keys with recovery-points making money-moving requests safe to retry.",
              "tasks": 16
            },
            {
              "system": "Webhook ingestion / event processing",
              "definition": "Inbound provider webhooks persisted as event rows, then processed async & idempotently (dedup on event_id).",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Invoicing-Billing",
          "facet": "Domain",
          "definition": "Invoice + line-item lifecycle (create/send/receive/pay) and the inbound-email invoice inbox.",
          "vendors": [],
          "tasks": 18,
          "systems": [
            {
              "system": "Invoicing / billing",
              "definition": "Invoices + line items: create/send, receive, draft\u2192ready\u2192paid, link to a transfer, archive.",
              "tasks": 18
            },
            {
              "system": "Invoice inbox (inbound email \u2192 OCR)",
              "definition": "Per-org email address receives invoices; Action Mailbox routes + OCR-parses attachments w/ dedup.",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 11,
          "systems": [
            {
              "system": "Auth / sessions",
              "definition": "Login, password reset, email verification, server-side session records + active-session tracking.",
              "tasks": 11
            }
          ]
        },
        {
          "tag": "KYC-Compliance",
          "facet": "Domain",
          "definition": "Identity/business verification (KYC/KYB) incl. beneficial owners, ID documents, onboarding address autocomplete.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "KYC / KYB verification",
              "definition": "Business-identity + beneficial-owner verification with uploaded ID documents.",
              "tasks": 7
            },
            {
              "system": "Google Maps autocomplete",
              "definition": "Address autocomplete during KYC/onboarding.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Tax-Forms",
          "facet": "Domain",
          "definition": "Contractor tax-form collection (W-9: tax classification, encrypted EIN/SSN) \u2014 distinct from KYC.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "W-9 / tax forms",
              "definition": "Collect contractor W-9 (name, tax classification, encrypted EIN/SSN) per contact.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "MFA-OTP",
          "facet": "Domain",
          "definition": "Second-factor auth \u2014 TOTP + SMS OTP, verification tokens, enable/toggle/disable.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "OTP / 2FA",
              "definition": "TOTP + SMS second factor (provisioning URI, enable/toggle, validate).",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Intercom support",
              "definition": "Customer-support / engagement sync (org attrs pushed to Intercom) + frontend widget.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Backend-Architecture",
          "facet": "Surface",
          "definition": "Request/API framework & business-logic layering \u2014 Express typed endpoints + rate limiting; Rails multi-audience API + ActiveInteraction service objects.",
          "vendors": [],
          "tasks": 58,
          "systems": [
            {
              "system": "Interactions layer (service objects)",
              "definition": "active_interaction command objects encapsulating business operations (validation + orchestration).",
              "tasks": 33
            },
            {
              "system": "Rails REST API (3 audiences)",
              "definition": "Subdomain-routed JSON APIs: public api/v1, session-authed internal/v1, token-authed internal_contacts/v1.",
              "tasks": 31
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 21,
          "systems": [
            {
              "system": "React SPA (dash + onboarding)",
              "definition": "TS React app served per-subdomain via Webpacker; atom-based store, HOCs, design system.",
              "tasks": 21
            },
            {
              "system": "Design system (azulejos)",
              "definition": "In-repo component/design-system library.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 21,
          "systems": [
            {
              "system": "Background jobs (Delayed Job)",
              "definition": "Async work: webhook processing, external syncs, scheduled/recurring transfers, session cleanup, reminders.",
              "tasks": 21
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 16,
          "systems": [
            {
              "system": "ActiveRecord data layer + concerns",
              "definition": "Shared model behaviors: soft-delete, full-text search (pg_search), auditing, polymorphic owners, PII stripping.",
              "tasks": 11
            },
            {
              "system": "PII encryption at rest",
              "definition": "Symmetric encrypt/sign of sensitive fields (SSN, EIN) via ActiveSupport::MessageEncryptor.",
              "tasks": 6
            }
          ]
        }
      ]
    },
    {
      "repo": "Zeta Platform",
      "tasks": 104,
      "tags": [
        {
          "tag": "Bank-Account-Linking",
          "facet": "Integration",
          "definition": "Linking & verifying external bank accounts (processor tokens, balances). Via Plaid.",
          "vendors": [
            "Plaid"
          ],
          "tasks": 17,
          "systems": [
            {
              "system": "Plaid (bank linking)",
              "definition": "Link external accounts; auth/balances/txns/liabilities.",
              "tasks": 17
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Email delivery/inbound (Mailgun/Mandrill)",
              "definition": "Outbound + inbound-email webhook parsing.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Push-Delivery",
          "facet": "Integration",
          "definition": "Mobile push transport via Expo and Firebase Cloud Messaging.",
          "vendors": [
            "Expo",
            "FCM"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Push delivery (Expo/FCM)",
              "definition": "Mobile push transport (Expo + Firebase).",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Twilio (SMS)",
              "definition": "SMS for 2FA, invites, app links.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Monitoring-Analytics",
          "facet": "Integration",
          "definition": "Observability & product analytics \u2014 APM/metrics + event tracking. Via New Relic + Mixpanel.",
          "vendors": [
            "New Relic",
            "Mixpanel",
            "Ahoy",
            "Blazer",
            "PgHero",
            "Flipper",
            "Sentry",
            "Slack"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Slack (ops alerts)",
              "definition": "ENV-gated internal Slack ops/canary alerts.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Banking-Rails",
          "facet": "Integration",
          "definition": "Money-movement and BaaS-ledger banking rails: ACH/card-to-card transfers and bank-as-a-service ledger/vault issuance.",
          "vendors": [
            "Astra",
            "Treasury Prime"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Astra (money-movement)",
              "definition": "3rd-party ACH card-to-card/account transfers, auth, chargebacks.",
              "tasks": 0
            },
            {
              "system": "Treasury Prime (BaaS ledger)",
              "definition": "Bank-as-a-service ledger/vault issuer + check creation.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Identity-Verification-Vendor",
          "facet": "Integration",
          "definition": "External identity-decisioning vendor feeding KYC.",
          "vendors": [
            "Alloy"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Alloy (identity/KYC vendor)",
              "definition": "External identity decisioning integrated into KYC.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Tax-Filing-Vendor",
          "facet": "Integration",
          "definition": "Embedded 3rd-party tax-prep/filing provider.",
          "vendors": [
            "April"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "April (tax filing)",
              "definition": "Embedded tax-prep/filing integration.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 10,
          "systems": [
            {
              "system": "Push notifications & alerts",
              "definition": "Compose/roll-up push notifications and in-app alerts.",
              "tasks": 7
            },
            {
              "system": "ActionMailer + views",
              "definition": "Transactional/member email across ~30 mailers.",
              "tasks": 4
            },
            {
              "system": "Realtime channels/sockets",
              "definition": "ActionCable + Pusher push transport.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Card-Transactions",
          "facet": "Domain",
          "definition": "Ingest card-auth events and apply configurable spend rules, declines, and tokenization to card transactions.",
          "vendors": [],
          "tasks": 10,
          "systems": [
            {
              "system": "Spending/transaction rules engine",
              "definition": "Match and apply configurable rules to card transactions.",
              "tasks": 10
            },
            {
              "system": "Card events & decline processing",
              "definition": "Ingest card-auth events, assign to txns, handle declines/tokenization.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Subscriptions",
          "facet": "Domain",
          "definition": "Paid membership (Zeta Plus): create/charge/plan-change/refunds and feature gating.",
          "vendors": [],
          "tasks": 10,
          "systems": [
            {
              "system": "Subscriptions / Zeta Plus",
              "definition": "Paid membership billing and feature gating.",
              "tasks": 10
            }
          ]
        },
        {
          "tag": "Money-Transfers",
          "facet": "Domain",
          "definition": "Money-movement lifecycle: the Transfer state machine, polymorphic funding sources, recurring/scheduled, collections/AR, approvals, paper-check.",
          "vendors": [],
          "tasks": 9,
          "systems": [
            {
              "system": "Money movement / transfers",
              "definition": "Central transfer lifecycle orchestration.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Savings-Automations",
          "facet": "Domain",
          "definition": "Auto-generate, suggest, and run rule-driven savings automations (Automation Plus).",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "Savings automations (Automation Plus)",
              "definition": "Rule-driven auto-savings generation and execution.",
              "tasks": 7
            }
          ]
        },
        {
          "tag": "Bill-Pay",
          "facet": "Domain",
          "definition": "Bills, counterparties, and scheduled bill payments.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "Bill pay",
              "definition": "Bills & counterparties with scheduled payments.",
              "tasks": 7
            }
          ]
        },
        {
          "tag": "Webhooks-Idempotency",
          "facet": "Domain",
          "definition": "Inbound provider-webhook ingestion (verification, dedup, async processing) + idempotency keys for retry-safe money moves.",
          "vendors": [],
          "tasks": 6,
          "systems": [
            {
              "system": "Webhook ingestion",
              "definition": "Inbound provider callbacks routed to per-vendor handlers.",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "KYC-Compliance",
          "facet": "Domain",
          "definition": "Identity/business verification (KYC/KYB) incl. beneficial owners, ID documents, onboarding address autocomplete.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "KYC / onboarding",
              "definition": "Identity verification, deny-list, manual review, account applications.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Cards-Issuance",
          "facet": "Domain",
          "definition": "Issue, terminate, update, and gate eligibility for physical and virtual cards.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Card issuance & lifecycle",
              "definition": "Card issuing, termination, updates, and eligibility.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Statements-Tax",
          "facet": "Domain",
          "definition": "Account statements and 1099/tax document generation and filing.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Statements & tax documents",
              "definition": "Account statements plus 1099/tax filings.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "ACH-Processing",
          "facet": "Domain",
          "definition": "ACH-specific transfer handling plus inbound-ACH ingestion, identity matching, and direct-deposit detection.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Incoming ACH & paycheck detection",
              "definition": "Ingest inbound ACH credits, match identity, detect direct-deposit.",
              "tasks": 2
            },
            {
              "system": "ACH money movement",
              "definition": "ACH-specific transfer handlers (internal + external book).",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Risk-Fraud",
          "facet": "Domain",
          "definition": "Transaction/transfer risk scoring, member/ACH risk scoring, counterparty blacklists, and sanctions.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Fraud & transaction risk",
              "definition": "Txn/transfer risk, counterparty blacklist, sanctions.",
              "tasks": 0
            },
            {
              "system": "ACH/user risk scoring",
              "definition": "Score inbound ACH and members for risk.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Check-Deposits",
          "facet": "Domain",
          "definition": "Mobile check-deposit capture, deposit, disbursement, and resubmission.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Check deposits",
              "definition": "Mobile check-deposit capture/deposit/disbursement/resubmit.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "API-Layer",
          "facet": "Surface",
          "definition": "Versioned JSON API namespace (mobile sign-in) documented via Rswag/OpenAPI.",
          "vendors": [],
          "tasks": 42,
          "systems": [
            {
              "system": "GraphQL API layer",
              "definition": "~155 mutations, ~202 types, resolvers/subscriptions serving the main client API.",
              "tasks": 42
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 27,
          "systems": [
            {
              "system": "Sidekiq background jobs",
              "definition": "Async job layer for cross-domain processing.",
              "tasks": 27
            }
          ]
        },
        {
          "tag": "Admin-Console",
          "facet": "Surface",
          "definition": "Internal admin back-office UI \u2014 admin home, analytics charts, and Blazer SQL dashboards.",
          "vendors": [],
          "tasks": 9,
          "systems": [
            {
              "system": "Admin console",
              "definition": "Server-rendered admin controllers/routes for ops.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Secrets-Vault",
          "facet": "Surface",
          "definition": "Adapter layer wrapping card-data vault and BaaS ledger access behind a uniform interface.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Vault/secrets abstraction",
              "definition": "Client/adapter/interface layer over card vault + ledger.",
              "tasks": 1
            }
          ]
        }
      ]
    },
    {
      "repo": "Zeta (polyglot)",
      "tasks": 41,
      "tags": [
        {
          "tag": "Bank-Account-Linking",
          "facet": "Integration",
          "definition": "Linking & verifying external bank accounts (processor tokens, balances). Via Plaid.",
          "vendors": [
            "Plaid"
          ],
          "tasks": 7,
          "systems": [
            {
              "system": "Bank-account aggregation (Plaid)",
              "definition": "Plaid linking + balances/identity/transactions across backend, the PX Exchange contract, and the mobile SDK.",
              "tasks": 7
            }
          ]
        },
        {
          "tag": "Banking-Rails",
          "facet": "Integration",
          "definition": "Money-movement and BaaS-ledger banking rails: ACH/card-to-card transfers and bank-as-a-service ledger/vault issuance.",
          "vendors": [
            "Astra",
            "Treasury Prime"
          ],
          "tasks": 5,
          "systems": [
            {
              "system": "Core-banking ledger (HiddenTemple/Vault, Treasury Prime)",
              "definition": "HTTP clients wrapping external core-banking/ledger + bank-of-record platforms (accounts, ACH, checks, cards, books).",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Monitoring-Analytics",
          "facet": "Integration",
          "definition": "Observability & product analytics \u2014 APM/metrics + event tracking. Via New Relic + Mixpanel.",
          "vendors": [
            "New Relic",
            "Mixpanel",
            "Ahoy",
            "Blazer",
            "PgHero",
            "Flipper",
            "Sentry",
            "Slack"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Monitoring & analytics vendors",
              "definition": "Sentry, New Relic, Mixpanel, Mailchimp, PagerDuty, and Slack notifications wired across services.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "Email delivery & templating",
              "definition": "Transactional email via ActionMailer with Inky/Premailer templating across many mailer types.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "LLM-Provider",
          "facet": "Integration",
          "definition": "Large-language-model provider integration: chat/completion, structured output, and agent frameworks.",
          "vendors": [
            "OpenAI",
            "Anthropic (Claude)",
            "LangChain/LangGraph"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "LLM provider (OpenAI/LangChain/LangGraph)",
              "definition": "ChatOpenAI (GPT-4o) model calls via LangChain/LangGraph powering the CX chatbot and agent tools.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Card-Payments",
          "facet": "Integration",
          "definition": "Credit-card collections \u2014 identities, merchants, payment instruments, card transfers. Via Finix.",
          "vendors": [
            "Finix",
            "Stripe",
            "Pay"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Card-issuing processor (Astra)",
              "definition": "External card-processor client: card issuance, authorization, chargebacks and transfers.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "SMS delivery (Twilio)",
              "definition": "Outbound SMS for invitations, app links, and 2FA codes.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Cloud-Storage-Secrets",
          "facet": "Integration",
          "definition": "Cloud object storage + runtime secret fetching. Via AWS.",
          "vendors": [
            "AWS S3",
            "AWS Secrets Manager"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Document storage (Box)",
              "definition": "Backfill/download of files and conversations to/from Box cloud storage.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Identity-Verification-Vendor",
          "facet": "Integration",
          "definition": "External identity-decisioning vendor feeding KYC.",
          "vendors": [
            "Alloy"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "KYC / identity verification (Alloy)",
              "definition": "Identity-verification vendor sync, deny-list checks, and manual-review onboarding workflow.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Tax-Filing-Vendor",
          "facet": "Integration",
          "definition": "Embedded 3rd-party tax-prep/filing provider.",
          "vendors": [
            "April"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Tax-filing integration (April)",
              "definition": "Embedded April SSO tax-filing SDK (mobile) plus tax-document generation/distribution.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Push-Delivery",
          "facet": "Integration",
          "definition": "Mobile push transport via Expo and Firebase Cloud Messaging.",
          "vendors": [
            "Expo",
            "FCM"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Push notifications (Expo/FCM/Firebase)",
              "definition": "Mobile push delivery via Expo server SDK, Firebase Cloud Messaging, and the RN messaging client.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Data-Warehouse",
          "facet": "Integration",
          "definition": "Direct data-warehouse SQL access and bronze/dbt-style extraction feeding analytics and ML.",
          "vendors": [
            "Postgres warehouse",
            "dbt"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Data-warehouse SQL access",
              "definition": "Direct psycopg2 Postgres warehouse access + bronze SQL/dbt-style extraction feeding analytics and ML.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 9,
          "systems": [
            {
              "system": "Auth & identity (Heimdall JWT, Devise)",
              "definition": "JWT issuance/verification (Heimdall), Devise login, bearer auth, user/identity mgmt and API-client credentialing across services.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Accounts-Cards",
          "facet": "Domain",
          "definition": "Checking accounts, card issuance/state/statements, and merchant-category (MCC) classification.",
          "vendors": [],
          "tasks": 8,
          "systems": [
            {
              "system": "Accounts, households & onboarding",
              "definition": "Linked accounts, joint households/ownership, teams, and person/account onboarding applications.",
              "tasks": 8
            }
          ]
        },
        {
          "tag": "Conversational-AI",
          "facet": "Domain",
          "definition": "LLM chatbot orchestration: per-message workflow, prompt/config versioning, and pre/post-response guardrails.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "CX chatbot orchestration & guardrails",
              "definition": "Per-message chatbot workflow: history, pre/post-response locking guardrails, webhook delivery, and race-condition ordering guards.",
              "tasks": 7
            },
            {
              "system": "Versioned prompt/config library",
              "definition": "Versioned planner/joiner prompt assets plus config-driven, versioned chatbot behavior.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Money-Transfers",
          "facet": "Domain",
          "definition": "Money-movement lifecycle: the Transfer state machine, polymorphic funding sources, recurring/scheduled, collections/AR, approvals, paper-check.",
          "vendors": [],
          "tasks": 6,
          "systems": [
            {
              "system": "Money transfers",
              "definition": "ACH, recurring, internal and deferred transfers plus pay-someone flows.",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Risk-Fraud",
          "facet": "Domain",
          "definition": "Transaction/transfer risk scoring, member/ACH risk scoring, counterparty blacklists, and sanctions.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Fraud & risk",
              "definition": "Fraud-signal evaluation, risk scoring, and account-limit enforcement.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "LLM-Agent-Tools",
          "facet": "Domain",
          "definition": "Agent-callable tools an LLM invokes (ledger/KB/account lookups, text-to-SQL) with safety guardrails.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "LLM agent-callable tools",
              "definition": "LangChain BaseTool/StructuredTool functions (bill/goal ledgers, KB search, account info, automations reporting) an LLM agent invokes.",
              "tasks": 5
            },
            {
              "system": "Text-to-SQL with safety guardrail",
              "definition": "Natural-language\u2192SQL tool that runs a destructive-statement/keyword + LLM safety check before executing against Postgres.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Cards-Issuance",
          "facet": "Domain",
          "definition": "Issue, terminate, update, and gate eligibility for physical and virtual cards.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Card lifecycle & reveal",
              "definition": "Card lifecycle/products, companion-card access rules, and device-bound (DUUID) sensitive-data reveal.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Webhooks-Idempotency",
          "facet": "Domain",
          "definition": "Inbound provider-webhook ingestion (verification, dedup, async processing) + idempotency keys for retry-safe money moves.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Webhook & event-stream ingestion",
              "definition": "Inbound/outbound webhook receipt with async processing plus Karafka/Kafka event-stream consumers.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Savings-Automations",
          "facet": "Domain",
          "definition": "Auto-generate, suggest, and run rule-driven savings automations (Automation Plus).",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Automations & savings rules engine",
              "definition": "User-defined automation rules/instances driving scheduled transfers, disbursements, goals and savings.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Card-Transactions",
          "facet": "Domain",
          "definition": "Ingest card-auth events and apply configurable spend rules, declines, and tokenization to card transactions.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Card transactions & events",
              "definition": "Card-event processing, chargebacks, and declined-authorization handling.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Subscriptions",
          "facet": "Domain",
          "definition": "Paid membership (Zeta Plus): create/charge/plan-change/refunds and feature gating.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Subscriptions & tiers",
              "definition": "Premium-tier subscription management and invoice generation.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Bill-Pay",
          "facet": "Domain",
          "definition": "Bills, counterparties, and scheduled bill payments.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Bill pay",
              "definition": "Bill payments, payees, and scheduling.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Statements-Tax",
          "facet": "Domain",
          "definition": "Account statements and 1099/tax document generation and filing.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Statements & tax documents",
              "definition": "Statement and tax-document generation and distribution.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "ML-Modeling",
          "facet": "Domain",
          "definition": "Machine-learning modeling: feature engineering, sampling, and anomaly/fraud detection.",
          "vendors": [
            "scikit-learn",
            "statsmodels",
            "Darts"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Transaction anomaly-detection modeling",
              "definition": "STL/ARIMA/Isolation-Forest anomaly-detection prototype plus fraud (R10/R16 closure-reason) labeling.",
              "tasks": 1
            },
            {
              "system": "ML feature engineering & sampling",
              "definition": "Feature engineering, stratified per-account sampling, and EDA notebooks over the transaction extract.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Check-Deposits",
          "facet": "Domain",
          "definition": "Mobile check-deposit capture, deposit, disbursement, and resubmission.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Check deposits",
              "definition": "Mobile check-deposit capture and processing workflow.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "API-Layer",
          "facet": "Surface",
          "definition": "Versioned JSON API namespace (mobile sign-in) documented via Rswag/OpenAPI.",
          "vendors": [],
          "tasks": 10,
          "systems": [
            {
              "system": "GraphQL + REST API layer",
              "definition": "GraphQL API (~200 types/mutations/resolvers) plus API-only REST services (e.g. the Plaid Exchange contract).",
              "tasks": 10
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 9,
          "systems": [
            {
              "system": "Async jobs, streaming & scheduling",
              "definition": "Sidekiq async jobs, Karafka/Kafka event streaming, and Clockwork scheduled processes.",
              "tasks": 9
            }
          ]
        },
        {
          "tag": "Dev-Infra-Testing",
          "facet": "Surface",
          "definition": "Deploy/infra (k8s, Terraform, k6 load) and the Playwright E2E harness.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Test suites (RSpec/Jest/E2E/LLM-judge)",
              "definition": "RSpec (~7000 ex), Jest, WDIO/Appium device E2E, and manual LLM-as-judge chatbot harnesses.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Postgres + dual-database data layer",
              "definition": "Postgres with UUID PKs and a dual-database (primary + read-only source) read-model architecture.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Mobile-App",
          "facet": "Surface",
          "definition": "The native mobile client \u2014 Palolo's Swift iOS WebView wrapper + native Plaid LinkController.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "React Native mobile app",
              "definition": "RN app shell: React Navigation, easy-peasy global state, shared design system, and OTA (Hot Updater) updates.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Secrets-Vault",
          "facet": "Surface",
          "definition": "Adapter layer wrapping card-data vault and BaaS ledger access behind a uniform interface.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Card-data tokenization (PCI)",
              "definition": "PAN/CVV tokenization (TokenID), at-rest encryption, and TTL-based cache clearing for sensitive card data.",
              "tasks": 1
            }
          ]
        }
      ]
    },
    {
      "repo": "Breezy",
      "tasks": 11,
      "tags": [
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "SMS messaging (Twilio/Telnyx)",
              "definition": "Outbound/inbound SMS and message threading via Twilio and Telnyx.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Subscription-Billing",
          "facet": "Integration",
          "definition": "The product's OWN premium/subscription billing (not customer money movement). Via Stripe.",
          "vendors": [
            "Stripe"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Stripe billing",
              "definition": "Subscription plans, payment-processor profiles, and webhook-driven subscription lifecycle.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Email delivery (Mailgun/SendGrid/Nylas)",
              "definition": "Transactional email sending and inbound email routing across Mailgun, SendGrid and Nylas.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Calendar-Sync",
          "facet": "Integration",
          "definition": "Calendar and mailbox sync via Google Workspace (watch subscriptions, push, OAuth).",
          "vendors": [
            "Google Calendar",
            "Gmail"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Google Workspace (Calendar/Gmail)",
              "definition": "Google Calendar sync/watch subscriptions, Gmail push notifications, and OAuth.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "LLM-Provider",
          "facet": "Integration",
          "definition": "Large-language-model provider integration: chat/completion, structured output, and agent frameworks.",
          "vendors": [
            "OpenAI",
            "Anthropic (Claude)",
            "LangChain/LangGraph"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "LLM provider (OpenAI/Anthropic Claude)",
              "definition": "GPT + Claude completion, structured output, and Claude Agent SDK programmatic agent sessions.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Telephony-Voice",
          "facet": "Integration",
          "definition": "Voice/telephony provider integration: calls, IVR, recording, SMS, and meeting-bot capture.",
          "vendors": [
            "Twilio",
            "Vapi",
            "Telnyx",
            "Recall.ai"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Telephony & voice AI (Twilio/Vapi/Telnyx/Recall.ai)",
              "definition": "Inbound/outbound calls, IVR, recording and voice-agent handling plus meeting-bot capture across Twilio, Vapi, Telnyx and Recall.ai.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Cloud-Infra",
          "facet": "Integration",
          "definition": "Cloud infrastructure provisioning/management (compute, DNS, CDN) for customer hosting.",
          "vendors": [
            "AWS EC2/Fargate",
            "Route53",
            "CloudFront"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "AWS infrastructure provisioning",
              "definition": "EC2/Fargate/ALB/CloudFront/Route53 provisioning for customer site hosting.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Ad-Platforms",
          "facet": "Integration",
          "definition": "Advertising-platform integration: campaign sync and webhook verification.",
          "vendors": [
            "Meta (Facebook/Instagram/WhatsApp)"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Meta ads & messaging",
              "definition": "Meta (Facebook/Instagram/WhatsApp) ad-campaign sync and webhook verification.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Contacts-CRM",
          "facet": "Domain",
          "definition": "Contact/lead management: capture, segments, and notes linking interactions to a customer base.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Contacts & lead management",
              "definition": "Contacts, lead capture, segments and notes tying calls/chats to a professional's customer base.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Clerk authentication (offline bypass)",
              "definition": "Clerk JWT auth with an offline bypass mode that swaps in a mock signed-in user for self-contained runs.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Payments-Ledger",
          "facet": "Domain",
          "definition": "Polymorphic-payer payment records with STI payment types, allocations, refunds, and discounts.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Payments & pro subscriptions",
              "definition": "Professional-level plan subscriptions, deposits, and contact payments.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Scheduling-Appointments",
          "facet": "Domain",
          "definition": "Appointment scheduling and calendar-synced job/reminder lifecycle.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Scheduling & appointments",
              "definition": "Job scheduling, calendar-synced appointments, and deposit reminders.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Call-Management",
          "facet": "Domain",
          "definition": "Phone-call lifecycle: forwarding verification, spam scoring, and number provisioning.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Call & phone-number management",
              "definition": "Phone calls, forwarding verification, spam scoring, and number provisioning.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Receptionist-Agent-Config",
          "facet": "Domain",
          "definition": "Configurable AI-receptionist behavior: goals, conditional/custom rules, and prompt templates.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "AI receptionist agent config",
              "definition": "Configurable receptionist behavior: goals, conditional/custom rules, and prompt templates.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Transcription-Analysis",
          "facet": "Domain",
          "definition": "Call transcription and post-call conversation/summary analysis.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Transcription & conversation analysis",
              "definition": "Call transcription pipeline and post-call conversation/summary analysis feeding agent behavior.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Webhooks-Idempotency",
          "facet": "Domain",
          "definition": "Inbound provider-webhook ingestion (verification, dedup, async processing) + idempotency keys for retry-safe money moves.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Provider webhook ingestion",
              "definition": "Inbound webhook endpoints for Twilio/Stripe/Meta/Google/Telnyx/Mailgun events.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Marketing-Automation",
          "facet": "Domain",
          "definition": "Automation definitions/runs plus outreach campaigns and drip/follow-up sequencing.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Automations & marketing campaigns",
              "definition": "Automation definitions/runs plus outreach/ad campaigns and drip/follow-up sequencing.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Site-Builder",
          "facet": "Domain",
          "definition": "DIY customer-website generation/deployment plus web-audit/SEO tooling.",
          "vendors": [
            "Firecrawl"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "DIY site builder & web audit",
              "definition": "Customer-facing website generation/deployment (domains, site deploys) plus Firecrawl SEO/website-audit tooling.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Backend-Architecture",
          "facet": "Surface",
          "definition": "Request/API framework & business-logic layering \u2014 Express typed endpoints + rate limiting; Rails multi-audience API + ActiveInteraction service objects.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "Rails API (Bullet Train)",
              "definition": "Rails 7 API on Bullet Train scaffolding: model/controller/job namespacing, REST + webhook routing, ActionCable realtime.",
              "tasks": 7
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Postgres data layer (100+ tables)",
              "definition": "Large relational ActiveRecord/Postgres schema for calls, contacts, agent configs, ads and payments.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Next.js 14 frontend",
              "definition": "App-router Next.js UI (marketing site, app dashboard, embeddable widgets) with a typed backend API client.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Background jobs (Sidekiq)",
              "definition": "Sidekiq + sidekiq-scheduler async jobs, cleanup sweeps and scheduled crons.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Dev-Infra-Testing",
          "facet": "Surface",
          "definition": "Deploy/infra (k8s, Terraform, k6 load) and the Playwright E2E harness.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "RSpec test suite",
              "definition": "RSpec suite of record: model/controller/service specs plus factories/fixtures as the verifier.",
              "tasks": 1
            }
          ]
        }
      ]
    },
    {
      "repo": "Human Essentials",
      "tasks": 14,
      "tags": [
        {
          "tag": "Feature-Flags",
          "facet": "Integration",
          "definition": "Runtime feature gating with a mounted management UI via Flipper.",
          "vendors": [
            "Flipper"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Feature flags",
              "definition": "Runtime gating via Flipper (mounted UI).",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Geocoding",
          "facet": "Integration",
          "definition": "Address geocoding over polymorphic addresses via Geocoder and MaxMind GeoIP2.",
          "vendors": [
            "Geocoder",
            "MaxMind"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Geocoding integration",
              "definition": "Address geocoding via geocoder gem.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Inventory-Ledger",
          "facet": "Domain",
          "definition": "Event-sourced inventory core: Event STI records folded by InventoryAggregate into per-location on-hand, checkpointed by SnapshotEvents.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "Inventory event-sourcing engine",
              "definition": "Event STI folded by InventoryAggregate into per-location on-hand; SnapshotEvents checkpoint.",
              "tasks": 7
            }
          ]
        },
        {
          "tag": "Distributions",
          "facet": "Domain",
          "definition": "Issuing inventory to partners with itemized breakdowns, totals, and scheduling.",
          "vendors": [],
          "tasks": 6,
          "systems": [
            {
              "system": "Distributions",
              "definition": "Issue inventory to partners; itemized breakdowns, totals, scheduling.",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Reporting",
          "facet": "Domain",
          "definition": "Aggregate domain reports (case-contact, followup, missing-data, mileage) rendered as CSV.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Reports & annual reporting",
              "definition": "Aggregated program reports (diaper/incontinence/period/warehouse/annual).",
              "tasks": 3
            },
            {
              "system": "Historical trends & dashboard",
              "definition": "Cached time-series trends + org dashboard.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Donations",
          "facet": "Domain",
          "definition": "Intake of donated inventory from sites, drives, and manufacturers, including community product drives and their rollups.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Donations",
              "definition": "Intake donated items (sites/drives/manufacturers), adjust inventory.",
              "tasks": 3
            },
            {
              "system": "Product drives",
              "definition": "Community donation drives with participants + rollups.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Transfers-Adjustments",
          "facet": "Domain",
          "definition": "Moving inventory between storage locations and applying manual count corrections at a location.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Transfers",
              "definition": "Move inventory between storage locations within an org.",
              "tasks": 3
            },
            {
              "system": "Adjustments",
              "definition": "Manual inventory corrections at a location.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Items-Kits",
          "facet": "Domain",
          "definition": "Item catalog hierarchy (BaseItem/Item/KitItem, categories, units, barcodes) plus composite kits that allocate/deallocate inventory.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Items & catalog",
              "definition": "BaseItem/Item/KitItem hierarchy, categories, units, values, barcodes.",
              "tasks": 3
            },
            {
              "system": "Kits",
              "definition": "Composite items assembled from components; allocate/deallocate inventory.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Organizations-Admin",
          "facet": "Domain",
          "definition": "Org/multi-tenancy setup, members/roles/invites, per-org config & feature flags, admin/impersonation/audit, activity feed.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Multi-tenancy & authorization",
              "definition": "Everything scoped to Organization; Rolify role-based access.",
              "tasks": 2
            },
            {
              "system": "NDBN member sync",
              "definition": "Syncs National Diaper Bank Network roster.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Audits",
          "facet": "Domain",
          "definition": "Physical-count reconciliation of counted stock against recorded inventory.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Audits",
              "definition": "Physical-count reconciliation vs recorded inventory.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Partners",
          "facet": "Domain",
          "definition": "Partner agencies plus their family/child request portal and the invite-approve-recertify lifecycle state machine.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Partners & family portal",
              "definition": "Partner agencies + family/child request portal.",
              "tasks": 2
            },
            {
              "system": "Partner lifecycle",
              "definition": "Invite->approve->de/reactivate->recertify state machine.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Mailers & notifications",
              "definition": "Transactional email (distributions, requests, reminders, broadcasts).",
              "tasks": 1
            },
            {
              "system": "Reminder/deadline scheduling",
              "definition": "Per-org reminder+deadline scheduling driving partner emails.",
              "tasks": 0
            },
            {
              "system": "Calendar (iCal) integration",
              "definition": ".ics distribution feeds via icalendar gem.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Purchases",
          "facet": "Domain",
          "definition": "Recording inventory bought from vendors with per-purchase cost tracking.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Purchases",
              "definition": "Record bought inventory from vendors w/ cost tracking.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Requests",
          "facet": "Domain",
          "definition": "Partner-submitted item requests, itemized and fulfilled into distributions.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Requests",
              "definition": "Partner-submitted item requests fulfilled into distributions.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Storage-Locations",
          "facet": "Domain",
          "definition": "Warehouses holding inventory, with deactivation guarded by remaining on-hand stock.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Storage locations",
              "definition": "Warehouses holding inventory; deactivation guarded by on-hand stock.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Authentication",
              "definition": "Devise + invitable + Google OAuth2 for staff & partner users.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Audit-Logging",
          "facet": "Domain",
          "definition": "Change/version history on payments and other models via PaperTrail.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Audit trail (PaperTrail)",
              "definition": "Change/version history + whodunnit.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Data-Import-Export",
          "facet": "Surface",
          "definition": "Bulk CSV import of volunteers/supervisors/cases with failure reporting.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "CSV export subsystem",
              "definition": "Per-domain CSV exporters + Exportable concern.",
              "tasks": 1
            },
            {
              "system": "CSV import subsystem",
              "definition": "Bulk import via Importable concern + model CSV parsers.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Background jobs (Delayed Job)",
              "definition": "Async: partner notifications, reminders, DB backup, trend caching.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "File-Storage",
          "facet": "Surface",
          "definition": "Active Storage attachments/variants on S3 with a media library and image processing.",
          "vendors": [
            "S3",
            "Azure",
            "disk",
            "AWS S3"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "File storage (ActiveStorage/S3)",
              "definition": "Attachments backed by AWS S3 in prod.",
              "tasks": 0
            }
          ]
        }
      ]
    },
    {
      "repo": "CASA",
      "tasks": 21,
      "tags": [
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 4,
          "systems": [
            {
              "system": "Mailers",
              "definition": "Transactional email (admins/supervisors/volunteers/fund-requests).",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "SMS-Delivery",
          "facet": "Integration",
          "definition": "Outbound SMS for phone verification / 2FA. Via Twilio.",
          "vendors": [
            "Twilio",
            "Short.io"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "SMS notifications (Twilio)",
              "definition": "Per-org Twilio SMS reminders/alerts.",
              "tasks": 1
            },
            {
              "system": "URL shortening (Short.io)",
              "definition": "Short.io HTTP API for SMS links.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Monitoring-Analytics",
          "facet": "Integration",
          "definition": "Observability & product analytics \u2014 APM/metrics + event tracking. Via New Relic + Mixpanel.",
          "vendors": [
            "New Relic",
            "Mixpanel",
            "Ahoy",
            "Blazer",
            "PgHero",
            "Flipper",
            "Sentry",
            "Slack"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Health & ops dashboards",
              "definition": "Health-metrics + PgHero/Flipper dashboards.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Case-Contacts",
          "facet": "Domain",
          "definition": "Volunteer logging of each case contact (type/topics/duration/medium) plus polymorphic follow-up tasks.",
          "vendors": [],
          "tasks": 12,
          "systems": [
            {
              "system": "Case contacts logging",
              "definition": "Volunteers record each contact (type/topics/duration/medium) \u2014 core workflow.",
              "tasks": 12
            },
            {
              "system": "Followups",
              "definition": "Follow-up tasks polymorphically attached to case contacts.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 6,
          "systems": [
            {
              "system": "Reminders & scheduled services",
              "definition": "Time-based reminders (court-report-due, no-contact, birthdays, inactivity).",
              "tasks": 6
            },
            {
              "system": "In-app notifications (Noticed)",
              "definition": "Noticed-backed notifications UI.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Organizations-Admin",
          "facet": "Domain",
          "definition": "Org/multi-tenancy setup, members/roles/invites, per-org config & feature flags, admin/impersonation/audit, activity feed.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Org administration & settings",
              "definition": "Per-org config: contact types/groups, links, banners, languages, patch notes.",
              "tasks": 4
            },
            {
              "system": "Users, roles & multi-tenancy",
              "definition": "STI user hierarchy (volunteer/supervisor/admin/all-casa-admin), per-org scoping.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Volunteers-Assignment",
          "facet": "Domain",
          "definition": "Volunteer advocates and supervisors, their roster/role links, case assignment, and supervisor notes / other-duty time entries.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Volunteers & case assignment",
              "definition": "Volunteer advocates, supervisor links, assignment to cases.",
              "tasks": 4
            },
            {
              "system": "Supervisors",
              "definition": "Supervisor role, volunteer roster, weekly digest.",
              "tasks": 2
            },
            {
              "system": "Notes & other duties",
              "definition": "Supervisor notes + volunteer other-duty time entries.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Reimbursements",
          "facet": "Domain",
          "definition": "Volunteer mileage/expense reimbursement with rates and an approval queue.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Mileage & reimbursement",
              "definition": "Volunteer mileage/expense reimbursement, rates, approval queue.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Authorization-Permissions",
          "facet": "Domain",
          "definition": "Role/capability-based access control (abilities keyed off org membership).",
          "vendors": [
            "Pundit"
          ],
          "tasks": 4,
          "systems": [
            {
              "system": "Authorization (Pundit)",
              "definition": "~40 Pundit policies gating by role/org.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 3,
          "systems": [
            {
              "system": "Authentication (Devise)",
              "definition": "Devise login/invite/password + login-activity tracking.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Court-Dates-Orders",
          "facet": "Domain",
          "definition": "Court dates, hearing types, judges, and per-case court orders carried forward between hearings.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Court dates & hearings",
              "definition": "Court dates, hearing types, judges; bulk creation.",
              "tasks": 3
            },
            {
              "system": "Court orders",
              "definition": "Per-case court orders copied forward between hearings.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Court-Reports",
          "facet": "Domain",
          "definition": "Per-case DOCX court report generation from a Sablon template merged with case context.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Court report generation",
              "definition": "Per-case DOCX court report from Sablon template + context.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Reporting",
          "facet": "Domain",
          "definition": "Aggregate domain reports (case-contact, followup, missing-data, mileage) rendered as CSV.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Reporting & CSV export",
              "definition": "Aggregate reports (case-contact, followup, missing-data, mileage) as CSV.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Case-Management",
          "facet": "Domain",
          "definition": "The central CASA child-case aggregate: court-case record, lifecycle, and case groups.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "CASA cases (child cases)",
              "definition": "Central case record: child's court case, lifecycle, groups.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Emancipation",
          "facet": "Domain",
          "definition": "Youth-emancipation checklists: categories and options tracked per case.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Emancipation checklists",
              "definition": "Youth-emancipation categories/options per case.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Placements",
          "facet": "Domain",
          "definition": "Where a child is placed (placement records + placement types) per case.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Placements",
              "definition": "Where a child is placed (placement + types) per case.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Fund-Requests",
          "facet": "Domain",
          "definition": "Fund-request forms filled into a PDF (pdf-forms) and emailed.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Fund requests",
              "definition": "Fund-request forms filled into PDF (pdf-forms) and emailed.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Learning-Hours",
          "facet": "Domain",
          "definition": "Volunteer training / learning-hour logging and reporting.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Learning hours",
              "definition": "Volunteer training/learning-hour logging + reporting.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Frontend (esbuild + Stimulus)",
              "definition": "esbuild/Sass JS, Stimulus, DataTables, SweetAlert.",
              "tasks": 1
            },
            {
              "system": "Decorators / presentation",
              "definition": "Draper-style decorators formatting objects for views.",
              "tasks": 1
            },
            {
              "system": "Preference sets & datatables",
              "definition": "Persisted per-user table state driving jQuery DataTables.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "File-Storage",
          "facet": "Surface",
          "definition": "Active Storage attachments/variants on S3 with a media library and image processing.",
          "vendors": [
            "S3",
            "Azure",
            "disk",
            "AWS S3"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "File attachments (Azure)",
              "definition": "ActiveStorage on Azure blob; SVG sanitized before storage.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "API-Layer",
          "facet": "Surface",
          "definition": "Versioned JSON API namespace (mobile sign-in) documented via Rswag/OpenAPI.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "REST API (v1 + Swagger)",
              "definition": "JSON API namespace (mobile sign-in), Rswag/OpenAPI.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Data-Import-Export",
          "facet": "Surface",
          "definition": "Bulk CSV import of volunteers/supervisors/cases with failure reporting.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "CSV import",
              "definition": "Bulk import volunteers/supervisors/cases w/ failure reporting.",
              "tasks": 0
            }
          ]
        }
      ]
    },
    {
      "repo": "AWBW",
      "tasks": 8,
      "tags": [
        {
          "tag": "Card-Payments",
          "facet": "Integration",
          "definition": "Credit-card collections \u2014 identities, merchants, payment instruments, card transfers. Via Finix.",
          "vendors": [
            "Finix",
            "Stripe",
            "Pay"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Stripe / Pay checkout",
              "definition": "pay gem + Stripe: card charges, customers, webhooks, reconciliation.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Monitoring-Analytics",
          "facet": "Integration",
          "definition": "Observability & product analytics \u2014 APM/metrics + event tracking. Via New Relic + Mixpanel.",
          "vendors": [
            "New Relic",
            "Mixpanel",
            "Ahoy",
            "Blazer",
            "PgHero",
            "Flipper",
            "Sentry",
            "Slack"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Activity analytics (Ahoy)",
              "definition": "Ahoy visit/event tracking + admin activity views.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Mailers & email delivery",
              "definition": "ActionMailer flows w/ premailer CSS inlining + error handling.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Geocoding",
          "facet": "Integration",
          "definition": "Address geocoding over polymorphic addresses via Geocoder and MaxMind GeoIP2.",
          "vendors": [
            "Geocoder",
            "MaxMind"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Geocoding & addresses",
              "definition": "Geocoder + MaxMind GeoIP2 over polymorphic addresses (stubbed in tests).",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Events-Registration",
          "facet": "Domain",
          "definition": "Event lifecycle with public/staff registration, invoices, callouts, and bulk payments.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Events & registration",
              "definition": "Event lifecycle, public/staff registration, invoices, callouts, bulk payments.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Continuing-Education",
          "facet": "Domain",
          "definition": "Continuing-education hour registrations, scholarship applications, and discounts.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Continuing education & scholarships",
              "definition": "CE-hour registrations, scholarship applications, discounts.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "People-Contacts",
          "facet": "Domain",
          "definition": "Person records with contact methods and professional licenses.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "People & contact records",
              "definition": "Person records, contact methods, professional licenses.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Payments-Ledger",
          "facet": "Domain",
          "definition": "Polymorphic-payer payment records with STI payment types, allocations, refunds, and discounts.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Payments & ledger (STI)",
              "definition": "Polymorphic-payer payments (cash/check/external/filemaker STI), allocations, refunds.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Authorization-Permissions",
          "facet": "Domain",
          "definition": "Role/capability-based access control (abilities keyed off org membership).",
          "vendors": [
            "Pundit"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Authorization / policies (ActionPolicy)",
              "definition": "Per-resource authorize!/authorized_scope.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Workshops",
          "facet": "Domain",
          "definition": "Workshop templates, logs, ideas, variations, series, and resources.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Workshops & facilitation",
              "definition": "Workshop templates, logs, ideas, variations, series, resources.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "CMS-Content",
          "facet": "Domain",
          "definition": "Editorial content and rich-text authoring \u2014 stories, quotes, news, FAQs, banners, resources, grants, and Action Text bodies with mentions.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Content / CMS surfaces",
              "definition": "Editorial content: stories, quotes, news, FAQs, banners, resources, grants.",
              "tasks": 1
            },
            {
              "system": "Rich text & mentions (Action Text)",
              "definition": "Action Text bodies w/ @-mention linking to events/workshops/resources.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Authentication & accounts (Devise)",
              "definition": "Devise login, email confirm/reconfirm, welcome/reset tokens, locking.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Notifications-Messaging",
          "facet": "Domain",
          "definition": "Member-facing notification pipeline (enqueue->channel->dispatch), reminders, SSR email templates, internal Slack alerts, support chat.",
          "vendors": [
            "Slack (internal alerts)",
            "Zendesk",
            "Intercom",
            "Noticed"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Notifications",
              "definition": "In-app + emailed notifications, recipient filtering, delivery persistence.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Organizations-Networks",
          "facet": "Domain",
          "definition": "Studios/organizations with status, obligations, addresses, and taggings.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Organizations / networks",
              "definition": "Studios/orgs w/ status, obligations, addresses, taggings.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Affiliations-Facilitators",
          "facet": "Domain",
          "definition": "People-to-organization membership with facilitator standing and active/pending scoping.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Affiliations & facilitators",
              "definition": "People<->org membership, Facilitator standing, active/pending scoping.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Impact-Reports",
          "facet": "Domain",
          "definition": "STI-based monthly/impact reports with field answers, quotes, and sector impact.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Impact reports",
              "definition": "Monthly/impact reports (STI on Report) w/ field answers, quotes, sector impact.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Form-Builder",
          "facet": "Domain",
          "definition": "Dynamic form builder with fields, options, user forms, and validated submissions.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Form builder & submissions",
              "definition": "Dynamic forms \u2014 fields, options, user forms, validated submissions.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Tagging-Categorization",
          "facet": "Domain",
          "definition": "Polymorphic categories, sectors, age-groups, and tags applied across models.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Tagging & categorization",
              "definition": "Polymorphic categories, sectors, age-groups, tags across models.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Audit-Logging",
          "facet": "Domain",
          "definition": "Change/version history on payments and other models via PaperTrail.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Audit trail (PaperTrail)",
              "definition": "has_paper_trail version history on payments etc.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Vite frontend (Turbo/Stimulus)",
              "definition": "Vite-bundled JS/CSS, Turbo + Stimulus + Cocoon nested forms.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Background jobs (SolidQueue)",
              "definition": "Async queue: bulk email, notifications, payment reconciliation.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Full-Text-Search",
          "facet": "Surface",
          "definition": "Model full-text search and payer picker via SearchCop over searchable records.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Full-text search (SearchCop)",
              "definition": "RemoteSearchable model search + payer picker.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "File-Storage",
          "facet": "Surface",
          "definition": "Active Storage attachments/variants on S3 with a media library and image processing.",
          "vendors": [
            "S3",
            "Azure",
            "disk",
            "AWS S3"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Asset & media (S3 + Active Storage)",
              "definition": "ActiveStorage attachments/variants on S3, media library, image processing.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Admin-Console",
          "facet": "Surface",
          "definition": "Internal admin back-office UI \u2014 admin home, analytics charts, and Blazer SQL dashboards.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Admin dashboards (Blazer/Chartkick)",
              "definition": "Admin home, analytics charts, Blazer SQL dashboards.",
              "tasks": 0
            }
          ]
        }
      ]
    },
    {
      "repo": "Stocks in the Future",
      "tasks": 16,
      "tags": [
        {
          "tag": "Market-Data-Feed",
          "facet": "Integration",
          "definition": "External Alpha Vantage HTTP clients that pull live stock quotes and refresh per-stock company attributes, ENV-gated and mockable.",
          "vendors": [
            "Alpha Vantage"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Alpha Vantage price feed",
              "definition": "Live external stock-quote client (GLOBAL_QUOTE); ENV-gated, no-ops/mocked when unset.",
              "tasks": 1
            },
            {
              "system": "Stock attribute enrichment",
              "definition": "Second external HTTP fetch refreshing per-stock company attributes weekly.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Users-Classrooms",
          "facet": "Domain",
          "definition": "Student/teacher identity via STI plus classroom enrollment history and admin-driven teacher lifecycle.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Classrooms & enrollment history",
              "definition": "Students enroll over time; current/historical membership with single-primary invariant.",
              "tasks": 4
            },
            {
              "system": "Users & identity (STI)",
              "definition": "User STI -> Student/Teacher with role predicates, admin, username/email rules.",
              "tasks": 3
            },
            {
              "system": "Teacher lifecycle (admin)",
              "definition": "Admin assigns/deactivates/reactivates teachers via discard soft-delete.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Portfolios-Ledger",
          "facet": "Domain",
          "definition": "Per-student portfolio deriving cash from a transaction ledger, plus monthly point-in-time worth snapshots.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Portfolios & cash ledger",
              "definition": "Per-student portfolio deriving cash from a transaction ledger including pending holds.",
              "tasks": 4
            },
            {
              "system": "Portfolio snapshots",
              "definition": "Monthly point-in-time portfolio-worth history powering the chart.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Grade-Books",
          "facet": "Domain",
          "definition": "Per-classroom-per-quarter gradebook with a draft->verified->completed state machine.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Grade books workflow",
              "definition": "Per-classroom-per-quarter gradebook with draft->verified->completed states.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Earnings-Distribution",
          "facet": "Domain",
          "definition": "Converts verified grades and attendance (plus QoQ improvement) into portfolio cash.",
          "vendors": [],
          "tasks": 4,
          "systems": [
            {
              "system": "Earnings distribution",
              "definition": "Converts verified grades/attendance plus QoQ improvement into portfolio cash.",
              "tasks": 4
            }
          ]
        },
        {
          "tag": "Authorization-Permissions",
          "facet": "Domain",
          "definition": "Role/capability-based access control (abilities keyed off org membership).",
          "vendors": [
            "Pundit"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "Authorization (Pundit)",
              "definition": "Pundit policies plus scopes and role gates.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Order-Execution",
          "facet": "Domain",
          "definition": "Atomic buy/sell order validation and execution plus once-per-user trading fees over a batch.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Order execution engine",
              "definition": "Buy/sell orders validated for funds/shares and executed atomically.",
              "tasks": 2
            },
            {
              "system": "Transaction fees",
              "definition": "Flat once-per-user trading fee applied over a batch of executed orders.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Stock-Catalog-Pricing",
          "facet": "Domain",
          "definition": "Stock records with cents price, prior-day price, percent-change, and active/archived state.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Stock catalog & pricing",
              "definition": "Stock records: cents price, yesterday-price, %-change, active/archived.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Devise authentication",
              "definition": "DB-authenticatable login/registration/recovery.",
              "tasks": 0
            },
            {
              "system": "Memorable password generation",
              "definition": "Faker-based memorable student-password generator.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Academic-Calendar",
          "facet": "Domain",
          "definition": "School -> school-year -> quarter hierarchy with traversal helpers.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Academic calendar",
              "definition": "School -> school-year -> quarter hierarchy with traversal.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Announcements",
          "facet": "Domain",
          "definition": "Admin-authored announcements with Action Text surfaced to users.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Announcements",
              "definition": "Admin announcements with Action Text surfaced to users.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 7,
          "systems": [
            {
              "system": "Public web controllers",
              "definition": "User-facing MVC for home, portfolios, stocks, orders, classrooms, gradebooks.",
              "tasks": 7
            },
            {
              "system": "Importmap frontend",
              "definition": "No-build Hotwire (Turbo/Stimulus) plus Chart.js via importmap.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Admin-Console",
          "facet": "Surface",
          "definition": "Internal admin back-office UI \u2014 admin home, analytics charts, and Blazer SQL dashboards.",
          "vendors": [],
          "tasks": 6,
          "systems": [
            {
              "system": "Admin backoffice",
              "definition": "Separate admin/ namespace with own layout, dashboard, sortable CRUD.",
              "tasks": 6
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "ActiveRecord data layer",
              "definition": "Postgres with cents-money columns and strong_migrations guardrails.",
              "tasks": 1
            },
            {
              "system": "Soft-deletion",
              "definition": "Discard soft delete with hard-delete guard plus admin filtering concern.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Background jobs & scheduler",
              "definition": "Solid Queue recurring jobs: order execution, price/attr updates, snapshots.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Data-Import-Export",
          "facet": "Surface",
          "definition": "Bulk CSV import of volunteers/supervisors/cases with failure reporting.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Bulk student import",
              "definition": "CSV-driven bulk student creation with per-row results and template.",
              "tasks": 2
            }
          ]
        }
      ]
    },
    {
      "repo": "Community Foundation",
      "tasks": 6,
      "tags": [
        {
          "tag": "Email-Delivery",
          "facet": "Integration",
          "definition": "Outbound transactional email \u2014 Palolo SendGrid dispatch; ZenBill Rails ActionMailer layer.",
          "vendors": [
            "SendGrid (Palolo)",
            "ActionMailer (ZenBill)",
            "ActionMailer",
            "Postmark",
            "Mailgun",
            "Mandrill"
          ],
          "tasks": 1,
          "systems": [
            {
              "system": "Transactional email",
              "definition": "Mailers (magic-link/reset/registration) via Postmark in prod.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "Authentication (sessions)",
              "definition": "Cookie-backed DB sessions with require_authentication, Current attributes, resume/terminate.",
              "tasks": 2
            },
            {
              "system": "Users & accounts",
              "definition": "Account identity: email, optional password (passwordless-capable), confirmation, super-admin.",
              "tasks": 1
            },
            {
              "system": "Passwordless / magic-link & confirmation",
              "definition": "Token magic-link sign-in, password reset, email confirm/change via generates_token_for.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Organizations-Admin",
          "facet": "Domain",
          "definition": "Org/multi-tenancy setup, members/roles/invites, per-org config & feature flags, admin/impersonation/audit, activity feed.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Organizations (tenancy root)",
              "definition": "The community-foundation tenant: name, subdomain, website, logo.",
              "tasks": 1
            },
            {
              "system": "Multi-tenant subdomain routing",
              "definition": "Resolves Current.organization from subdomain, bounces apex/non-member.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Scenario-Sharing",
          "facet": "Domain",
          "definition": "Opt-in public read-only sharing of a scenario via an unguessable share token.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Scenario sharing",
              "definition": "Opt-in public read-only scenario view via unguessable share_token.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Giving-Scenarios",
          "facet": "Domain",
          "definition": "A donor's named giving plan with a total giving amount that parents all allocations and can be copied/shared.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Scenarios (giving plans)",
              "definition": "User's named plan with total giving amount; parent of all allocations; shareable copy.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Allocation-Engine",
          "facet": "Domain",
          "definition": "The STI-backed math engine that splits a scenario's giving into ongoing, one-time, and greatest-community-need allocations.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Allocation engine (STI + math)",
              "definition": "Splits giving into ongoing (%->$, 5% perpetuity), one-time (fixed, capped), and Greatest-Community-Need.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Authorization-Permissions",
          "facet": "Domain",
          "definition": "Role/capability-based access control (abilities keyed off org membership).",
          "vendors": [
            "Pundit"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "Memberships & roles (RBAC)",
              "definition": "member/admin/owner enum governing visibility + admin powers, with guarded role-change.",
              "tasks": 0
            },
            {
              "system": "Authorization / scenario scoping",
              "definition": "Filters scenarios by role (own vs all-org) plus viewing on behalf.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Allocation-Categories",
          "facet": "Domain",
          "definition": "Org-scoped self-referential hierarchical taxonomy of program/population/organization tags that allocations target.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Allocation categories (taxonomy)",
              "definition": "Org-scoped self-referential hierarchical tags in 3 STI tabs (Program/Population/Organization).",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Admin-Console",
          "facet": "Surface",
          "definition": "Internal admin back-office UI \u2014 admin home, analytics charts, and Blazer SQL dashboards.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Admin console",
              "definition": "Namespaced back-office: dashboard, org settings, member mgmt, category CRUD.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Stimulus / importmap frontend",
              "definition": "Node-free JS: importmap Stimulus (allocation slider, category picker, tabs, dialogs) + Tailwind.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Background jobs",
              "definition": "Solid Queue async backend (base ApplicationJob; mail delivery).",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "File-Storage",
          "facet": "Surface",
          "definition": "Active Storage attachments/variants on S3 with a media library and image processing.",
          "vendors": [
            "S3",
            "Azure",
            "disk",
            "AWS S3"
          ],
          "tasks": 0,
          "systems": [
            {
              "system": "File attachments",
              "definition": "Active Storage image upload for org logos with content-type/size validation.",
              "tasks": 0
            }
          ]
        }
      ]
    },
    {
      "repo": "End Side Out",
      "tasks": 9,
      "tags": [
        {
          "tag": "Student-Portal",
          "facet": "Domain",
          "definition": "The student-facing surface: public roster entry point and published-module learning home.",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "Student learning portal",
              "definition": "Student-facing home showing only published modules for the active enrolled program.",
              "tasks": 2
            },
            {
              "system": "Public classroom roster",
              "definition": "Unauthenticated UUID-addressed roster page serving as the student login entry point.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Auth-Sessions",
          "facet": "Domain",
          "definition": "Login, password hashing/reset, email verification, server-side session management.",
          "vendors": [
            "Devise",
            "Google OAuth2"
          ],
          "tasks": 2,
          "systems": [
            {
              "system": "Admin authentication & sessions",
              "definition": "Cookie staff login via has_secure_password with DB Session rows, Current attrs, and return-to.",
              "tasks": 1
            },
            {
              "system": "Student authentication (passwordless)",
              "definition": "Credential-free student auth deriving a StudentSession from classroom UUID plus student id.",
              "tasks": 1
            },
            {
              "system": "Password reset flow",
              "definition": "Rate-limited tokenized reset that emails a link and invalidates sessions on success.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Student-Roster",
          "facet": "Domain",
          "definition": "CRUD management of students within a school/classroom.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Student roster management",
              "definition": "CRUD for students under a school/classroom, with gender enum and grade level.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "Module-Scheduling",
          "facet": "Domain",
          "definition": "Materializing and publishing per-classroom scheduled modules gated by publish dates.",
          "vendors": [],
          "tasks": 2,
          "systems": [
            {
              "system": "Module scheduling & publishing",
              "definition": "Materializes per-classroom ClassroomModule rows via generate_modules!, gated by publish_on.",
              "tasks": 2
            }
          ]
        },
        {
          "tag": "School-Classroom-Hierarchy",
          "facet": "Domain",
          "definition": "The School->Classroom organizational tree with cascade-delete and public classroom UUIDs.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "School & classroom org hierarchy",
              "definition": "School->Classroom tree with cascade-delete; each classroom has a teacher and a public UUID.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Program-Catalog",
          "facet": "Domain",
          "definition": "The curriculum catalog: Programs owning leveled ContentModules with ordered survey/game Links.",
          "vendors": [],
          "tasks": 1,
          "systems": [
            {
              "system": "Program catalog & content modules",
              "definition": "Programs own leveled ContentModules, each with ordered survey/game Links.",
              "tasks": 1
            }
          ]
        },
        {
          "tag": "Program-Enrollment",
          "facet": "Domain",
          "definition": "Enrolling a classroom in programs at a level, with nested-attr and level-lock invariants.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Program enrollment (classroom<->program)",
              "definition": "Enroll a classroom in programs at a level via nested attrs, enforcing 'at least one' and level-lock invariants.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Web-Frontend",
          "facet": "Surface",
          "definition": "The browser SPAs \u2014 Palolo Preact (app + HQ) and ZenBill React (dashboard + onboarding) incl. the design system.",
          "vendors": [],
          "tasks": 5,
          "systems": [
            {
              "system": "Turbo/Stimulus/Tailwind frontend",
              "definition": "Hotwire importmap Stimulus and Turbo Stream partials for inline publishing, styled with Tailwind.",
              "tasks": 5
            }
          ]
        },
        {
          "tag": "Data-Layer-Schema",
          "facet": "Surface",
          "definition": "Persistence & schema \u2014 Prisma data layer + codegen + shared Zod contracts (Palolo); ActiveRecord concerns + field encryption (ZenBill).",
          "vendors": [],
          "tasks": 3,
          "systems": [
            {
              "system": "ActiveRecord data & validation layer",
              "definition": "Enums (gender/level/link_type), presence/format validations, nested attrs, and ordering scopes.",
              "tasks": 3
            }
          ]
        },
        {
          "tag": "Background-Jobs",
          "facet": "Surface",
          "definition": "Async job processing \u2014 Palolo SQS worker + job registry; ZenBill Delayed Job.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "Background jobs & DB-backed infra",
              "definition": "Solid Queue/Cache/Cable over SQLite backing deliver_later.",
              "tasks": 0
            }
          ]
        },
        {
          "tag": "Dev-Tooling",
          "facet": "Surface",
          "definition": "Custom developer tooling generators bundled with the app.",
          "vendors": [],
          "tasks": 0,
          "systems": [
            {
              "system": "ADR tooling generator",
              "definition": "Custom Rails generator scaffolding Architecture Decision Records.",
              "tasks": 0
            }
          ]
        }
      ]
    }
  ]
}
