Koovira Dev Docs
30-core/platform-engines.md

Cross-cutting Platform Engines

Status: mixed (see each) Β· Last validated: 2026-09-06

Engines that span modules rather than belonging to one: Credit Score, Endorsements, Negotiation, Comparison, Trust. Validated against their classes + schema.


Koovira Credit Score β€” 🟒 Production

classs/WalletCreditScoreModule.php (~1,190 lines). A behavioural score computed from platform activity + transaction feedback.

  • recordAction(userId, actionType, impactAmount, moduleKey, entityType, entityId, note) (:1124)

β€” log a scoring signal.

  • recordEcommerceFeedback(recipient, sender, orderId, targetKey, score5, comment) (:319) β€” rating

β†’ score signal.

  • recomputeScore(userId) (:1141) β€” recompute; getHistory(userId, limit) (:1172).
  • Tables: wallet_credit_scores (45, recounted 2026-09-06 β€” was 39),

wallet_credit_score_activity_log (34,244, recounted β€” was 34,118 β€” heavily used).

  • Public explainer at /creditscore/overview.php (+ sub-pages). No monetization.

Endorsement Ecosystem β€” 🟒 Production (real credit currency, no purchase path)

classs/EndorsementModule.php (~1,860 lines). Skill/entity endorsements with a contribution credit currency.

  • Entity relations (setEntityRelation :366, getEntityRelation :345), review disputes

(disputeReview :315) + proof (addReviewProof :329).

  • Contribution accounting: precheckAction (:445), recordDailyTarget (:589),

checkAndRecordContribution (:656).

  • Tables: endorse_skill_master (2,686), endorse_credit_accounts (4), endorse_credit_ledger (17)

β€” a real currency with no way to buy any (monetization gap).

  • Pages /endorse.php, /topendorsed.php.

Negotiation Engine β€” 🟑 Complete but unused

classs/NegotiationModule.php (~525 lines), embedded on 6 surfaces (classifieds, CommerceX, real estate, hotel bulk, service, business view) via forms/doaction_negotiation.php.

  • Tables: negotiations (0), negotiation_status_logs (orphaned QA rows).
  • No nav entry, no success fee. Built, wired into product surfaces, effectively unused. Pages

/mynegotiations.php, /how_negotiation_works.php.

Comparison Engine β€” 🟑 Backend Only (orphaned)

classs/KvCompareEngine.php (~1,950 lines) + 4 REST endpoints + a cron + an admin console.

  • Tables: kv_compare_sources (19: Amazon/Flipkart/Croma/99acres/Zomato/Urban Company…),

kv_compare_offers (0).

  • Flag ON, but zero inbound links platform-wide β€” no listing page routes to /compare.php. Real,

complete, unreachable. Price-alert cron cron/compare_price_alerts.php.

Koovira Trust Layer β€” 🟑 Partial

classs/KooviraTrustScoreEngine.php, RatingsModule.php, ClaimKycModule.php. Trust score (ai_trust_scores 13), ratings (ratings), verification (priced-for, empty). Consumed by search ranking + trust badge. KYC detail: kyc-trust.md.


Business rules

  • BR-ENG-001 β€” credit score is derived, never set directly; write signals via recordAction.
  • BR-ENG-002 β€” endorsement contribution credits are earned (daily targets), not purchasable today.
  • BR-ENG-003 β€” negotiation/comparison are built but not monetized/surfaced; do not assume revenue.

Errors (prefix ENG-E)

  • ENG-E001 compare page shows nothing / unreachable β€” kv_compare_offers=0 + no inbound links.
  • ENG-E002 negotiation unused β€” no nav entry; negotiations=0.

Change-impact

Credit score + trust feed ranking and gating platform-wide β€” changing signals affects discovery and risk. Surfacing Comparison/Negotiation or pricing Endorsement credits are additive revenue moves.