# Platform Map

MobiCred should treat the platform as a set of clear boundaries, not one large
API surface.

## Current Services

- `service-core-api`: canonical business orchestration, Fineract-facing account
  flows, credit application hooks, payments orchestration, and internal BFF
  endpoints.
- `service-api-mobile`: public mobile BFF for consumer and POS-style mobile
  surfaces.
- `service-api-account-alias`: alias and payment credential directory, with
  Nest Swagger already wired.
- `service-payment-gateway`: payment initiation, status, provider callbacks,
  payin, and payout gateway, with L5 Swagger configuration.
- `service-credit-intelligence`: tenant-safe ingestion, feature materialization,
  explainable score decisions, Geo and Fleet context, and protected operator
  read models. It provides evidence only; Core owns credit execution.
- `mobile-client-app`, `mobile-commercial-app`, and `pos-application`: channel
  clients that should call BFF or partner APIs rather than bypassing the core.

## Missing Core Pieces

- OpenAPI export in `service-core-api` and `service-api-mobile`.
- Dedicated publication of partner-only OpenAPI contracts, separated from
  internal staff and BFF operations.
- Production-grade partner quotas and webhook secret storage (encrypted, not
  org metadata) on top of the tenant-aware partner credentials, policies,
  users, customer references, score-only, HMAC, and webhook delivery already
  owned by Core.
- Live HMAC proof of `POST /v1/partners/:code/score-requests` still needs a
  staff JWT (Core #9). Staging Core already serves the route (401 without HMAC).
  Score-moving features are `mobile_money_monthly_inflow`,
  `repayment_on_time_rate`, `consent_age_days`, and `account_age_days`.
  Zone/commune do not change the CI score.

## Platform Rule

Every channel can create or update a user-facing onboarding flow, but the
canonical person and account state must converge in the core/Fineract graph.
Partner tenancy changes access and attribution; it must not duplicate the real
person.
