Skip to content
Veloziq
Engine

Architecture you can see, code you can read

How the four systems work together, how third-party services plug in, and how the core rules are implemented. The code windows show real excerpts from the core platform, redacted and reviewed one by one.

Architecture

Veloziq Core is the core platform; the H5 app, landing pages and supervisor portal all talk to it over APIs, and every third-party callback is signature-verified.

H5 AppBorrower H5 / PWALandingTenant landing pagesSupervisorSupervisor portal (per tenant)Veloziq CoreAPI + three consolesDiditKYC / livenessCurlec · RazorpayCollections / payoutsRAFFTECHE-signaturesAWS SES · SNS · S3Email / SMS / storagePush · OTPPush / verification
API call Signed callback

Code tour

Pick a file from the tree and read the key logic step by step. Highlighted lines belong to the current step.

  1. The 4-layer KYC pipeline

    Didit's status is pre-processed first: reject outright, flag for manual review, or continue.

  2. Score → limit

    High and low bands auto-approve with a limit; review and reject bands get none.

  3. Fraud rules (structure)

    Reject if the same ID number was already approved for another user.

  4. Robot review: weighted risk score

    Each rule's score is multiplied by its weight and summed; rules that error are skipped.

  5. 4 overdue modes

    Month and year terms add calendar months; day terms can count the disbursement day.

  6. Auto-lending pipeline

    Each tenant with the workflow enabled runs in isolation — one failure doesn't stop the rest.

  7. Pre-payout checks

    After the failure cap it skips and hands off to staff instead of piling up failures.

  8. Waterfall allocation

    Overdue fee → penalty, in a fixed order.

  9. Schedule generation

    Equal instalments, interest-first and equal principal each have a generator.

  10. Upgrade rule matching

    Among rules whose thresholds are met, the highest percentage wins; ties go to the lowest id.

  11. Resolving the tenant

    The X-Tenant-Domain header wins, so packaged apps still resolve their tenant.

  12. Curlec callback verification

    Recalculated from the specified fields with the channel key.

  13. Didit webhook signature

    HMAC-SHA256 over the raw body, compared with X-Signature-V2 using hash_equals.

  14. RAFFTECH envelope encryption

    The request payload is AES-encrypted first.

  15. Scheduled jobs

    Hourly check of overdue loans, updating days and penalties.

  16. Code from the core platform, redacted: risk thresholds and similar parameters are replaced with config keys.

Tech stack

Core platform

  • PHP 8.2+
  • Laravel 12
  • Filament 4
  • Octane
  • Sanctum
  • Scribe
  • spatie/activitylog
  • PostgreSQL
  • Redis

Front-ends

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • shadcn/ui
  • next-intl
  • Zustand
  • PWA

Infrastructure

  • AWS S3
  • Nginx
  • Cloudflare
  • Laravel Scheduler
  • Queues
  • Blade (Supervisor)

Integrations

  • Didit
  • Curlec Payout
  • Razorpay
  • RAFFTECH
  • AWS SES
  • AWS SNS
  • Web Push
  • BlueBird
  • NXCloud

Automation

Jobs driven by the Laravel Scheduler — all withoutOverlapping, critical ones onOneServer.

  1. Auto-lending pipelineEvery minute

  2. Auto-disbursement scanEvery 3 min

  3. RAFFTECH signing reconciliationEvery 5 min

  4. Overdue checkHourly

  5. Activity log cleanupDaily 01:00

  6. Service usage log cleanupDaily 01:30

  7. Global statisticsDaily 02:00

  8. Expired OTP log cleanupDaily 03:00

  9. RAFFTECH log cleanupDaily 03:00

  10. Cache warm-upDaily 04:00

  11. Expired contract cleanupDaily 05:00

  12. Repayment remindersDaily 09:00

API overview

About 100 REST endpoints in 27 business groups, documented with Scribe.

Security by design

Encryption

Sensitive fields encrypted with hashed lookup; the supervisor portal uses AES-256.

Signature checks

Didit HMAC-SHA256 and Curlec checksums compared with hash_equals in constant time; RAFFTECH payloads carry a MAC.

Rate limiting

OTP, login and form endpoints limited by IP and tenant.

Tenant isolation

Global model scopes filter by tenant_id; platform admins can impersonate a tenant to debug.

Audit

Operation, admin-access and adjustment logs — all traceable.

See what it can do for your business

We'll run a full demo tailored to your country, products and process, and share deployment and pricing options.

Email usBook a demo