{
  "title": "PIN-BLOCKS",
  "meaning": "People, Intelligence, Networks",
  "version": 2,
  "note": "Design specifications; all preview data is illustrative.",
  "modules": [
    {
      "id": "C01",
      "title": "Capability atlas",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "bars",
      "purpose": "Reveal the skills and resources members have chosen to share. Move from a name list to an actionable inventory.",
      "fields": [
        "person_id",
        "community_id",
        "skill_tag",
        "evidence_type",
        "visibility",
        "updated_at"
      ],
      "measure": "Count distinct visible members by skill. A member may appear in multiple categories; category totals are not unique people.",
      "action": "Select a capability, inspect consented profiles, then ask whether a specific contribution is available.",
      "guard": "A declared skill is not an offer. Separate self-declared experience from checked credentials. Do not rank human worth.",
      "empty": "Show what is known and invite missing context; never interpret missing profiles as missing talent.",
      "sample": [
        [
          "Career",
          32
        ],
        [
          "Business",
          28
        ],
        [
          "Volunteer",
          46
        ],
        [
          "Creative",
          35
        ]
      ],
      "how": "Normalize visible skill tags; deduplicate people within each category; group by capability; open only profiles whose visibility permits discovery.",
      "design": "Horizontal capability bars and selectable category nodes. Always show coverage and overlapping membership.",
      "dependencies": [
        "P05",
        "P08"
      ],
      "sourceConcepts": [
        "Constellation / vector talent mapping"
      ],
      "addedInPIN": false
    },
    {
      "id": "C02",
      "title": "Needs & capacity",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "bars",
      "purpose": "See what people need alongside what members can actually provide during the same period.",
      "fields": [
        "need_id",
        "offer_id",
        "category",
        "capacity_remaining",
        "unit",
        "available_from",
        "expires_at",
        "unresolved_need_duration_days",
        "cohort_id",
        "fulfilled_at"
      ],
      "measure": "Offers and needs are separate counts. Compare available slots and open requests only for compatible units and time windows. A needs-clearance rate is fulfilled needs / eligible needs in one defined cohort; the sample 12 fulfilled out of 20 eligible needs is 60%, not 8 offers / 12 requests.",
      "action": "Open an oversubscribed category and recruit providers, create a group session, or review eligible candidates.",
      "guard": "Do not subtract people from hours or assume all slots fit all requests. Capacity must be reserved to avoid double booking.",
      "empty": "No current offers: show an honest gap and an invitation to contribute.",
      "sample": [
        [
          "Requests",
          12
        ],
        [
          "Available sessions",
          8
        ]
      ],
      "how": "Load current needs and offers; align category, unit and time window; exclude expired or unavailable capacity; display both sides on a common scale before testing pair eligibility.",
      "design": "Paired bars with explicit units, a request-age column and a separate candidate count. Never use a stacked total to imply clearance.",
      "dependencies": [
        "P05",
        "P08"
      ],
      "sourceConcepts": [
        "Supply & Demand Index / needs clearance",
        "Global schemas & three React component examples"
      ],
      "addedInPIN": false
    },
    {
      "id": "C03",
      "title": "Explainable introductions",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "pair",
      "purpose": "Surface useful connections with a clear reason to act, then ask both people for permission.",
      "fields": [
        "need_id",
        "offer_id",
        "eligibility_checks",
        "match_reasons",
        "permission_state",
        "capacity_hold"
      ],
      "measure": "Eligible candidate pairs after permission, timing, location, capacity, and category checks. Distinct needs with candidates is a separate count.",
      "action": "Review the fit, preview an invitation, request permission, and introduce only after both accept.",
      "guard": "Never display a fabricated compatibility percentage. Re-check capacity and consent before sending.",
      "empty": "No eligible candidate: say why, let the member refine their request, or ask for partner-community permission.",
      "sample": [
        [
          "Amina K.",
          "Portfolio feedback"
        ],
        [
          "Yusuf R.",
          "One review available"
        ]
      ],
      "how": "Apply scope, expiry, category, timing, capacity and blocking checks; explain the surviving fit; hold capacity; request both permissions; release permitted contact only after both accept.",
      "design": "Two equal person cards, reasons to connect, invitation preview and a permission status stepper.",
      "dependencies": [
        "C02",
        "P08"
      ],
      "sourceConcepts": [
        "High-Match Potential notification",
        "“Ignite Match” trigger",
        "Global schemas & three React component examples"
      ],
      "addedInPIN": false
    },
    {
      "id": "C04",
      "title": "Career support desk",
      "roles": [
        "owner"
      ],
      "stage": "Start",
      "kind": "timeline",
      "purpose": "Help members who explicitly request job or career support without labeling people from inferred employment status.",
      "fields": [
        "request_id",
        "support_type",
        "member_visibility",
        "deadline",
        "assigned_steward",
        "case_status"
      ],
      "measure": "Open opted-in career requests, age of request, and confirmed assistance. Job placement is counted only when reported and confirmed.",
      "action": "Triage a private request, identify a résumé reviewer or mentor, and follow up on the agreed action.",
      "guard": "Employment difficulties are member-declared. Sensitive case details stay with authorized stewards, not the public roster.",
      "empty": "Offer a discreet way to ask for help and explain who can see the request.",
      "sample": [
        [
          "Request shared",
          "Private"
        ],
        [
          "Steward assigned",
          "In progress"
        ],
        [
          "Review completed",
          "Confirmed"
        ]
      ],
      "how": "Accept an explicitly requested private support case; assign an authorized steward; record the agreed support action; confirm assistance and close with a reason.",
      "design": "Private case queue with age, owner and next action. Keep sensitive narrative out of the community map.",
      "dependencies": [
        "P08",
        "P10"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C05",
      "title": "Follow-through board",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "See where introductions stall and make sure a promising connection becomes useful help.",
      "fields": [
        "introduction_id",
        "proposed_at",
        "accepted_by_each",
        "introduced_at",
        "outcome_id",
        "closed_reason"
      ],
      "measure": "Track one cohort from proposal to acceptance to outcome. Pending and declined cases stay distinct.",
      "action": "Review waiting cases, send an appropriate reminder, or close a request with a reason.",
      "guard": "No automatic repeated nudges. Respect withdrawal, do-not-contact preferences, and blocked relationships.",
      "empty": "No introductions yet: create one from a real current need.",
      "sample": [
        [
          "Proposed",
          32
        ],
        [
          "Both accepted",
          20
        ],
        [
          "Confirmed",
          12
        ]
      ],
      "how": "Build one introduction cohort; derive state from recorded events; show cases still awaiting a response or outcome; offer a consent-aware follow-up action.",
      "design": "Stage funnel and actionable queue. Show pending and declined cases separately rather than hiding them.",
      "dependencies": [
        "C03",
        "C06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C06",
      "title": "Outcome receipts",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "numbers",
      "purpose": "Capture a small, credible record of what happened and whether the recipient found it useful.",
      "fields": [
        "outcome_id",
        "need_id",
        "outcome_type",
        "confirmed_by",
        "confirmed_at",
        "usefulness",
        "evidence_source"
      ],
      "measure": "Unique fulfilled needs and unique beneficiaries per period. Distinguish self-reported, jointly confirmed, and transaction-backed evidence.",
      "action": "Ask both parties a short follow-up, resolve conflicting answers, and add a consented story to the impact report.",
      "guard": "An accepted introduction is not a job, venture, or completed service. Keep money, hours, and outcomes in separate units.",
      "empty": "Pending evidence is shown as pending, never silently converted into failure or success.",
      "sample": [
        [
          "Confirmed",
          12
        ],
        [
          "Awaiting follow-up",
          8
        ]
      ],
      "how": "Ask provider and recipient about the specific help; keep independent responses; resolve conflicting reports; attach evidence level and an outcome type.",
      "design": "Compact outcome receipt with confirmation sources, date, usefulness and a correction path.",
      "dependencies": [
        "C03",
        "P08"
      ],
      "sourceConcepts": [
        "Circulation of Value / Waqf Multiplier"
      ],
      "addedInPIN": false
    },
    {
      "id": "C07",
      "title": "Program opportunity finder",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Turn repeated needs into shared interventions such as office hours, workshops, or a mentor circle.",
      "fields": [
        "need_category",
        "open_request_count",
        "preferred_times",
        "provider_capacity",
        "program_interest"
      ],
      "measure": "Count compatible requests within a defined time window; validate interest before committing resources.",
      "action": "Review a cluster, ask members whether a group format helps, and draft a program with an available facilitator.",
      "guard": "Category similarity alone does not imply shared circumstances or permission to disclose individual needs.",
      "empty": "Too few compatible requests: keep individual routing or collect explicit interest.",
      "sample": [
        [
          "Interview practice",
          9
        ],
        [
          "Portfolio reviews",
          12
        ],
        [
          "Business basics",
          6
        ]
      ],
      "how": "Group compatible current needs; compare available facilitators and time windows; ask members if a group format fits; publish only after a facilitator accepts.",
      "design": "Opportunity card beside a cluster of needs. Include the assumption and the smallest next organizing step.",
      "dependencies": [
        "C02",
        "C18"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C08",
      "title": "Volunteer mobilization",
      "roles": [
        "owner"
      ],
      "stage": "Start",
      "kind": "bars",
      "purpose": "Match willing people to specific roles, times, and commitments.",
      "fields": [
        "role_id",
        "required_skills",
        "shift_time",
        "capacity",
        "volunteer_opt_in",
        "attendance_confirmation"
      ],
      "measure": "Unfilled role slots, confirmed commitments, and completed volunteer hours recorded separately.",
      "action": "Inspect a role, invite eligible volunteers, confirm a shift, and record completion.",
      "guard": "A volunteering skill tag is not consent to be scheduled. Eligibility requirements depend on the role.",
      "empty": "Show open roles and an opt-in offer flow; do not imply everyone is available.",
      "sample": [
        [
          "Slots needed",
          6
        ],
        [
          "Available offers",
          10
        ],
        [
          "Confirmed shifts",
          4
        ]
      ],
      "how": "Create a role with eligibility and shift capacity; invite opted-in people; record acceptance; hold slots; confirm attendance and actual hours separately.",
      "design": "Shift board with open, held and confirmed places; a clear distinction between willingness and assignment.",
      "dependencies": [
        "C02",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C09",
      "title": "Local business exchange",
      "roles": [
        "owner"
      ],
      "stage": "Grow",
      "kind": "ledger",
      "purpose": "Make member businesses discoverable and route relevant service requests with clear commercial terms.",
      "fields": [
        "business_id",
        "service_tags",
        "service_area",
        "availability",
        "pricing_mode",
        "referral_id",
        "transaction_id"
      ],
      "measure": "Track service requests, accepted referrals, confirmed work, and recorded transaction value separately.",
      "action": "Compare relevant offers, request an introduction, and disclose any referral fee before acceptance.",
      "guard": "Community membership does not certify quality or professional licensing. Sponsored listings are clearly labeled.",
      "empty": "No matching provider: retain the request and offer a permissioned referral outside the community.",
      "sample": [
        [
          "Recorded service value",
          "$1,200"
        ],
        [
          "Platform fee",
          "$60"
        ],
        [
          "Provider gross remainder",
          "$1,140"
        ]
      ],
      "how": "Index permitted service listings; filter by service area, current availability and request fit; disclose terms; route the request; record completed work and transactions separately.",
      "design": "Service cards plus a referral and transaction ledger. Place any sponsored label beside the offer.",
      "dependencies": [
        "C03",
        "P11"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C10",
      "title": "Entry-point performance",
      "roles": [
        "owner",
        "platform",
        "ambassador"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "Learn which QR codes, events, and invitation links create meaningful participation.",
      "fields": [
        "entry_point_id",
        "entry_point_type",
        "scans_total",
        "attributed_join_id",
        "profiles_created",
        "current_context_at",
        "profile_completion_percentage",
        "first_outcome_at",
        "attribution_window"
      ],
      "measure": "Compare the same attributed join cohort by profiles created, current-context completion, first confirmed outcome and median time to current context. Filter repeat and bot scans. A 48/80 current-context cohort is 60% complete; this does not score the quality of people.",
      "action": "Compare invite channels, inspect drop-off, and improve the onboarding step with the largest loss.",
      "guard": "Do not equate scans with people or attendance. Filter obvious bots and deduplicate repeated activity.",
      "empty": "No attributed events: explain instrumentation and show an empty funnel.",
      "sample": [
        [
          "Joined",
          80
        ],
        [
          "Current context",
          48
        ],
        [
          "First outcome",
          9
        ]
      ],
      "how": "Attribute joins to an entry point under a declared window; deduplicate scans; follow the same join cohort through current context and first outcome; calculate time to each milestone.",
      "design": "Entry-point comparison table and cohort funnel. Profile completion describes information coverage, not human value.",
      "dependencies": [
        "C11",
        "P03"
      ],
      "sourceConcepts": [
        "Onboarding Velocity by Entry Point",
        "Entry Point Efficiency Grid"
      ],
      "addedInPIN": false
    },
    {
      "id": "C11",
      "title": "New-member activation",
      "roles": [
        "owner",
        "ambassador"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "Help new members reach their first useful interaction, beyond profile completion.",
      "fields": [
        "membership_id",
        "joined_at",
        "context_created_at",
        "introduction_id",
        "first_outcome_at"
      ],
      "measure": "Cohort-based activation: first confirmed useful outcome within a defined period. Show the period and incomplete observation windows.",
      "action": "Identify the next incomplete step, offer relevant guidance, and hand off people who need support.",
      "guard": "Ambassadors see aggregate activation for their accounts, not members’ private needs or conversations.",
      "empty": "Recent cohorts remain in progress until the observation window ends.",
      "sample": [
        [
          "Joined",
          50
        ],
        [
          "Shared intent",
          34
        ],
        [
          "Introduced",
          18
        ],
        [
          "Help confirmed",
          8
        ]
      ],
      "how": "Define a join cohort and observation window; derive context, introduction and first-outcome milestones; identify the missing step and offer relevant support.",
      "design": "Milestone funnel with incomplete observation windows marked in progress.",
      "dependencies": [
        "C03",
        "C06"
      ],
      "sourceConcepts": [
        "Onboarding Velocity by Entry Point"
      ],
      "addedInPIN": false
    },
    {
      "id": "C12",
      "title": "Member-controlled passport",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "tags",
      "purpose": "Keep a portable profile with community-specific membership and visibility. Preserve the original identity and contact-sharing idea.",
      "fields": [
        "person_id",
        "profile_fields",
        "membership_id",
        "field_visibility",
        "verification_claim",
        "share_link"
      ],
      "measure": "Profile readiness is a utility checklist, not a score of member value. Verify each claim independently.",
      "action": "Choose visible fields, share a link or QR code, and manage community membership and contact permissions.",
      "guard": "Membership confirmation, identity proofing, and credential checks have separate labels and expiry. Avoid “owned forever” claims without a delivery policy.",
      "empty": "Allow a minimal profile and progressive completion.",
      "sample": [
        [
          "Membership confirmed",
          ""
        ],
        [
          "Skills self-declared",
          ""
        ],
        [
          "Contact private",
          ""
        ]
      ],
      "how": "Store identity separately from community memberships; enforce field visibility per membership; show independent verification claims; render a shareable profile and export.",
      "design": "Member profile with visibility controls, share link, memberships and claim-specific verification labels.",
      "dependencies": [
        "P04",
        "P08",
        "P09"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C13",
      "title": "Links & contact exchange",
      "roles": [
        "owner"
      ],
      "stage": "Start",
      "kind": "tags",
      "purpose": "Retain useful profile links, booking pages, and deliberate contact exchange without crowding the command center.",
      "fields": [
        "profile_id",
        "link_type",
        "destination",
        "contact_exchange_consent",
        "relationship_id"
      ],
      "measure": "Track consented exchanges as relationships. A profile visit is not a named connection.",
      "action": "Open a booking link, share a contact card, or exchange details through an explicit action.",
      "guard": "Do not identify anonymous viewers or silently import someone’s address book into a community directory.",
      "empty": "A profile with no links still works for needs, offers, and introductions.",
      "sample": [
        [
          "Book a call",
          ""
        ],
        [
          "Business page",
          ""
        ],
        [
          "Exchange contact",
          ""
        ]
      ],
      "how": "Save member-selected destinations and explicit exchange permission; validate link types; record deliberate contact exchanges; let members revoke sharing.",
      "design": "Simple contact actions and useful links, separate from operational dashboard metrics.",
      "dependencies": [
        "C12",
        "P09"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C14",
      "title": "Community return statement",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "ledger",
      "purpose": "Show how money was allocated, what is pending, and what the community actually received.",
      "fields": [
        "allocation_id",
        "policy_version",
        "period",
        "accrual",
        "refund_adjustments",
        "settlement_id"
      ],
      "measure": "Accrued amount = paid amount + pending amount after adjustments. Keep platform revenue and community share distinct.",
      "action": "Inspect the calculation and policy version, review adjustments, and export an approved statement.",
      "guard": "Illustrative policy until agreed. Revenue sharing does not automatically establish ownership or cooperative governance.",
      "empty": "No earnings yet: show zero and explain eligible activity without projecting guaranteed returns.",
      "sample": [
        [
          "Accrued",
          "$240"
        ],
        [
          "Paid",
          "$180"
        ],
        [
          "Pending",
          "$60"
        ]
      ],
      "how": "Read approved allocations and settlement records; apply refunds and adjustments; reconcile accrued = paid + pending; expose the policy and period.",
      "design": "Readable statement with calculation drill-down and clearly separated paid and pending amounts.",
      "dependencies": [
        "P11",
        "P18"
      ],
      "sourceConcepts": [
        "50% Community Profit-Sharing Allocation Ledger"
      ],
      "addedInPIN": false
    },
    {
      "id": "C15",
      "title": "Partner-community bridges",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Scale",
      "kind": "graph",
      "purpose": "Find complementary help in another community when local capacity is insufficient.",
      "fields": [
        "source_community",
        "target_community",
        "request_scope",
        "sharing_consent",
        "partner_agreement",
        "route_id"
      ],
      "measure": "Cross-community requests, accepted introductions, and confirmed outcomes; deduplicate people with multiple memberships.",
      "action": "Ask for broader discovery, share only the approved request, and introduce through a partner steward.",
      "guard": "Never expose all profiles across communities by default. Authorization is checked on each route and field.",
      "empty": "No partner capacity: preserve the request and invite a new partner deliberately.",
      "sample": [
        [
          "Plano",
          "Career circle"
        ],
        [
          "Alumni",
          "Mentoring"
        ],
        [
          "Business hub",
          "Services"
        ]
      ],
      "how": "Check the partner agreement and member-approved scope; search eligible partner offers; request a bounded introduction; attribute confirmed results without duplicating them.",
      "design": "Community bridge diagram with scope, permission and status alongside the route.",
      "dependencies": [
        "C03",
        "P15"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C16",
      "title": "Engagement & reach",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Understand whether relevant invitations reach members and whether participation is broadening.",
      "fields": [
        "campaign_id",
        "recipient_consent",
        "delivered_at",
        "responded_at",
        "participation_event",
        "cohort"
      ],
      "measure": "Delivery, response, participation, and outcomes with explicit denominators. Segment only on permitted, relevant attributes.",
      "action": "Choose an opted-in audience, preview an invitation, and compare participation across cohorts.",
      "guard": "Clicks are useful operational signals, not proof of social impact. Avoid sensitive inferred segmentation.",
      "empty": "No response data: show unknown rather than assuming members are disengaged.",
      "sample": [
        [
          "Delivered",
          80
        ],
        [
          "Responded",
          24
        ],
        [
          "Participated",
          16
        ]
      ],
      "how": "Select a permitted audience for a relevant invitation; log delivery, response and participation; compare equivalent cohorts and outcomes.",
      "design": "A reach funnel with denominators and an outcome panel. Avoid a single engagement score.",
      "dependencies": [
        "P08",
        "C06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P01",
      "title": "Network overview",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "bars",
      "purpose": "See the platform’s communities, data coverage, and current operating activity in one place.",
      "fields": [
        "community_id",
        "membership_id",
        "person_id",
        "current_context",
        "period",
        "community_status"
      ],
      "measure": "Separate unique people, memberships, active communities, and current contributors. Aggregate without double counting.",
      "action": "Drill into a community’s health signals and assigned operator, then prioritize support.",
      "guard": "Platform-level oversight does not grant blanket access to sensitive member content.",
      "empty": "New communities show onboarding progress and coverage, not invented activity.",
      "sample": [
        [
          "Members with context",
          4320
        ],
        [
          "Without current context",
          2880
        ]
      ],
      "how": "Aggregate unique people separately from memberships; group by community and period; calculate coverage and activity using shared definitions; drill into authorized operations.",
      "design": "Network summary, distribution chart and exception queue. Put actionable gaps beside counts.",
      "dependencies": [
        "P03",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P02",
      "title": "Data quality workbench",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "bars",
      "purpose": "Find stale offers, missing constraints, invalid tags, and duplicated records before they damage recommendations.",
      "fields": [
        "entity_id",
        "validation_rule",
        "source",
        "updated_at",
        "quality_issue",
        "resolution"
      ],
      "measure": "Issue counts by type and severity; freshness is measured against category-specific expiry policies.",
      "action": "Inspect a flagged record, ask for clarification, correct source data, and rerun validation.",
      "guard": "Preserve the original and a correction history. Do not silently rewrite a member’s intent.",
      "empty": "No issues found means checks passed, not that all underlying claims are true.",
      "sample": [
        [
          "Stale offers",
          74
        ],
        [
          "Missing availability",
          52
        ],
        [
          "Duplicate candidates",
          18
        ]
      ],
      "how": "Run versioned completeness, validity, freshness and duplication rules; create review tasks with source evidence; revalidate after correction.",
      "design": "Issue queue organized by severity and owner, with before-and-after source comparison.",
      "dependencies": [
        "P03",
        "P05"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P03",
      "title": "Ingestion & reconciliation",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "Bring existing rosters into a clean, reviewable onboarding process.",
      "fields": [
        "import_batch_id",
        "source_row_id",
        "mapping_version",
        "consent_basis",
        "validation_status",
        "member_claim_status"
      ],
      "measure": "Rows received, valid rows, review-required rows, and member-claimed profiles. Imported records are not automatically active members.",
      "action": "Map source fields, preview changes, review rejected rows, then invite members to claim and confirm.",
      "guard": "Imports do not create consent for discovery or outreach. Minimize collected fields and avoid overwriting verified facts.",
      "empty": "Show a sample field map before any real import.",
      "sample": [
        [
          "Received",
          500
        ],
        [
          "Valid",
          460
        ],
        [
          "Invited",
          420
        ],
        [
          "Claimed",
          260
        ]
      ],
      "how": "Map an import to approved fields; preview validation and duplicate candidates; preserve source lineage; invite people to claim records; reconcile accepted and rejected rows.",
      "design": "Import funnel, field mapper and rejected-row explanation. Imported does not mean consented.",
      "dependencies": [
        "P04",
        "P08"
      ],
      "sourceConcepts": [
        "Gate, Entry Point, Relationship, Context",
        "Global schemas & three React component examples"
      ],
      "addedInPIN": false
    },
    {
      "id": "P04",
      "title": "Identity & deduplication",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "pair",
      "purpose": "Connect multiple community memberships to the right person without accidental merging.",
      "fields": [
        "person_id",
        "membership_id",
        "verified_contact",
        "duplicate_signal",
        "merge_review",
        "reversal_record"
      ],
      "measure": "Suspected duplicates are review tasks, not automatic identity determinations.",
      "action": "Compare permitted evidence, ask for member confirmation, merge carefully, and retain a reversible history.",
      "guard": "Shared names, households, and devices are not sufficient proof. Never merge identities on similarity alone.",
      "empty": "Uncertain records remain separate.",
      "sample": [
        [
          "Profile A",
          "Review required"
        ],
        [
          "Profile B",
          "Member confirmation"
        ]
      ],
      "how": "Generate possible duplicate candidates from permitted evidence; compare records; require suitable confirmation; preserve reversible merge history.",
      "design": "Side-by-side profile review with explicit uncertainty and a reversible merge decision.",
      "dependencies": [
        "P08",
        "P09"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P05",
      "title": "Taxonomy & intent studio",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "tags",
      "purpose": "Keep skills, needs, offers, and goals understandable across communities while allowing local vocabulary.",
      "fields": [
        "canonical_tag",
        "alias",
        "locale",
        "category_version",
        "member_confirmation",
        "source_text"
      ],
      "measure": "Unmapped terms, confirmed mappings, and tag changes that affect eligibility.",
      "action": "Suggest a normalized category, let the member confirm it, and maintain aliases with version history.",
      "guard": "AI suggestions remain suggestions. Preserve original wording and do not infer sensitive attributes.",
      "empty": "Unclassified text remains usable and can enter manual review.",
      "sample": [
        [
          "Skill: UX design",
          ""
        ],
        [
          "Need: portfolio review",
          ""
        ],
        [
          "Offer: 30 minutes",
          ""
        ]
      ],
      "how": "Map member language to versioned skill and intent categories; retain original wording; suggest aliases; ask for confirmation when meaning is ambiguous.",
      "design": "Tag mapping workbench with original phrase, proposed term, evidence and review status.",
      "dependencies": [
        "P03",
        "P08"
      ],
      "sourceConcepts": [
        "Gate, Entry Point, Relationship, Context"
      ],
      "addedInPIN": false
    },
    {
      "id": "P06",
      "title": "Routing observability",
      "roles": [
        "platform"
      ],
      "stage": "Grow",
      "kind": "funnel",
      "purpose": "Monitor the operational path from eligible candidate to actual help.",
      "fields": [
        "route_id",
        "rule_version",
        "eligibility_result",
        "delivery_status",
        "acceptance_event",
        "outcome_event"
      ],
      "measure": "One cohort’s eligible, proposed, accepted, and completed routes. Separate technical failures from human declines.",
      "action": "Inspect drop-off and failure reasons, then repair rules or delivery issues.",
      "guard": "A ranking change must not bypass consent, blocked pairs, or capacity checks.",
      "empty": "No routing history: use deterministic rules and a human review queue.",
      "sample": [
        [
          "Eligible",
          820
        ],
        [
          "Proposed",
          640
        ],
        [
          "Accepted",
          420
        ],
        [
          "Confirmed",
          286
        ]
      ],
      "how": "Join eligibility, delivery, acceptance and outcome events using route IDs; follow a defined cohort; group blocked or failed routes by reason.",
      "design": "Stage funnel and reason breakdown. Human decline must remain distinct from delivery failure.",
      "dependencies": [
        "C03",
        "C06",
        "P14"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P07",
      "title": "Matching evaluation",
      "roles": [
        "platform"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Learn which recommendations are useful and whether exposure is concentrated unfairly.",
      "fields": [
        "model_or_rule_version",
        "shown_candidate",
        "review_label",
        "decline_reason",
        "outcome",
        "exposure_count"
      ],
      "measure": "Precision on reviewed candidates, acceptance, outcome usefulness, and exposure distribution. Compare like-for-like cohorts.",
      "action": "Review a sample of matches, test changes against a baseline, and roll back degraded behavior.",
      "guard": "Historical selection is biased. Do not optimize only for popular members or use protected-trait proxies.",
      "empty": "Insufficient evidence: retain simple rules and report uncertainty.",
      "sample": [
        [
          "Relevant reviewed pairs",
          72
        ],
        [
          "Irrelevant reviewed pairs",
          28
        ]
      ],
      "how": "Sample recommendations for review; compare model versions against a simple baseline; measure relevance, acceptance, usefulness and exposure; roll back degraded versions.",
      "design": "Version comparison with sample sizes and outcome evidence, plus an exposure-distribution panel.",
      "dependencies": [
        "P06",
        "P08"
      ],
      "sourceConcepts": [
        "Sponsored Route Performance / Alignment Match"
      ],
      "addedInPIN": false
    },
    {
      "id": "P08",
      "title": "Permission & audit center",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "timeline",
      "purpose": "Make access decisions and changes to sensitive records inspectable.",
      "fields": [
        "actor_id",
        "role",
        "scope",
        "permission",
        "resource_id",
        "decision",
        "audit_timestamp"
      ],
      "measure": "Allowed and denied access by policy version; high-risk permission changes are reviewable events.",
      "action": "Inspect an access event, review role grants, and revoke unnecessary access.",
      "guard": "Least privilege and community boundaries apply server-side. Demo role switching is not production authorization.",
      "empty": "No audit events: confirm instrumentation before displaying a security assurance.",
      "sample": [
        [
          "Permission requested",
          "Logged"
        ],
        [
          "Scope checked",
          "Enforced"
        ],
        [
          "Decision recorded",
          "Auditable"
        ]
      ],
      "how": "Resolve actor, role, tenant, purpose and field scope for each request; record the decision; support scoped grants and revocation; inspect audit trails.",
      "design": "Permission matrix and audit timeline. A dashboard dropdown only previews a role.",
      "dependencies": [
        "P04"
      ],
      "sourceConcepts": [
        "Gate, Entry Point, Relationship, Context"
      ],
      "addedInPIN": false
    },
    {
      "id": "P09",
      "title": "Privacy & lifecycle",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "timeline",
      "purpose": "Operationalize visibility, consent changes, retention, export, and deletion.",
      "fields": [
        "consent_record",
        "purpose",
        "visibility",
        "retention_policy",
        "deletion_request",
        "completion_record"
      ],
      "measure": "Open requests, overdue actions, and completed lifecycle operations with evidence.",
      "action": "Process an access/export/deletion request and propagate visibility changes to search and routing.",
      "guard": "Aggregates can still reveal people in small groups. Suppress small cells and prevent revealing differences across filters.",
      "empty": "No requests pending is not evidence of full compliance; show the process state only.",
      "sample": [
        [
          "Request received",
          "1 day"
        ],
        [
          "Scope reviewed",
          "2 days"
        ],
        [
          "Completed",
          "Recorded"
        ]
      ],
      "how": "Apply consent and retention rules to records, indexes, exports and backups under defined policies; propagate changes; verify deletion or export completion.",
      "design": "Lifecycle queue with requested, processing and completed states plus evidence.",
      "dependencies": [
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P10",
      "title": "Trust & support queue",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "tags",
      "purpose": "Handle reports, unwanted introductions, suspicious offers, and disputes through human review.",
      "fields": [
        "report_id",
        "reporter",
        "reason",
        "resource",
        "review_status",
        "appeal",
        "resolution"
      ],
      "measure": "Open reports by severity and age, response time, and appeal outcomes.",
      "action": "Triage, restrict risky activity when justified, review evidence, and communicate an appeal route.",
      "guard": "Avoid global social scores or public allegations. Share case details only with authorized reviewers.",
      "empty": "No open cases: show reporting pathways and recent operational checks.",
      "sample": [
        [
          "Unwanted contact",
          ""
        ],
        [
          "Offer dispute",
          ""
        ],
        [
          "Credential concern",
          ""
        ]
      ],
      "how": "Receive a report; triage severity; assign authorized reviewers; preserve evidence; record decisions and appeals; communicate only the permitted result.",
      "design": "Private support queue with status, owner, deadline and appeal path.",
      "dependencies": [
        "P08",
        "P09"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P11",
      "title": "Economic ledger & allocation",
      "roles": [
        "platform"
      ],
      "stage": "Grow",
      "kind": "ledger",
      "purpose": "Separate platform income, costs, distributable funds, community allocations, and settled transfers.",
      "fields": [
        "transaction_id",
        "refund_id",
        "cost_category",
        "pool_period",
        "policy_version",
        "allocation_id",
        "settlement_id"
      ],
      "measure": "Reconcile each layer independently. A sample 50% share of $4,800 defined distributable profit yields a $2,400 pool.",
      "action": "Review the pool calculation, apply an approved allocation policy, and reconcile each payout.",
      "guard": "Define the profit basis before promising percentages. No allocation from clicks or an opaque vitality score.",
      "empty": "No approved policy: keep calculations in a labeled scenario, not a payable balance.",
      "sample": [
        [
          "Defined profit",
          "$4,800"
        ],
        [
          "Illustrative share",
          "50%"
        ],
        [
          "Community pool",
          "$2,400"
        ]
      ],
      "how": "Reconcile transactions, fees, refunds and costs; compute defined distributable profit; apply the approved pool and allocation policy; post settlements and reversals.",
      "design": "Financial ledger with separate revenue, profit, allocated, paid and pending layers.",
      "dependencies": [
        "P18",
        "P08"
      ],
      "sourceConcepts": [
        "Network Multiplier / Total Circulated Value",
        "50% Community Profit-Sharing Allocation Ledger",
        "Global schemas & three React component examples"
      ],
      "addedInPIN": false
    },
    {
      "id": "P12",
      "title": "Sponsor program performance",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Grow",
      "kind": "funnel",
      "purpose": "Prove whether a sponsored program reached an opted-in audience and delivered its promised benefit.",
      "fields": [
        "campaign_id",
        "eligibility",
        "explicit_context",
        "opt_in",
        "invitation",
        "participation",
        "outcome",
        "disclosure",
        "reviewed_delivery_count",
        "relevant_reviewed_count",
        "program_cost"
      ],
      "measure": "Alignment relevance = relevant reviewed deliveries / reviewed deliveries, with sample method and size. A sample 36/40 is 90% reviewed relevance, not universal accuracy. Report eligible → invited → opted in → participated → confirmed benefit separately; cost per outcome needs actual recorded cost.",
      "action": "Review audience fit, approve labeled sponsor content, and report aggregate program outcomes.",
      "guard": "Sponsorship does not buy access to private member needs or covert ranking priority.",
      "empty": "No outcome evidence: report participation only.",
      "sample": [
        [
          "Invited",
          120
        ],
        [
          "Opted in",
          48
        ],
        [
          "Attended",
          36
        ],
        [
          "Benefit confirmed",
          27
        ]
      ],
      "how": "Define explicit audience eligibility; review context fit; invite opted-in members with sponsorship disclosed; log participation and confirmed benefit; audit a relevance sample.",
      "design": "Sponsor alignment funnel plus reviewed relevance rate and cost per confirmed outcome.",
      "dependencies": [
        "P07",
        "P17"
      ],
      "sourceConcepts": [
        "Sponsored Route Performance / Alignment Match"
      ],
      "addedInPIN": false
    },
    {
      "id": "P13",
      "title": "Public impact report",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Grow",
      "kind": "numbers",
      "purpose": "Translate verified activity into a clear, permissioned account of community benefit.",
      "fields": [
        "outcome_type",
        "period",
        "confirmation_level",
        "unique_beneficiary",
        "paid_return",
        "publication_consent"
      ],
      "measure": "Publish confirmed outcomes, unique beneficiaries, and paid community return as separate measures.",
      "action": "Choose a reporting period, inspect evidence, and approve an aggregate report or consented story.",
      "guard": "Do not turn collaborator matches into “ventures founded,” volunteer signups into hours served, or sample values into real impact.",
      "empty": "Low counts: combine periods or withhold details to protect identities.",
      "sample": [
        [
          "Confirmed outcomes",
          286
        ],
        [
          "Paid to communities",
          "$1,800"
        ]
      ],
      "how": "Assemble eligible confirmed outcomes and settled returns; deduplicate beneficiaries; suppress unsafe small groups; approve claims, stories and reporting methodology.",
      "design": "Public report preview with category cards, circulation chart and evidence links.",
      "dependencies": [
        "P19",
        "P20",
        "P21"
      ],
      "sourceConcepts": [
        "Public Impact Report dashboard",
        "Mentorships / Ventures / Volunteers cards",
        "Global schemas & three React component examples"
      ],
      "addedInPIN": false
    },
    {
      "id": "P14",
      "title": "Reliability & delivery",
      "roles": [
        "platform"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Keep invitations, searches, and background jobs dependable as the network grows.",
      "fields": [
        "job_id",
        "queue_age",
        "delivery_attempt",
        "failure_code",
        "latency",
        "incident_id"
      ],
      "measure": "Successful deliveries / attempted deliveries, queue age, latency percentiles, and actionable failures.",
      "action": "Retry recoverable failures with idempotency, investigate repeated errors, and communicate relevant incidents.",
      "guard": "Delivery success is not human response. Never retry a revoked or expired invitation.",
      "empty": "Missing telemetry is shown as unavailable, not 100% uptime.",
      "sample": [
        [
          "Delivered",
          980
        ],
        [
          "Retrying",
          14
        ],
        [
          "Failed",
          6
        ]
      ],
      "how": "Instrument each delivery attempt and job; record queue age, retry reason and idempotency key; retry only eligible operations; surface incidents.",
      "design": "Operational status chart and failed-job queue with retry eligibility explained.",
      "dependencies": [
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "P15",
      "title": "Federation & distribution",
      "roles": [
        "platform"
      ],
      "stage": "Scale",
      "kind": "graph",
      "purpose": "Coordinate partner communities without creating unrestricted global access to people.",
      "fields": [
        "community_pair",
        "agreement",
        "request_scope",
        "consent",
        "route_id",
        "attribution_rule"
      ],
      "measure": "Accepted inter-community routes, completed outcomes, and attributed benefits under a declared deduplication rule.",
      "action": "Identify complementary capacity, review an agreement, and open a bounded discovery bridge.",
      "guard": "Keep local stewardship and member permission. Cross-network search must honor the source community’s restrictions.",
      "empty": "No approved bridge: show a partnership request rather than member records.",
      "sample": [
        [
          "Community",
          "Local needs"
        ],
        [
          "Partner",
          "Shared scope"
        ],
        [
          "Network",
          "Confirmed results"
        ]
      ],
      "how": "Register partner agreements and source restrictions; enforce scope on each cross-community query; log route lineage and policy; reconcile shared outcomes.",
      "design": "Partner network with direction, agreement scope and route status; no unrestricted member search.",
      "dependencies": [
        "C15",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A01",
      "title": "Prospect relationship book",
      "roles": [
        "ambassador"
      ],
      "stage": "Start",
      "kind": "tags",
      "purpose": "Keep a deliberate record of organizers, institutions, and businesses interested in the platform.",
      "fields": [
        "prospect_id",
        "organization",
        "consented_contact",
        "source",
        "owner",
        "next_action",
        "stage"
      ],
      "measure": "Unique qualified organizations with a defined next action. Deduplicate across ambassadors.",
      "action": "Capture a prospect with permission, add context, and schedule the next agreed conversation.",
      "guard": "No scraping of private member lists. Prospect contacts are not enrolled community members.",
      "empty": "Start with a real conversation and a clear reason for follow-up.",
      "sample": [
        [
          "Mosque",
          ""
        ],
        [
          "Athlete collective",
          ""
        ],
        [
          "Alumni network",
          ""
        ]
      ],
      "how": "Capture a consented organization contact; deduplicate against assigned accounts; record needs, stage and next agreed action; assign ownership.",
      "design": "Relationship list with next action and owner. Do not import private member rosters.",
      "dependencies": [
        "P04",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A02",
      "title": "Relationship pipeline",
      "roles": [
        "ambassador",
        "platform"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "Move communities from a first conversation to an activated pilot with clear stage definitions.",
      "fields": [
        "prospect_id",
        "qualified_at",
        "demo_at",
        "pilot_agreed_at",
        "activated_at",
        "lost_reason"
      ],
      "measure": "Track a defined cohort across qualified, demo, pilot, and activated stages; do not divide unrelated stock counts.",
      "action": "Inspect the stalled stage, identify the next agreed action, and record why a prospect progressed or declined.",
      "guard": "A signed pilot is not an active community. Define activation by actual member value.",
      "empty": "No pipeline: show a first-prospect action and qualification criteria.",
      "sample": [
        [
          "Qualified",
          24
        ],
        [
          "Demo",
          12
        ],
        [
          "Pilot",
          6
        ],
        [
          "Activated",
          3
        ]
      ],
      "how": "Define prospect cohort and stage events; retain lost or declined outcomes; compute transitions only within that cohort; surface stalled next steps.",
      "design": "Pipeline columns or funnel with dates and the reason each organization moved.",
      "dependencies": [
        "A01",
        "A06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A03",
      "title": "Territory & visit planner",
      "roles": [
        "ambassador"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Plan outreach across assigned regions using organization records and confirmed meetings.",
      "fields": [
        "organization_id",
        "city",
        "territory",
        "assignment",
        "meeting_time",
        "visit_status"
      ],
      "measure": "Qualified prospects, booked visits, and activation by region. A location chart uses organization addresses, not member tracking.",
      "action": "Review an assigned region, group nearby meetings, and prepare a relevant demonstration.",
      "guard": "Do not infer market size from platform penetration. A future geographic view needs verified coordinates and a real basemap.",
      "empty": "Unassigned territory: request ownership before contacting duplicate prospects.",
      "sample": [
        [
          "Dallas",
          8
        ],
        [
          "Houston",
          6
        ],
        [
          "Chicago",
          5
        ],
        [
          "Atlanta",
          5
        ]
      ],
      "how": "Group assigned organization locations and confirmed meetings; verify coordinates if mapping; prevent duplicate ownership; plan visits around agreed appointments.",
      "design": "Territory bars now, organization map when geocoded, and a next-visit agenda.",
      "dependencies": [
        "A01",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A04",
      "title": "Honest demo studio",
      "roles": [
        "ambassador"
      ],
      "stage": "Start",
      "kind": "numbers",
      "purpose": "Show what the product could do using explicit assumptions and a clearly labeled sample community.",
      "fields": [
        "scenario_member_count",
        "participation_assumption",
        "request_rate",
        "offer_rate",
        "capacity_assumption"
      ],
      "measure": "Scenario arithmetic only: participants × explicitly chosen rates. No prediction of economic value or guaranteed matches.",
      "action": "Choose community type, adjust assumptions, and walk through a sample introduction and outcome.",
      "guard": "Never present scenario output as measured data. A member count alone cannot predict hidden wealth or compatible pairings.",
      "empty": "Use a sample with a visible “illustration” label until real consented data exists.",
      "sample": [
        [
          "Scenario members",
          300
        ],
        [
          "Assumed participation",
          "60%"
        ]
      ],
      "how": "Take explicit member, participation, need and offer assumptions; show the arithmetic and uncertainty; demonstrate one hypothetical permission flow.",
      "design": "Editable scenario sliders with labeled outputs and an unknown actual-match result.",
      "dependencies": [
        "C03"
      ],
      "sourceConcepts": [
        "Simulated Impact onboarding calculator"
      ],
      "addedInPIN": false
    },
    {
      "id": "A05",
      "title": "Invitation attribution",
      "roles": [
        "ambassador",
        "platform"
      ],
      "stage": "Start",
      "kind": "funnel",
      "purpose": "Connect outreach activity to organization onboarding and real activation.",
      "fields": [
        "ambassador_id",
        "invite_id",
        "prospect_id",
        "attribution_window",
        "community_id",
        "activation_event"
      ],
      "measure": "Attributed qualified organizations, agreed pilots, and activated communities under one documented rule.",
      "action": "Create a campaign-specific invite and inspect where interested organizers drop off.",
      "guard": "Attribution is not proof of causation. Define duplicate claims, shared credit, and attribution expiry.",
      "empty": "Unattributed activity stays unattributed rather than assigned to the latest touch by default.",
      "sample": [
        [
          "Invite responses",
          40
        ],
        [
          "Qualified",
          24
        ],
        [
          "Pilots",
          6
        ],
        [
          "Activated",
          3
        ]
      ],
      "how": "Generate source-specific invitations; connect consented organizations to a declared attribution window; resolve duplicates and shared credit; follow through to activation.",
      "design": "Invitation-source funnel and attribution exception list.",
      "dependencies": [
        "A01",
        "A02"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A06",
      "title": "Pilot launch checklist",
      "roles": [
        "ambassador",
        "owner"
      ],
      "stage": "Start",
      "kind": "timeline",
      "purpose": "Give every new community a repeatable path from interest to its first useful outcome.",
      "fields": [
        "community_id",
        "named_steward",
        "scope",
        "member_invites",
        "provider_offers",
        "first_route",
        "first_outcome"
      ],
      "measure": "Milestones completed and blocked, with an accountable owner and due date.",
      "action": "Confirm a steward, choose one use case, seed real supply and demand, and facilitate the first introduction.",
      "guard": "A complete checklist alone is not a successful pilot. Require member feedback and a confirmed useful outcome.",
      "empty": "New pilot: begin with the steward and intended member benefit.",
      "sample": [
        [
          "Steward ready",
          "Done"
        ],
        [
          "Offers seeded",
          "Done"
        ],
        [
          "First outcome",
          "Next"
        ]
      ],
      "how": "Name a steward and a first use case; seed available offers and real requests; facilitate a first introduction; obtain a confirmed useful outcome.",
      "design": "Launch checklist with owner and evidence for each milestone, not a percentage of promised success.",
      "dependencies": [
        "C03",
        "C06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A07",
      "title": "Account activation watch",
      "roles": [
        "ambassador",
        "platform"
      ],
      "stage": "Grow",
      "kind": "bars",
      "purpose": "Find pilots that need practical support rather than more selling.",
      "fields": [
        "community_id",
        "pilot_start",
        "current_context_count",
        "provider_count",
        "open_needs",
        "first_outcome"
      ],
      "measure": "Coverage and milestone progress within an assigned account. Compare accounts only with the same observation window.",
      "action": "Spot a lack of offers or unanswered requests and arrange a support session with the community steward.",
      "guard": "Ambassadors get aggregate activation and assigned tasks, not access to individual employment problems.",
      "empty": "No current context: help the organizer onboard a small cohort instead of generating fake insights.",
      "sample": [
        [
          "Community A",
          72
        ],
        [
          "Community B",
          45
        ],
        [
          "Community C",
          28
        ]
      ],
      "how": "Read only assigned-account aggregates; compare pilot coverage and outcomes in equivalent windows; identify missing supply or demand; assign a support action.",
      "design": "Pilot comparison cards with the next milestone and no member-level private needs.",
      "dependencies": [
        "A06",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A08",
      "title": "Handoff & success plan",
      "roles": [
        "ambassador",
        "owner"
      ],
      "stage": "Start",
      "kind": "timeline",
      "purpose": "Preserve the commitments made during onboarding and hand the account to the right support owner.",
      "fields": [
        "account_id",
        "agreed_scope",
        "success_criteria",
        "owner",
        "next_review",
        "open_commitment"
      ],
      "measure": "Open commitments, accepted handoffs, and first-outcome status.",
      "action": "Write the agreed scope, assign the ongoing owner, and schedule a review with the organizer.",
      "guard": "Do not promise unavailable functionality or unapproved payout terms. Keep a visible version of the agreement.",
      "empty": "Unaccepted handoff remains assigned to the existing owner.",
      "sample": [
        [
          "Scope agreed",
          "Recorded"
        ],
        [
          "Owner assigned",
          "Accepted"
        ],
        [
          "Review booked",
          "Next week"
        ]
      ],
      "how": "Record scope, success criteria and commitments; assign the receiving owner; request handoff acceptance; carry unresolved commitments into scheduled reviews.",
      "design": "Handoff timeline with explicit ownership and outstanding actions.",
      "dependencies": [
        "A01",
        "A06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A09",
      "title": "Ambassador earnings",
      "roles": [
        "ambassador",
        "platform"
      ],
      "stage": "Grow",
      "kind": "ledger",
      "purpose": "Give ambassadors a transparent statement based on approved commercial terms.",
      "fields": [
        "contract_version",
        "eligible_account",
        "commission_event",
        "refund_adjustment",
        "approval",
        "settlement"
      ],
      "measure": "Separate estimated, approved, and paid commission. Tie each line to a contractual earning event.",
      "action": "Inspect eligible activity, review an adjustment, and see the settlement status.",
      "guard": "Separate commissions from the community pool. No earnings promises before the contract and eligibility rules exist.",
      "empty": "No approved contract: show the policy placeholder, not a projected balance.",
      "sample": [
        [
          "Approved",
          "$600"
        ],
        [
          "Paid",
          "$400"
        ],
        [
          "Pending",
          "$200"
        ]
      ],
      "how": "Evaluate eligible earning events against contract version; approve commissions; post adjustments and settlements; reconcile pending balances.",
      "design": "Personal earnings statement with estimated, approved, pending and paid separated.",
      "dependencies": [
        "P11",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "A10",
      "title": "Proof & field learning",
      "roles": [
        "ambassador",
        "platform"
      ],
      "stage": "Grow",
      "kind": "tags",
      "purpose": "Bring real objections, successful use cases, and consented outcome stories back into product learning.",
      "fields": [
        "interview_id",
        "organization_type",
        "objection_tag",
        "consented_quote",
        "verified_outcome",
        "feature_request"
      ],
      "measure": "Count recurring themes across distinct organizations. Stories are evidence of examples, not universal effectiveness.",
      "action": "Capture a field insight, link a verified story, and route a repeated objection to the product team.",
      "guard": "Do not publish names, photos, or identifiable stories without permission. Separate requested features from promised roadmap.",
      "empty": "No proof yet: demonstrate the workflow honestly and collect pilot feedback.",
      "sample": [
        [
          "“Who can see this?”",
          ""
        ],
        [
          "First useful introduction",
          ""
        ],
        [
          "Need easier onboarding",
          ""
        ]
      ],
      "how": "Capture field feedback with consent; tag recurring themes; link evidence-backed outcomes; distinguish requests from commitments; route findings to product owners.",
      "design": "Learning board with source context, frequency and consented stories.",
      "dependencies": [
        "A01",
        "C06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "F01",
      "title": "Shared resource inventory",
      "roles": [
        "owner"
      ],
      "stage": "Grow",
      "kind": "tags",
      "purpose": "Map useful community assets beyond skills: spaces, equipment, training materials, and available services.",
      "fields": [
        "resource_id",
        "owner",
        "resource_type",
        "availability",
        "capacity",
        "booking_rules",
        "visibility"
      ],
      "measure": "Available resources by type and time, with reservations and confirmed use tracked separately.",
      "action": "Find a suitable asset, request access, and confirm use under the owner’s conditions.",
      "guard": "Listing an asset is not granting universal access. Availability, responsibility, and booking terms must be explicit.",
      "empty": "Show a contribution invitation rather than assuming the community owns the resource.",
      "sample": [
        [
          "Meeting room",
          ""
        ],
        [
          "Training materials",
          ""
        ],
        [
          "Recording equipment",
          ""
        ]
      ],
      "how": "Record asset ownership, capacity and booking conditions; expose permitted listings; reserve against availability; confirm actual use.",
      "design": "Resource inventory with availability calendar and explicit request-to-book action.",
      "dependencies": [
        "C12",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "F02",
      "title": "Collective purchasing",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "funnel",
      "purpose": "Turn explicitly shared demand into a possible group purchase with clear terms and voluntary participation.",
      "fields": [
        "purchase_interest",
        "quantity",
        "budget_band",
        "vendor_quote",
        "member_commitment",
        "order",
        "fulfillment"
      ],
      "measure": "Interest, committed quantity, paid orders, and fulfilled orders. Savings require a documented comparison basis.",
      "action": "Validate demand, request a vendor quote, share terms, and let members opt in before committing funds.",
      "guard": "Interest is not an order. Do not pool money or promise discounts before the process and responsibilities are defined.",
      "empty": "Insufficient demand: close the proposal without obligation.",
      "sample": [
        [
          "Interested",
          40
        ],
        [
          "Terms accepted",
          25
        ],
        [
          "Ordered",
          20
        ],
        [
          "Fulfilled",
          18
        ]
      ],
      "how": "Collect opt-in purchase interest with units; obtain a quote; disclose terms; distinguish commitments from paid orders; track fulfillment and refunds.",
      "design": "Demand-to-order funnel and a terms panel before any commitment.",
      "dependencies": [
        "P11",
        "P08"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "F03",
      "title": "Event-to-opportunity layer",
      "roles": [
        "owner",
        "ambassador"
      ],
      "stage": "Grow",
      "kind": "funnel",
      "purpose": "Help an event produce useful follow-up through explicit attendee interests and offers.",
      "fields": [
        "event_id",
        "optional_check_in",
        "need_or_offer",
        "intro_permission",
        "followup",
        "outcome"
      ],
      "measure": "Opted-in participants, accepted introductions, and confirmed outcomes attributable under a stated rule.",
      "action": "Invite attendees to share one intent, suggest relevant introductions, and follow up after the event.",
      "guard": "A QR scan does not prove attendance or reveal who is nearby. Never imply precise seat or row location.",
      "empty": "No shared intent: offer a short optional prompt instead of generating recommendations.",
      "sample": [
        [
          "Opted in",
          60
        ],
        [
          "Introductions",
          18
        ],
        [
          "Accepted",
          12
        ],
        [
          "Outcomes",
          7
        ]
      ],
      "how": "Invite optional event check-ins and current intent; propose eligible introductions; obtain consent; follow up and attribute confirmed help under a stated rule.",
      "design": "Event funnel and follow-up queue; entry-point scans alone are not attendance.",
      "dependencies": [
        "C03",
        "C10"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "F04",
      "title": "Relationship constellation",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Scale",
      "kind": "graph",
      "purpose": "Explore actual consented relationships, isolated groups, and bridges between circles.",
      "fields": [
        "relationship_id",
        "relationship_type",
        "source_evidence",
        "participants",
        "visibility",
        "timestamp"
      ],
      "measure": "Show observed relationships separately from suggested matches and shared categories. Coverage limits every interpretation.",
      "action": "Filter by a relationship type, inspect evidence, and invite a steward to support a disconnected group.",
      "guard": "No inferred friendship or trust from co-membership. Do not expose private relationships or score a person’s social worth.",
      "empty": "Sparse graph: show the coverage limit and use a capability atlas instead.",
      "sample": [
        [
          "Observed",
          "Confirmed"
        ],
        [
          "Suggested",
          "Not connected"
        ],
        [
          "Shared category",
          "Not a relationship"
        ]
      ],
      "how": "Load visible observed relationships with provenance; keep proposed routes and shared categories as different edge types; filter context groups; inspect only permitted evidence.",
      "design": "Selectable constellation with separate observed, suggested and category layers plus a keyboard-accessible list.",
      "dependencies": [
        "C01",
        "P08"
      ],
      "sourceConcepts": [
        "Gate, Entry Point, Relationship, Context",
        "Constellation / vector talent mapping"
      ],
      "addedInPIN": false
    },
    {
      "id": "F05",
      "title": "Demand planning",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Scale",
      "kind": "bars",
      "purpose": "Plan future support using sufficient historical demand, seasonality, and measured service capacity.",
      "fields": [
        "category",
        "period",
        "open_requests",
        "fulfilled_requests",
        "capacity",
        "history_coverage",
        "forecast_version"
      ],
      "measure": "Forecast ranges evaluated against a simple baseline, with error and sample size. Separate projections from observed data.",
      "action": "Explore a demand scenario, compare available capacity, and decide whether to recruit or schedule a program.",
      "guard": "No reliable forecast from a small or changing sample. Show uncertainty and avoid sensitive individual predictions.",
      "empty": "Insufficient history: show recent observed demand only.",
      "sample": [
        [
          "Observed period 1",
          18
        ],
        [
          "Observed period 2",
          24
        ],
        [
          "Observed period 3",
          21
        ]
      ],
      "how": "Build category-level history with coverage and service capacity; compare a simple baseline to a forecast; backtest error; display ranges and model version.",
      "design": "Observed trend plus a separate forecast band; no forecast when history is inadequate.",
      "dependencies": [
        "C02",
        "C06"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "F06",
      "title": "Contribution concentration",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Scale",
      "kind": "bars",
      "purpose": "Check whether a few willing contributors are carrying too many requests and make room for new participants.",
      "fields": [
        "offer_id",
        "capacity",
        "accepted_commitments",
        "completed_help",
        "decline_reason",
        "member_preferences"
      ],
      "measure": "Load against declared capacity and distribution of opportunities. This is workload planning, not a moral score.",
      "action": "Pause overloaded offers, ask for updated availability, and surface eligible members receiving little exposure.",
      "guard": "Do not infer burnout or personal wellbeing. Ask members directly and never penalize declining help.",
      "empty": "No capacity data: request an update rather than assigning a utilization score.",
      "sample": [
        [
          "Committed slots",
          8
        ],
        [
          "Declared capacity",
          10
        ],
        [
          "New offers",
          4
        ]
      ],
      "how": "Compare accepted commitments with explicitly declared capacity; identify overloaded offers and eligible underexposed providers; ask before reallocating.",
      "design": "Capacity utilization by offer or aggregate group, without a moral or wellbeing score.",
      "dependencies": [
        "C02",
        "P07"
      ],
      "sourceConcepts": [],
      "addedInPIN": false
    },
    {
      "id": "C17",
      "title": "Routing speed & response time",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "velocity",
      "purpose": "Find the points where a current request waits too long for useful help.",
      "fields": [
        "need_id",
        "route_id",
        "created_at",
        "first_response_at",
        "accepted_at",
        "completed_at",
        "closed_reason",
        "cohort_end"
      ],
      "measure": "Median and 90th-percentile elapsed time at each stage, with sample size and still-open requests reported separately.",
      "action": "Inspect the slowest stage and assign a steward, refresh capacity, or clarify a request.",
      "guard": "Completed-only timing hides unresolved requests. Compare equivalent categories and cohorts, and never equate speed with quality.",
      "empty": "No completed routes: show open-request ages and the observation window.",
      "sample": [
        [
          "First response",
          "6h median"
        ],
        [
          "Both accepted",
          "18h median"
        ],
        [
          "Help completed",
          "3d median"
        ]
      ],
      "how": "Join lifecycle timestamps by route; compute durations for completed stages and ages for open cases; report median, P90 and counts; drill into the slow stage.",
      "design": "Use a three-stage timing strip and separate open-age bars. Never hide still-waiting requests.",
      "dependencies": [
        "C03",
        "C05",
        "C06"
      ],
      "sourceConcepts": [
        "Asset Liquidity / Kinetic Community Energy"
      ],
      "addedInPIN": true
    },
    {
      "id": "C18",
      "title": "Critical gaps overlay",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "gap",
      "purpose": "Show which specific needs lack enough available, eligible help so the organizer can recruit deliberately.",
      "fields": [
        "category",
        "need_id",
        "offer_id",
        "available_slots",
        "unit",
        "time_window",
        "eligible_pair_count",
        "oldest_open_days"
      ],
      "measure": "Compare requests and slots with the same category, unit and period; separately count requests without any eligible candidate.",
      "action": "Open a gap, inspect constraints, and invite a provider or design a group program.",
      "guard": "A skill percentage is not service capacity. Unknown data is shown separately; a numeric surplus does not prove a match.",
      "empty": "No current context: invite needs and offers before claiming a shortage.",
      "sample": [
        [
          "Career sessions",
          "12 needs / 8 slots"
        ],
        [
          "Business sessions",
          "6 needs / 4 slots"
        ],
        [
          "Volunteer shifts",
          "6 needs / 10 slots"
        ]
      ],
      "how": "Group current requests and available slots by compatible units and period; calculate indicative shortfalls; count requests lacking an eligible candidate; display age and coverage.",
      "design": "Paired bars or heat cells with numbers, units and words. Show a distinct unknown state.",
      "dependencies": [
        "C02",
        "C01"
      ],
      "sourceConcepts": [
        "Supply & Demand Index / needs clearance",
        "Critical Gaps Overlay"
      ],
      "addedInPIN": true
    },
    {
      "id": "C19",
      "title": "Event talent density",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "density",
      "purpose": "Help organizers see opted-in capability clusters at an event or venue without exposing exact member locations.",
      "fields": [
        "event_id",
        "entry_point_id",
        "opt_in_check_in",
        "broad_zone",
        "time_bucket",
        "shared_category",
        "distinct_participants",
        "publication_threshold"
      ],
      "measure": "Distinct opted-in participants per broad zone and time bucket, after deduplication and suppression. This is event presence, not precise proximity.",
      "action": "Select an event period and use aggregate demand to schedule a mentoring desk or skill circle.",
      "guard": "The original “row away” idea becomes a broad-zone illustration. Never identify a seat, row, live individual position, or infer attendance from scans. Suppression needs a reviewed policy.",
      "empty": "Below threshold: show “withheld” and a broader period; never reveal a small cell through subtraction.",
      "sample": [
        [
          "Welcome area",
          "24 opted-in"
        ],
        [
          "Workshop area",
          "18 opted-in"
        ],
        [
          "Small group",
          "Withheld"
        ]
      ],
      "how": "Accept a separate opt-in event check-in; bucket into broad zones and delayed time periods; deduplicate participants; apply suppression and differencing checks before rendering aggregates.",
      "design": "A broad-zone tile map with withheld cells and a capability legend; never render an identifiable row or seat.",
      "dependencies": [
        "F03",
        "P09"
      ],
      "sourceConcepts": [
        "“Row Away” Density Map"
      ],
      "addedInPIN": true
    },
    {
      "id": "C20",
      "title": "Ecosystem vitality indicators",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Start",
      "kind": "vitality",
      "purpose": "Make community readiness understandable through visible, defined measures of coverage, fit and completed help.",
      "fields": [
        "member_count",
        "current_context_count",
        "open_needs",
        "needs_with_candidate",
        "accepted_introductions",
        "confirmed_outcomes",
        "period"
      ],
      "measure": "Show three separate rates: current context / members; needs with candidate / open needs; confirmed useful outcomes / accepted introductions in the same cohort.",
      "action": "Inspect the weakest indicator and open its underlying queue.",
      "guard": "These are operational indicators, not a percentage of human or latent potential. Any later composite must disclose weights, version and validation; it must not silently allocate money.",
      "empty": "Missing denominator: show unknown, not zero or a healthy score.",
      "sample": [
        [
          "Current context",
          "180 / 300"
        ],
        [
          "Needs with candidate",
          "16 / 24"
        ],
        [
          "Confirmed useful",
          "12 / 20"
        ]
      ],
      "how": "Compute each indicator from its own documented denominator; show components and freshness; open the source queue. A composite, if later adopted, needs a versioned formula and validation.",
      "design": "Three labeled progress indicators with numerator, denominator and period. The ring measures coverage only.",
      "dependencies": [
        "P01",
        "C02",
        "C06"
      ],
      "sourceConcepts": [
        "Communal Health Score for allocations",
        "Ecosystem Vitality / 68% latent potential"
      ],
      "addedInPIN": true
    },
    {
      "id": "C21",
      "title": "Live value activity feed",
      "roles": [
        "owner",
        "platform"
      ],
      "stage": "Grow",
      "kind": "activity",
      "purpose": "Show evidence of help moving through the community and give stewards the next useful action.",
      "fields": [
        "event_id",
        "route_id",
        "stage",
        "occurred_at",
        "source_role",
        "target_role",
        "community_id",
        "entry_point_id",
        "visibility",
        "confirmation"
      ],
      "measure": "Timestamped lifecycle events with explicit states: proposed, permission requested, both accepted, help confirmed. Count unique outcomes separately.",
      "action": "Review a proposed introduction, follow up on an accepted one, or open the evidence for completed help.",
      "guard": "Pseudonyms and role labels can still identify people in small groups. Public feeds require aggregation, delay and publication approval.",
      "empty": "No visible events: say no events in this period, not that every need is resolved.",
      "sample": [
        [
          "4 min ago",
          "Introduction proposed"
        ],
        [
          "2 hours ago",
          "Both accepted"
        ],
        [
          "Yesterday",
          "Help confirmed"
        ]
      ],
      "how": "Append route lifecycle events; deduplicate them; enforce visibility before the feed query; show only allowed details and actions; redact or aggregate the public variant.",
      "design": "Timestamped activity rows with explicit state chips and one next action. New events must not steal focus.",
      "dependencies": [
        "C03",
        "C05",
        "C06"
      ],
      "sourceConcepts": [
        "High-Match Potential notification",
        "Live Value Feed"
      ],
      "addedInPIN": true
    },
    {
      "id": "P16",
      "title": "Cross-community routing heatmap",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Scale",
      "kind": "heatmap",
      "purpose": "Reveal where approved partner bridges lead to completed help and where routes stall.",
      "fields": [
        "source_community_id",
        "target_community_id",
        "route_id",
        "cross_route_count",
        "successful_outcomes_count",
        "period",
        "agreement",
        "coordinates_source"
      ],
      "measure": "Directed community-pair counts, with accepted routes and confirmed outcomes as separate layers. Rates require the same route cohort.",
      "action": "Select a community pair, inspect results and decide whether to expand or repair that bridge.",
      "guard": "Use authorized aggregates. Geographic arcs require verified organization coordinates and a real basemap; the prototype is a labeled network matrix.",
      "empty": "No approved routes: show an empty bridge opportunity, not invented links.",
      "sample": [
        [
          "Plano → Alumni",
          "8 outcomes"
        ],
        [
          "Plano → Business",
          "3 outcomes"
        ],
        [
          "Alumni → Plano",
          "5 outcomes"
        ]
      ],
      "how": "Group authorized cross-community routes by directed pair; calculate accepted and completed layers within one cohort; suppress small sensitive cells; expose evidence for each approved aggregate.",
      "design": "A labeled matrix first; network arcs or a geographic view only when real coordinates and permissions exist.",
      "dependencies": [
        "P15",
        "C06"
      ],
      "sourceConcepts": [
        "Cross-Community Routing Heatmap"
      ],
      "addedInPIN": true
    },
    {
      "id": "P17",
      "title": "Tracker & sponsor integrity audit",
      "roles": [
        "platform"
      ],
      "stage": "Start",
      "kind": "audit",
      "purpose": "Give operators inspectable evidence about trackers, processors, sponsorship rules and storage configuration.",
      "fields": [
        "audit_id",
        "checked_at",
        "scope",
        "network_destination",
        "processor_inventory",
        "campaign_id",
        "reviewed_match_count",
        "storage_region",
        "evidence_link",
        "reviewer"
      ],
      "measure": "Record findings and coverage per test. Contextual match accuracy is relevant reviewed deliveries / reviewed deliveries; it is not a privacy audit result.",
      "action": "Inspect evidence, investigate an unknown destination, and approve or restrict a sponsor integration.",
      "guard": "Zero findings in a scoped scan is not a guarantee of no trackers. Region claims need evidence for storage, backups and subprocessors. No “100% secure” badge.",
      "empty": "No fresh audit evidence: show not verified with an owner and review task.",
      "sample": [
        [
          "Profile tracker scan",
          "Not verified"
        ],
        [
          "Processor inventory",
          "Review required"
        ],
        [
          "Storage scope",
          "Evidence needed"
        ]
      ],
      "how": "Inventory scripts, destinations and processors; run scoped checks; record evidence and time; separately review sponsor alignment; require a reviewer before publishing claims.",
      "design": "Audit rows with scope, freshness, reviewer and evidence. Missing checks remain visibly unverified.",
      "dependencies": [
        "P08",
        "P12"
      ],
      "sourceConcepts": [
        "Sponsored Route Performance / Alignment Match",
        "Ad-Tracker & Sponsor Integrity Audit",
        "Verified Anonymity / zero trackers / EU proof"
      ],
      "addedInPIN": true
    },
    {
      "id": "P18",
      "title": "Community pool policy simulator",
      "roles": [
        "platform"
      ],
      "stage": "Grow",
      "kind": "allocation",
      "purpose": "Make the proposed 50% net-profit pool and community allocation weights transparent before they become payable terms.",
      "fields": [
        "net_profit_definition",
        "profit_period",
        "pool_percent",
        "community_id",
        "upgraded_members",
        "eligible_outcomes",
        "upgrade_weight",
        "policy_version",
        "adjustments",
        "approval"
      ],
      "measure": "Pool = defined distributable net profit × approved pool rate. Scenario shares normalize an explicit mix of upgrade share and confirmed-outcome share across eligible communities.",
      "action": "Adjust the hypothetical weighting, inspect each community’s calculation, then submit a policy for governance approval.",
      "guard": "The example is not an approved contract. Do not reward clicks or inferred social worth. Handle zero denominators, eligibility, refunds, rounding and disputes explicitly.",
      "empty": "No policy or eligible basis: show a simulation only; no payable amount.",
      "sample": [
        [
          "Defined net profit",
          "$4,800"
        ],
        [
          "Pool rate",
          "50%"
        ],
        [
          "Scenario pool",
          "$2,400"
        ]
      ],
      "how": "Define net profit and eligible communities; choose an explicit scenario pool rate and upgrade-versus-outcome weight; normalize both bases; calculate shares and reconcile cents; approval creates a new policy version.",
      "design": "Editable assumptions and a community allocation table showing every basis and calculated result.",
      "dependencies": [
        "P11",
        "C06"
      ],
      "sourceConcepts": [
        "Communal Health Score for allocations",
        "50% Community Profit-Sharing Allocation Ledger"
      ],
      "addedInPIN": true
    },
    {
      "id": "P19",
      "title": "Connected communities impact ticker",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Grow",
      "kind": "impact",
      "purpose": "Give the public an understandable picture of participating communities and specific confirmed forms of help.",
      "fields": [
        "community_id",
        "activity_definition",
        "outcome_id",
        "outcome_type",
        "confirmed_at",
        "publication_consent",
        "period",
        "cohort"
      ],
      "measure": "Count communities meeting a published activity definition and distinct confirmed outcomes by type. Mentorships, projects, ventures and volunteer work have different evidence.",
      "action": "Choose a reporting period, inspect the methodology and publish a reviewed aggregate snapshot.",
      "guard": "A connection is not a venture founded; a signup is not a shift completed. Avoid “transformed” or “self-sustaining” unless measured. Public view is a preview, not an access-policy change.",
      "empty": "Insufficient publishable data: explain the pilot and omit unsupported headline claims.",
      "sample": [
        [
          "Active communities",
          "18"
        ],
        [
          "Mentoring sessions",
          "140"
        ],
        [
          "Volunteer shifts",
          "90"
        ]
      ],
      "how": "Choose a reporting period; count communities meeting a defined activity threshold; aggregate confirmed outcome types; run publication checks; refresh only after evidence is approved.",
      "design": "A quiet connected-node visual and large outcome cards with methodology. Do not imply live activity in a static sample.",
      "dependencies": [
        "P13",
        "P16"
      ],
      "sourceConcepts": [
        "Network Multiplier / Total Circulated Value",
        "Public Impact Report dashboard",
        "Connected Civilizations Ticker / globe",
        "Mentorships / Ventures / Volunteers cards"
      ],
      "addedInPIN": true
    },
    {
      "id": "P20",
      "title": "Community wealth circulation tracker",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Grow",
      "kind": "circulation",
      "purpose": "Show how much money actually returned to communities and what portion was later confirmed as reinvested.",
      "fields": [
        "settlement_id",
        "community_id",
        "paid_amount",
        "currency",
        "settled_at",
        "refund_adjustment",
        "reinvestment_receipt",
        "designated_fund"
      ],
      "measure": "Cumulative settled transfers net of reversals; distinct recipient communities; verified reinvested amount / eligible settled amount for a defined period.",
      "action": "Inspect a period, open settlement evidence and review a consented reinvestment story.",
      "guard": "“Waqf multiplier” is the source concept, not proof of endowment status or economic multiplier. Keep routed transaction volume, platform profit and community payouts separate.",
      "empty": "No settlement: show pending allocation separately. Unreported reinvestment stays unknown.",
      "sample": [
        [
          "July cumulative",
          "$450"
        ],
        [
          "August cumulative",
          "$1,100"
        ],
        [
          "September cumulative",
          "$1,800"
        ]
      ],
      "how": "Sum settled transfers by period and currency, net of reversals; count unique recipient communities; link independently reported reinvestment receipts to eligible transfers.",
      "design": "Cumulative paid-return line with period totals, receipt drill-down and an unknown reinvestment state.",
      "dependencies": [
        "P11",
        "C14"
      ],
      "sourceConcepts": [
        "Circulation of Value / Waqf Multiplier",
        "Network Multiplier / Total Circulated Value",
        "Public Impact Report dashboard",
        "Cumulative Wealth Circulation / Waqf Tracker"
      ],
      "addedInPIN": true
    },
    {
      "id": "P21",
      "title": "Public trust & evidence counters",
      "roles": [
        "platform",
        "owner"
      ],
      "stage": "Grow",
      "kind": "trust",
      "purpose": "Let a public report explain its data practices with scoped, dated evidence instead of unsupported absolute claims.",
      "fields": [
        "claim_id",
        "claim_text",
        "scope",
        "evidence_link",
        "checked_at",
        "expires_at",
        "reviewer",
        "publication_approval"
      ],
      "measure": "Published claims carry the latest evidence date and scope. Unknown, pending review and verified within scope are distinct states.",
      "action": "Open the evidence behind a claim and request a refresh when it expires.",
      "guard": "“0 data brokers”, “0 trackers” and EU storage claims each need independent evidence. Never derive a compliance guarantee from a Boolean field.",
      "empty": "No evidence: display not verified and a clear description of the intended policy.",
      "sample": [
        [
          "Data-sharing inventory",
          "Pending review"
        ],
        [
          "Tracker checks",
          "Not verified"
        ],
        [
          "Storage evidence",
          "Not verified"
        ]
      ],
      "how": "Create each claim with scope and evidence; assign a reviewer and expiration; publish only approved claims; automatically mark expired or missing evidence for refresh.",
      "design": "Trust cards that show status in text, evidence date and scope. Keep claims independent.",
      "dependencies": [
        "P17",
        "P09"
      ],
      "sourceConcepts": [
        "Public Impact Report dashboard",
        "Verified Anonymity / zero trackers / EU proof"
      ],
      "addedInPIN": true
    }
  ],
  "audit": [
    [
      "Gate, Entry Point, Relationship, Context",
      "Expanded",
      [
        "P03",
        "P05",
        "P08",
        "F04"
      ],
      "Four primitives now have explicit records, links and TypeScript contracts in Data foundations."
    ],
    [
      "Supply & Demand Index / needs clearance",
      "Expanded",
      [
        "C02",
        "C18"
      ],
      "Paired needs and capacity, request ages and a separately defined fulfilled-needs rate. Offers/needs is not itself clearance."
    ],
    [
      "High-Match Potential notification",
      "Expanded",
      [
        "C03",
        "C21"
      ],
      "Candidate evidence and current eligibility lead to a reviewable permission request."
    ],
    [
      "Asset Liquidity / Kinetic Community Energy",
      "Added",
      [
        "C17"
      ],
      "Stage timing, response medians, P90 and unresolved ages replace an undefined energy score."
    ],
    [
      "Onboarding Velocity by Entry Point",
      "Expanded",
      [
        "C10",
        "C11"
      ],
      "Compare QR, WhatsApp, web embed and event cohorts by coverage, first outcome and time to activation."
    ],
    [
      "Constellation / vector talent mapping",
      "Expanded",
      [
        "C01",
        "F04"
      ],
      "Selectable Founders, Builders, Guides and Volunteers with category edges separated from observed relationships."
    ],
    [
      "Critical Gaps Overlay",
      "Added",
      [
        "C18"
      ],
      "Demand/capacity cells, eligible-candidate gaps and recruitment actions; incomplete profiles remain unknown."
    ],
    [
      "“Row Away” Density Map",
      "Added",
      [
        "C19"
      ],
      "Broad-zone, opt-in event aggregates with suppression. The precise row-3 assertion is unsupported and is not represented as fact."
    ],
    [
      "Circulation of Value / Waqf Multiplier",
      "Expanded",
      [
        "P20",
        "C06"
      ],
      "Confirmed help and settled returns are separate. “Multiplier” and endowment status require independent evidence."
    ],
    [
      "Communal Health Score for allocations",
      "Expanded",
      [
        "C20",
        "P18"
      ],
      "Visible health components plus a separate, transparent allocation-policy simulation. No hidden social score controls payment."
    ],
    [
      "Sponsored Route Performance / Alignment Match",
      "Expanded",
      [
        "P12",
        "P07",
        "P17"
      ],
      "Reviewed contextual relevance, opted-in participation, confirmed benefit and sponsorship integrity."
    ],
    [
      "Simulated Impact onboarding calculator",
      "Expanded",
      [
        "A04"
      ],
      "Member and participation assumptions are interactive; matching and money remain unknown until evidence exists."
    ],
    [
      "Ecosystem Vitality / 68% latent potential",
      "Added",
      [
        "C20"
      ],
      "Coverage, candidate availability and useful-outcome rates have explicit denominators. No claimed percentage of human potential."
    ],
    [
      "Entry Point Efficiency Grid",
      "Expanded",
      [
        "C10"
      ],
      "Entry type, scans, joins, completed current context and first outcomes stay distinct."
    ],
    [
      "Live Value Feed",
      "Added",
      [
        "C21"
      ],
      "Timestamped route stages, permission-aware details, and a separate aggregate public variant."
    ],
    [
      "“Ignite Match” trigger",
      "Expanded",
      [
        "C03"
      ],
      "Preview → request consent → both accept → contact release; simulation never claims real messages were sent."
    ],
    [
      "Network Multiplier / Total Circulated Value",
      "Expanded",
      [
        "P19",
        "P20",
        "P11"
      ],
      "Network outcomes, routed transaction volume and paid community return remain separate measures."
    ],
    [
      "50% Community Profit-Sharing Allocation Ledger",
      "Expanded",
      [
        "P11",
        "P18",
        "C14"
      ],
      "Defined net-profit pool plus visible upgrade/outcome weights, policy version, adjustments and settlements."
    ],
    [
      "Cross-Community Routing Heatmap",
      "Added",
      [
        "P16"
      ],
      "Directional route/outcome matrix and approved bridge detail; geographic alternative documented."
    ],
    [
      "Ad-Tracker & Sponsor Integrity Audit",
      "Added",
      [
        "P17"
      ],
      "Scoped evidence for trackers, processors, sponsor alignment and storage. Unknown is not a passing audit."
    ],
    [
      "Public Impact Report dashboard",
      "Expanded",
      [
        "P13",
        "P19",
        "P20",
        "P21"
      ],
      "A complete public-report preview now combines impact, circulation and trust evidence."
    ],
    [
      "Connected Civilizations Ticker / globe",
      "Added",
      [
        "P19"
      ],
      "Connected-community network alternative with a defined activity threshold and publication period."
    ],
    [
      "Mentorships / Ventures / Volunteers cards",
      "Expanded",
      [
        "P13",
        "P19"
      ],
      "Mentoring sessions, project collaborations and completed shifts require their own confirmations. Ventures remain unknown without formation evidence."
    ],
    [
      "Cumulative Wealth Circulation / Waqf Tracker",
      "Added",
      [
        "P20"
      ],
      "Settled returns over time, distinct recipients and verified reinvestment are explicit."
    ],
    [
      "Verified Anonymity / zero trackers / EU proof",
      "Added",
      [
        "P21",
        "P17"
      ],
      "Evidence-backed public claims with scope, review date and expiration; no hard-coded compliance badges."
    ],
    [
      "Global schemas & three React component examples",
      "Expanded",
      [
        "P03",
        "C02",
        "C03",
        "P11",
        "P13"
      ],
      "Typed contracts, component mapping and behavior notes cover all examples. The supplied snippets are treated as prototype references, not production-ready security or calculation code."
    ]
  ]
}