Register hawkers once. Allocate stalls by zone. Collect daily rent through the channel each vendor can actually use. Inspect from the field. No leakage, no favouritism, no parallel cash.
Every ward mapped to its hawker clusters. Compare collection-per-stall across wards. Spot where allocation doesn't match reality — under-registered zones or ghost allocations where no stall actually exists.
NID, photo, stall preference. Background check against duplicate registrations.
Zone · row · slot. Holiday market allocated separately, Friday-only.
bKash, field collector, manual reference, or portal. Receipt auto-issued.
Inspector QR-scans stall. Cross-checks against collection. Flags anomalies.
Nightly reconciliation. Ward councillor sees ward-level P&L. Mayor's office sees city total.
Scan QR taped to the stall. Payment lands in DSCC's merchant account with vendor ID as reference.
Staff visit with a collection device. Scan the stall, collect cash or mobile, receipt issued on the spot.
Send to DSCC merchant number, use vendor ID in the reference. Staff verify and credit. Fallback for no-smartphone.
Vendor (or family member) pays from the citizen-facing portal. No app install, works on any browser.
Allocated, ID'd, receipt-backed. Gets a formal record of payment — counts toward a livelihood history.
Sees collection per stall in their ward. Adjudicates disputes. Approves Friday-market allocations.
Ward-wise mobile, offline-first. QR-scan a stall, check payment status, log violation.
One dashboard, citywide. Revenue per ward, ghost-stall alerts, dispute pipeline, holiday-market P&L.
Registry, allocation, revenue, inspector, dashboard — proven pattern, validated component library. Change the domain, keep the engine.