JJijibora Docs
docs.jijibora.online
On this page (9 sections)

D-05 — Starter Packs for Developers

Scope: Building and activating starter packs — pack anatomy, per-pack composition, cohort billing pinning, Soft-to-LIVE rollout, and an authoring checklist (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md; source: docs/commercialization/playbooks/dictionary.v1.json; source: datasets/lookups/lookup.finmon.cohort_billing.v1.json) Status: as of 2026-11-09 Blueprint sources: docs/commercialization/playbooks/dictionary.v1.json; datasets/lookups/lookup.finmon.cohort_billing.v1.json; datasets/lookups/lookup.finmon.revenue_split_profile.v1.json; docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md; Playbook Registry — What You Can Run, Who Runs It, What You Get Back

What this means for you

A pack is data, not code. You declare lookup keys, a scenario pack, CNS types, and consumer wiring in the dictionary, and the runtime resolves them as values (source: docs/commercialization/playbooks/dictionary.v1.json). Every pack proves itself in Soft first: Soft apply is validation plus plan with zero writes. Only a real LIVE gate passing real checks may ever flip a pack to live (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md). If your change needs a new table, stop and ask. A new community is a new CNS entry, catalog entry, manifest, fragment, and vocabulary — never a schema change (source: docs/jijibora-gtm/02_PRODUCT_STRATIFICATION.md).

Details

1. Pack anatomy — what a pack binds

A dictionary pack entry binds five things (source: docs/commercialization/playbooks/dictionary.v1.json):

BindingWhat it isExample (claims motor pack)
Lookup keys (lookups)NATS KV lookup names the runtime reads as values; never read from disk at runtimelookup.claims.transition_policy.v1, lookup.claims.sod.v1, lookup.claims.threshold.v1, lookup.claims.evidence.v1, lookup.claims.panel.v1, lookup.claims.vas.eligibility.v1, lookup.claims.sla.v1, lookup.claims.outbox_subjects.v1, lookup.camel.intake.maps.v1 (source: docs/commercialization/playbooks/dictionary.v1.json)
Scenario pack (scenarios)The scenario definition the orchestration engines executescenario.claims.motor_ke.v1 (source: docs/commercialization/playbooks/dictionary.v1.json)
Taxonomy / CNS types (claim_type, cns_types)The governed claim and entity types the pack operates oncns://claim/type/insurance/motor_claim and cns://claim/type/entity/vehicle (source: docs/commercialization/playbooks/dictionary.v1.json)
Consumer wiring (emits, consumes, camel_routes, kestra, enrichment, security_bound)Subjects emitted/consumed, Camel routes, Kestra flows, enrichment stages, and the ceiling (publish APF key, subscribe keys, ceiling version)Emits claims.lifecycle.v1.motor.transition etc.; consumes ingress.camel.extgate.response; ceiling claims.v1 (source: docs/commercialization/playbooks/dictionary.v1.json)
SKU monetization ref (monetization on the SKU)The commercial identity: offer package, subscription plan, entitlement policy, billing adapter binding, split profile, creator fee (source: docs/commercialization/playbooks/dictionary.v1.json)SKU sku.claims.orchestration.pilot.v1 links offer package offer_package.claims.orchestration.pilot.v1 and split profile revenue_split_profile.claims.orchestration.v1 (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json; source: docs/commercialization/playbooks/dictionary.v1.json)

Rules that apply to every pack: reuse the canonical criteria bus and envelope, do not invent a second bus; declare canonical_subject, canonical_event_type, and pipeline_id on pack lookups; Soft means outbox plus allowlisted subject while LIVE means JetStream plus ceiling (source: S-03 — Jijibora Playbook Registry (stakeholder + developer)).

2. Per-pack composition table

Three packs in one view. Everything here is taken from the dictionary pack entries (source: docs/commercialization/playbooks/dictionary.v1.json).

DimensionMaintenance desk (pack.jamii.community.starter.v1)Financial desk (dues leg of the same starter pack)Claims orchestration pilot (pack.claims.motor.ke.v1)
Design storyWhatsApp/USSD intake classified, nearest certified vendor proposed, one-tap approval, photo + GPS verification, escrow released only on proof (source: docs/jijibora-gtm/03_ENTRY_POINT_AND_STARTER_PACK.md)Native ledger (dues, fines, service charges, vendor payables), scheduled reminders and collection, monthly statement plus dashboard (source: docs/jijibora-gtm/03_ENTRY_POINT_AND_STARTER_PACK.md)FNOL intake → evidence check → panel eligibility → amount/risk quorum bands → SLA clock → settlement, with guarded transitions (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back)
Lookupslookup.jijibora.community.starter.v1 (source: docs/commercialization/playbooks/dictionary.v1.json)Same starter lookup family; dues emit is platform.criteria.v1.community.dues.signal (source: docs/commercialization/playbooks/dictionary.v1.json)9 claims lookups incl. transition policy, SoD, thresholds, evidence, panel, VAS eligibility, SLA (source: docs/commercialization/playbooks/dictionary.v1.json)
Scenario / orchestrationscenario.jijibora.community.starter.v1; Kestra kestra.jijibora.community.starter_dispatch.yaml (source: docs/commercialization/playbooks/dictionary.v1.json)Shares the starter scenario; consumes commerce.v1.event.invoice. and commerce.v1.event.payment. (source: docs/commercialization/playbooks/dictionary.v1.json)scenario.claims.motor_ke.v1; Kestra claims.sla_timeout; Camel egress.camel.intake.processing.create + egress.camel.extgate.invoke (source: docs/commercialization/playbooks/dictionary.v1.json)
CNS typesGoverned by the community.v1 ceiling; no claim-type list is given on this pack entry (source: docs/commercialization/playbooks/dictionary.v1.json)Same as maintenance desk (shared pack) (source: docs/commercialization/playbooks/dictionary.v1.json)cns://claim/type/insurance/motor_claim + cns://claim/type/entity/vehicle (source: docs/commercialization/playbooks/dictionary.v1.json)
Emits (effect)platform.criteria.v1.community.work_order, dues signal, subscription/entitlement/billing-usage, split settled, wallet credit (source: docs/commercialization/playbooks/dictionary.v1.json)Dues signal + the billing subjects (commerce.v1.event.subscription.created, entitlement.delta.v1, platform.criteria.v1.billing.usage, split.v1.settled, wallet.v1.credit) (source: docs/commercialization/playbooks/dictionary.v1.json)claims.lifecycle.v1.motor.transition / finalize, sla_breached, re_dispatch, escalate (source: docs/commercialization/playbooks/dictionary.v1.json)
Guard centreWo: work-order create permission + scope membership; resolver cannot approve own close; missing triage evidence refused (source: docs/commercialization/playbooks/dictionary.v1.json; source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back)Split must sum to exactly 100%; creator share named; changes need two-person approval (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back)Creator cannot approve own claim; unattested provider refused; approval bands by amount and risk; SLA timeout records breach + re-dispatch — no verdict invented (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back; source: docs/commercialization/playbooks/dictionary.v1.json)
Maturitysoft_shipped (source: docs/commercialization/playbooks/dictionary.v1.json)soft_shipped (same pack) (source: docs/commercialization/playbooks/dictionary.v1.json)soft_shipped; medical/home/gov siblings share the same SKU and shape (source: docs/commercialization/playbooks/dictionary.v1.json)

Note the honest sibling status: the claims SKU is one umbrella, and motor/medical/home/gov packs are separate pack entries sharing that SKU. The dictionary notes medical/home/gov packs stay spec_only until later dependencies land, while their pack entries carry soft_shipped maturity — flag the discrepancy, do not merge it silently (source: docs/commercialization/playbooks/dictionary.v1.json).

3. Cohort billing_ref model for targeting

  • Allowlist, values only. The cohort billing lookup names exactly four pinnable offer-package ids: offer_package.jamii.starter.v1, offer_package.materra.amcos.pilot.v1, offer_package.bundle.estate_safe.v1, offer_package.claims.orchestration.pilot.v1 (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json).
  • Attach mechanics. A cohort definition pins a billing_ref onto one of those ids. Nothing else is attached — no new billing table per cohort (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json).
  • Cohort as targeting plane. The cohort decides who is targeted by an offer; it never decides amounts (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json).
  • Billing through existing subscriptions. Billing still runs through commercial_subscription facts plus the billing adapter. A billing_ref never invents an invoice (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json).
  • Split shape (skim only). Revenue split profiles are KV-only declarative profiles: parties use the FINMON-03 vocabulary (platform | pack_creator | parent_scope | community_treasury | reseller | cohort_operator | merchant), basis points must sum to 10,000, and the pack-creator share must match the SKU's creator fee basis points. The profile settles nothing by itself — the FINMON-S7 voyage distributes and the SIKASIE/Malipo plane credits (source: datasets/lookups/lookup.finmon.revenue_split_profile.v1.json). Per-party values in the lookup file are configuration, not a price list, and are not reproduced here.

4. Pack COLD vs LIVE rollout

  • COLD = Soft posture (validation, zero writes). Soft apply validates and plans: it checks the digest pin, resolves references, and must write zero live rows. Soft-never-LIVE is a dictionary principle (soft_billing_ne_live_paid, fail_closed_soft_ne_live) (source: docs/commercialization/playbooks/dictionary.v1.json).
  • Soft apply validation plan: confirm the soft pin writes the soft. key with invent_refuse_live: true and live_gate_met: false, confirm the outbox row is written for the pack emit, and confirm the pack's Soft acceptance tests pass (for the starter: Soft ticket end-to-end, outbox row for the work-order emit, and the billing-adapter Soft binding check; for claims: the Soft fixture suite with no verdict invented) (source: docs/commercialization/playbooks/dictionary.v1.json).
  • Writes: 0. A Soft apply that writes anything live is a failure. If an external service (solver, Camel, Kestra) is down in Soft, refuse honestly instead of inventing a result — Soft gates treat an honest 503 as a pass (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • LIVE = JetStream + ceiling + real probes. Flip to LIVE only when the live path's real checks pass: the ceiling is enforced, the digest pin matches, and each LIVE probe reports genuinely green. Env flags alone never satisfy live_gate_met (source: Honesty Invariants). A pack never declares itself live (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back).

5. Authoring checklist — start from the maintenance desk template

Copy the maintenance desk as your template, then declare the new pack in the dictionary. Check each item before asking for activation:

  • [ ] Intents declared. Intake taxonomy (for maintenance: plumbing, electrical, security, facilities) plus location, urgency, and photo extraction are named as intent inputs in the entry (source: docs/jijibora-gtm/03_ENTRY_POINT_AND_STARTER_PACK.md).
  • [ ] Gate policy set. Approval gate (manager one-tap / Decision Gate), evidence gate (photo + GPS, inspector signature where required), and payout gate (escrow released only on proof) are refused-by-default gates, not comments (source: docs/jijibora-gtm/03_ENTRY_POINT_AND_STARTER_PACK.md; source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back).
  • [ ] SLA / bands / VAS composition added. Claims packs add service-level clocks, amount/risk approval bands, and value-added-service eligibility. All three are lookup-composed (threshold, SLA, and VAS-eligibility lookups) and change without code (source: docs/commercialization/playbooks/dictionary.v1.json; source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back).
  • [ ] AI hook allowlists start off-by-default. The assistant proposes and narrates only; hooks are advisory/tracking-only, the core path works with hooks empty, and nothing auto-approves or auto-pays (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • [ ] Pack is fully bound. Lookup keys, scenario pack, CNS types, consumer wiring, and the SKU monetization ref (offer package + split profile + creator fee matching) are present and consistent (source: docs/commercialization/playbooks/dictionary.v1.json).
  • [ ] SoD + anti-self-approval wired. Creator/resolver cannot approve their own item; unattested providers are refused; missing evidence refuses (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back).
  • [ ] Soft-first proof attached. Soft validation plan with writes: 0 has been run, rollback re-pin rehearsed, and the LIVE gate still reports dark (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • [ ] No schema change smuggled in. New behaviour is CNS entries + interface catalog + manifest + fragments + APF vocabulary + KV lookups only. If a new table is needed, stop and ask (source: docs/jijibora-gtm/02_PRODUCT_STRATIFICATION.md).

Open items / gaps

  • canonical_subject / canonical_event_type / pipeline_id declarations on pack lookups (ESP-02), ontology-normalizer generalization (ESP-03), and Soft ceiling assert (ESP-04) are TODO — design with them in mind, do not assume them live (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • Real money movement gates (timestamp authority, public-safety answering point, billing-adapter production migration) remain OPEN-OPS and need an external party; live money stays Soft (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • SoR table/shape for several packs beyond resource / claim / truth_node is UNKNOWN in the read set; locate the canonical mapping before building (source: docs/platform-map/jijibora/D-02-PLAYBOOK-DESIGNS.md).
  • Claims pilot pricing is unpublished and no savings figure may be quoted; do not put price-guide numbers into pack docs as promised prices (source: Playbook Registry — What You Can Run, Who Runs It, What You Get Back).
  • Cohort billing is an allowlist of four ids today; adding a fifth package is a lookup change, not a schema change — but it must still pass the digest pin before it takes effect (source: datasets/lookups/lookup.finmon.cohort_billing.v1.json; source: docs/jijibora-gtm/09_GAP_ANALYSIS_AND_RECOMMENDATIONS.md).