Salik
An auction-based last-mile delivery marketplace. Merchants post a delivery and set the price in a live auction; independent couriers compete to accept. Money moves through an in-app wallet โ no cash to the platform.
The big idea
Restaurants, cafes, and shops already take their own orders (phone, Instagram, walk-in). What they lack is reliable, fairly-priced delivery without managing their own drivers or paying the heavy commissions of aggregators like Wolt, Bolt, or Yandex.
Salik is a neutral marketplace that only moves the goods. The merchant names a delivery price and couriers bid in a short 2โ3 minute auction โ the price is set by the market, not by us. The end customer never installs an app: they simply receive a message with a confirmation code and meet the courier.
Why it's different
๐ฏ Auction pricing
Merchants bid for courier attention. Transparent, market-set delivery prices instead of fixed aggregator tariffs.
๐ณ No commission on food
We sell prepaid delivery packages โ we don't take a cut of the merchant's food revenue.
๐ Wallet & escrow
COD is escrowed digitally (blocked on the courier wallet at pickup, released on delivery). No physical cash to the platform.
๐ฉ Zero-app customer
Customers confirm with a code over WhatsApp/SMS โ no install, no friction, instant reach.
How one delivery works
Current status & ask
Built and running today: the modular-monolith backend, a web app for all three roles, an 8-page admin console, a double-entry wallet ledger with live reconciliation, the full order lifecycle with 5-digit handoff codes, courier/merchant management with a verification flow, and prepaid-package monetization with credit enforcement.
Designed & specced, not yet built: the live auction, pricing engine, wallet escrow/COD, notifications, the dispute-rules engine, and role-based admin access โ several gated on external providers (CIBPAY, WhatsApp, Google Maps) and on legal agreements. A detailed financial model is in preparation.
Product Description
Salik is a last-mile delivery marketplace. Food is the first vertical; the same rails are designed for any sender.
What Salik is โ and isn't
Salik is not a food-ordering app for the public, and not a traditional courier employer. It is a technology platform that connects merchants who need delivery with independent couriers, and settles the money.
The four people in every delivery
| Who | Role |
|---|---|
| Merchant (restaurant/cafe/shop) | Already took the order from their customer. Posts the delivery and bids the price. |
| Courier | Independent. Accepts jobs, picks up, delivers. Wants fair, reliable pay. |
| Customer (recipient) | Ordered from the merchant. Not a Salik app user โ interacts only via a message + code and the courier at the door. |
| Operator (Salik staff) | Approves couriers, monitors orders, resolves disputes. |
Positioning
A general-purpose last-mile platform, food-first. The data model deliberately treats the โrestaurantโ as a generic merchant/sender, so the same product can later serve marketplace deliveries, business correspondence, and peer-to-peer parcels.
Brand & customer touchpoints
Sender brand is Salik, with the merchant's name in the message body. Salik runs a public brand/profile website. Customers aren't direct users today, but their feedback is captured (see Operations โ reviews).
How It Works
Stage 0 โ Onboarding ๐ข partial
Built: courier self-registration + the admin verification flow (approve / hold / reject / ban). Designed, not yet built: the eligibility gates and document capture.
- Couriers: basic registration + admin approval are built โ . The 18+ gate, selfie-with-ID upload, driving-licence check (moped/car), thermobag flag, and optional operator WhatsApp video-verify marker are designed ๐. No exclusivity; courier provides their own thermal bag.
- Merchants: self-serve onboarding (legal name, address, contact, hours) + team verification is designed ๐. Merchants are currently provisioned by an admin.
Stage 1โ2 โ Order & auction ๐ข partial
- Customer orders from the merchant off-platform.
- Merchant posts the delivery โ basic posting (address, payment method, notes, price) is built โ . Structured address + Google Maps pin, size/vehicle, thermobag flag, and food-ready timer are designed ๐.
- Suggested starting price (distance ร weight ร urgency ร weather; floor 3 AZN) โ designed ๐ ๐ Maps + Weather.
- Auction (2โ3 min sessions; rebid or cancel on no-accept) โ the headline differentiator, designed but not yet built ๐. Today a published order is accepted first-come at the merchant's set price.
Stage 3โ4 โ Accept & pickup ๐ข partial
- Courier accepts a job and enters the 5-digit pickup code shown on the merchant screen โ built โ (race-safe accept).
- Pre-accept distance/zone view and visibility filters (vehicle/size, thermobag, COD wallet balance) are designed ๐.
- Package credit consumed per delivery, with a hard block when a merchant is out of credits โ built โ .
- 15-min wait limit + waiting fee โ designed ๐ (admin-configurable).
Stage 5 โ Delivery ๐ข partial
- Courier enters the 5-digit delivery code to confirm hand-off โ built โ (constant-time check + attempt lockout).
- Customer notification at pickup (ETA + courier phone + delivery code + rating link) over WhatsApp/SMS โ designed ๐ ๐ WhatsApp; an SMS hook is stubbed.
- Leave-at-door, someone-else-receives, and mandatory drop-off photo (when no code) โ designed ๐.
- Tips, 100% to courier โ designed ๐.
Stage 6 โ Settlement ๐ข partial ๐ CIBPAY
- A double-entry ledger posts each delivery's earning (courier +, merchant โ) atomically, with a daily zero-drift reconciliation check โ built โ .
- Wallet escrow / COD hold-and-release, courier float + security deposit, and gateway top-up/instant withdrawal โ designed ๐ ๐ CIBPAY.
- Two review streams (in-house courier rating + optional Google Reviews deep-link) โ designed ๐.
Technology Stack
A modular monolith designed so each module can later be extracted into a microservice โ scaling is extraction, not a rewrite.
Stack
| Layer | Choice |
|---|---|
| Backend | NestJS (TypeScript), modular monolith โ apps/api |
| Web | Next.js (App Router), mobile-first, Azerbaijani โ apps/web |
| API contract | OpenAPI-first via nestjs-zod โ packages/contracts (single source of truth) |
| Database | PostgreSQL + Prisma |
| Cache / rate-limit / sessions | Redis |
| Async / events | Transactional outbox (Postgres) + pg-boss worker |
| Infra | Docker + Compose behind Caddy on a Hostinger VPS |
Modules
identity ยท orders ยท couriers ยท restaurants ยท wallet ยท notifications ยท partner-api ยท webhooks. Modules talk through public interfaces and an event outbox โ never by reaching into each other's tables.
External integrations ๐ provider decisions
| Integration | Use | Status |
|---|---|---|
| CIBPAY (payment gateway) | Card top-up, instant courier withdrawal | Partner chosen; integration pending |
| WhatsApp Business API | Pickup/delivered notifications + support inbox (SMS fallback) | Choose BSP (respond.io / Wati) |
| Google Maps API | Address pin + distance for pricing | Needs key + billing |
| Weather API | Surge multiplier in pricing | OpenWeatherMap free tier suffices |
Engineering conventions
- Conventional Commits; TypeScript strict (
anyis an error). - Money is always
Decimalโ never float; renders as โX.XX AZNโ. - No defaulted secrets โ services fail fast on missing env.
- Module boundaries enforced by dependency-cruiser in CI.
Build Status & Roadmap
Reflects the codebase + internal backlog as of 2026-06-15. โBuiltโ items were verified running in the app; โdesignedโ items are specced in the decision docs but not yet implemented.
โ Built & running
- Modular-monolith backend + OpenAPI contracts + a web app for all three roles (admin, merchant, courier).
- Full order lifecycle โ publish โ accept โ arrived โ pickup โ on-the-way โ delivered, with cancel/dispute, race-safe accept, and 5-digit handoff codes (constant-time check + attempt lockout).
- Double-entry wallet ledger with per-delivery posting and a daily zero-drift reconciliation check (admin โBalanslarโ view).
- Prepaid-package monetization โ admin-editable tiers, credit grants, FIFO consumption, and a hard block when a merchant runs out.
- 8-page admin console โ dashboard, couriers (with verification flow: approve / hold / reject / ban), merchants, orders + order detail (status timeline, assigned courier, linked dispute), disputes, ledger, settings.
on_holdreversible courier status; courier & merchant detail pages; consistent loading/error states across the console.
๐ Designed & specced โ next to build (pilot)
- Onboarding & identity gates (18+ , selfie-with-ID, licence, thermobag, video-verify marker; merchant self-serve onboarding).
- Order creation extras (structured address + Maps pin; size/vehicle, thermobag, food-ready timer tagging).
- Pricing engine (distance ร weight ร urgency ร weather; floor 3 AZN).
- Auction (2โ3 min sessions, rebid/cancel, distance-before-accept).
- Batching capability โ build, then feature-flag off at launch (no later migration).
- Delivery flow (notifications, leave-at-door, drop-off photo, wait + waiting fee).
- Two review streams (in-house courier rating + optional Google Reviews).
- Wallet & settlement (COD escrow, 10 AZN deposit, tips, gateway top-up/withdrawal, admin credit line).
- Dispute-rules engine, role-based access (RBAC), audit log, exportable delivery log.
- Ops (hours window, zones, image retention 3 days โ archive).
๐ Blocked on external providers
- CIBPAY, WhatsApp BSP, Google Maps API, Weather API.
โณ Awaiting lawyer (pre-launch blockers)
- Insurance & accident liability; courier + merchant agreements; ToS; privacy policy; customer notice wording; payment/e-money & data-retention review.
๐ฎ Future phases
- P2P delivery (customer as sender) ยท live order-tracking map ยท SIMA / SIMA ฤฐmza ยท driver fine-history check ยท public brand site ยท online split-payment link.
Product in Action
Real screenshots from the running app โ not mockups. Captured 15 Jun 2026.
Admin dashboard
Overview charts, order volume, and quick stats visible to the operator.
Double-entry ledger (Balanslar)
Per-delivery postings with courier names, AZN amounts, and live reconciliation. Drift shown as 0.00 AZN.
Order detail โ status timeline + dispute panel
Admin order detail page: assigned courier cross-link, full status timeline, and inline dispute resolution.
Courier board (mobile)
Live job board on the courier's phone โ 3 open deliveries with price, district, and accept button.
Merchant credits view
Merchant sees their active package, remaining credits, and usage history.
Intellectual Property
Items to formalize:
- Brand: โSalikโ name & logo โ trademark registration in Azerbaijan (to do).
- Domain & social handles โ secure and document.
- Codebase ownership โ greenfield build; confirm assignment/ownership in founder & contractor agreements.
- Proprietary logic โ the auction + pricing-engine design as a know-how asset.
Market Research
Market context
Azerbaijanโs food delivery market is dominated by Wolt, Bolt Food, and Yandex Food โ all aggregators that own the customer relationship and charge 25โ35% commission on food revenue. Thousands of restaurants in Baku operate outside these platforms entirely, taking orders via phone and Instagram and running informal self-delivery.
Who Salik targets
Restaurants and cafรฉs that already have order demand and need affordable delivery โ not discoverability. Specifically:
- Establishments currently self-delivering (managing drivers ad-hoc, high ops burden).
- Aggregator-listed merchants paying 25โ35% commission and wanting a cheaper overflow channel.
- Instagram-only businesses taking orders via DM with no delivery infrastructure.
Why the timing is right
- Wolt/Bolt expanded to Azerbaijan but focus on high-volume anchor restaurants โ mid-tier and neighbourhood venues are underserved.
- WhatsApp Business adoption is high among restaurant owners โ the referral channel is essentially free.
- No neutral last-mile-only marketplace exists in the market today.
Still to research (formally)
- Exact restaurant/cafรฉ count in Baku, Absheron, Sumgayit pilot districts.
- Courier supply pool size and prevailing daily earnings.
- Average basket size, order frequency, seasonality.
- Regulatory environment for gig/delivery work in Azerbaijan.
Competitive Analysis
Landscape
| Aggregators (Wolt/Bolt/Yandex) | Salik | |
|---|---|---|
| Customer relationship | Owned by the platform | Stays with the merchant |
| Pricing | Fixed platform tariff | Market auction set by merchant |
| Merchant economics | High commission on food | Prepaid delivery packages, no food commission |
| Customer app | Required | None โ code over WhatsApp/SMS |
| Scope | Food ordering + delivery | Delivery only (general-purpose rails) |
Our edge
- Lower cost for merchants who already have demand and just need delivery.
- Merchants keep their own customers and brand.
- Auction balances supply/price dynamically.
To research
- Exact competitor pricing, coverage, courier counts, and merchant sentiment in the pilot districts.
Revenue Model
Revenue comes from prepaid delivery packages sold to merchants โ not a commission on their food sales.
Packages โ
| Package | Deliveries | Price | Validity | Per credit |
|---|---|---|---|---|
| Paket 1 | 50 | 50 AZN | 50 days | 1.00 AZN |
| Paket 2 | 100 | 90 AZN | 100 days | 0.90 AZN |
| Paket 3 | 200 | 170 AZN | 200 days | 0.85 AZN |
- A credit is consumed on pickup. Blended revenue โ ~0.90โ1.00 AZN/delivery depending on package mix.
- Credits run out โ hard block; super-admin may grant an admin-approved credit line (limit, visible โowedโ, netted on next purchase).
Wallet & COD ๐ข partial
The double-entry ledger is built โ . COD escrow (block on the courier wallet at pickup, release to the merchant on delivery) is designed ๐ ๐ CIBPAY. Future revenue lines: withdrawal fees, optional per-COD platform fee, online split-payment.
Charge from launch
Salik charges from day one; acquisition cost is offset with referral credits and coupons rather than running free.
Pricing & Auction
The auction ๐ designed
The merchant sets/bids a delivery price; couriers compete to accept within a 2โ3 minute session. On no-accept, the merchant rebids (new session) or cancels. The platform never auto-raises the price โ the market does.
Suggested price ๐ designed ๐ Maps + Weather
A pricing engine suggests a starting price from:
- Distance (Google Maps Distance Matrix)
- Weight / size
- Urgency
- Weather (surge on rain/snow/extreme conditions)
Floor price 3 AZN. The merchant can always bid above the suggestion.
Other fees
- Waiting fee: merchant can pay ~1 AZN per 10 min when a courier waits (admin-configurable).
- Tips: 100% to the courier.
- Security deposit: 10 AZN default (admin-configurable) to access COD orders.
Customer Segments
Merchants (paying customers)
- Restaurants, cafes, and shops that already have order demand and need delivery.
- Especially those avoiding high aggregator commissions or running ad-hoc self-delivery.
Couriers (supply)
- Independent couriers (bicycle / moped / car), non-exclusive.
- Motivated by fair auction pay, instant withdrawal, and gamified incentives.
End customers (recipients)
- Not direct users today; reached via WhatsApp/SMS.
- ๐ฎ Future P2P phase turns customers into senders.
Go-To-Market
District-by-district launch, seeded by anchor merchants and grown through referrals.
Approach
- Anchor merchants first: personally onboard ~5 high-volume cafes per district as VIPs โ they become the first referrers and create courier demand.
- Seed courier supply: recruit couriers ahead of demand with sign-up bonuses + gamification so the auction always has takers.
- Local launch moment: a district-specific coupon distributed via supplier WhatsApp groups makes each launch feel like an event.
- Referral flywheel: merchants refer merchants for free deliveries (see Referral & Coupons).
- Expand: Baku โ Absheron โ Sumgayit as supply/demand stabilize.
Channels
- WhatsApp forwards between restaurant owners (highest-leverage in Azerbaijan).
- Food-supplier network partnerships (co-branded coupons, zero cash cost).
- Instagram/social seeding via top merchants.
Referral & Coupons
Core mechanic
Every active merchant gets a unique referral code. New merchant signs up with it โ referrer earns 20 free delivery credits, new merchant gets 10 (credited on first paid delivery to prevent fakes).
Tiers
| Referrals | Status | Bonus / referral | Perk |
|---|---|---|---|
| 1โ4 | Starter | 20 credits | โ |
| 5โ9 | Connector | 25 credits | Priority support |
| 10โ19 | Ambassador | 30 credits | Social badge |
| 20+ | Partner | 35 credits + cash option | Featured partner |
Launch coupons
- Welcome codes at onboarding (e.g. 10 free deliveries; VIP 25).
- District-launch public code for the first merchant from a new area.
- Supplier-network co-branded codes.
Full detail: Referral & Marketing Strategy document.
Courier Gamification
Supply (couriers online) is the scarce input in an auction marketplace. Gamification keeps couriers active and loyal โ mostly at zero cash cost.
Mechanics
- XP & levels: earn XP per delivery, 5-star ratings, peak-hour presence, on-time pickups. Levels unlock perks โ the strongest being a few-second head-start on high-value orders for top couriers (zero platform cost).
- Streaks: daily-delivery streaks with bonuses; loyalty โfreezeโ for higher levels.
- Missions: admin-set, time-boxed challenges that pull supply to gaps (peak hours, late nights, bad weather, new districts).
- Leaderboards: weekly, district-scoped so newcomers can compete.
- Badges: recognition, zero cost.
- Cold-start cash: sign-up bonus, refer-a-courier, optional launch-week earnings guarantee โ time-boxed and budget-capped.
Post-MVP. Full detail: Gamification Strategy document.
Onboarding Pipeline
Merchant pipeline
Courier pipeline
Unit Economics & Costs
Per-delivery cost drivers
- SMS OTP โ 0.03 AZN (3 qapik) per confirmation (WhatsApp messaging priced separately as primary channel).
- Payment gateway (CIBPAY) fees on top-ups & withdrawals.
- Google Maps API call per pricing/address lookup; Weather API (free tier).
- Courier incentives/gamification allocation (budget-capped).
Acquisition & fixed costs
- Referral cost โ 3 AZN per acquired merchant.
- Support/CRM subscription (respond.io / Wati); ops staffing.
- Hosting (Hostinger VPS).
Float (not revenue)
- Courier security deposits (10 AZN each) and wallet balances.
Projections
Revenue mechanics
Salik earns on prepaid package credits consumed at pickup โ not on the delivery fee, which is a merchantโcourier pass-through. Blended revenue โ ~1 AZN per credit (package mix-weighted). Secondary income: breakage on expired Trial/Main credits (Premium rolls over).
Unit economics (Base)
Break-even
| Scenario | Active merchants at B/E | Deliveries / mo | Annual EBITDA |
|---|---|---|---|
| Conservative | > 94 | > 6,550 | โ24.7k AZN |
| Base | ~94 | ~6,550 | +50.9k AZN |
| Aggressive | < 94 | < 6,550 | +209k AZN |
Break-even assumes ~70 deliveries/merchant/month (Base). The Conservative scenario loses 24.7k AZN/yr; Aggressive earns 209k AZN/yr.
12-month ramp
Month-by-month P&L is in the model workbook (work/Salik_Financial_Model.xlsx), with a pilot ramp starting from 0 merchants, reaching break-even by month 4 in the Base scenario.
What will move the model most
- Active merchant count โ the primary lever; 94 is achievable with one district launch.
- Deliveries per merchant โ assumed 70/mo; restaurants with self-delivery often do 100โ200/mo.
- Package mix โ higher Premium uptake improves blended revenue/credit (Premium: 200 credits, rollover).
- Gateway costs โ CIBPAY rate is the largest unconfirmed variable.
Operations & Support
Hours โ
Orders accepted 08:00โ02:00; deliveries complete until 03:00.
Geography โ
Baku, Absheron, Sumgayit. Distance-based pricing.
Support ๐ CRM
Business WhatsApp integrated into a CRM (respond.io / Wati suggested), Azerbaijani only, staffed by platform support.
Reviews
- Courier/delivery rating โ in-house, Salik-owned, feeds gamification.
- Restaurant review โ optional Google Reviews deep-link (posts to the merchant's real Google profile; goodwill only).
Data
Salik retains operational data; delivery images kept 3 days then archived; courier can see the delivery address.
Dispute Resolution
Principles
- Courier not at fault is always paid by the merchant.
- Merchant may gift the food to the courier instead of a return trip; return-to-sender is a paid trip.
- No delivery-fee refund; food quality is a merchantโcustomer matter.
- The pickup + delivery codes and wallet escrow are the evidence backbone.
Flow
Rule sets cover cancellations, failed deliveries, food quality, COD, and a small platform-compensation budget. Resolution target: ASAP.
Admin & Access (RBAC)
admin role; the Support / Ops / Finance / Super-Admin split and the per-action audit log are not yet implemented.Roles
| Role | Scope |
|---|---|
| Support | View, KYC approve, video-verify, support inbox, put courier on hold. No money authority. |
| Ops Manager | Above + ban, resolve disputes, compensation up to limit. |
| Finance | Wallet adjustments, credit lines, approve withdrawals, compensation up to limit. |
| Super-Admin | Everything; sole authority to override a dispute, edit pricing/config, manage admins. |
Least-privilege, separation of duties, full audit log on every privileged action.
Courier conduct
Tiered enforcement: warning โ temporary hold (on_hold) โ permanent ban. Bans reserved for theft/fraud, violence, deliberate code bypass, or repeat serious violations.
Full detail: Admin Access Framework document.
Agreements & Contracts
Deliverables requested from counsel
- Courier Agreement (independent contractor; liability; deposit/wallet; conduct).
- Merchant Agreement (marketplace terms; no delivery SLA; package terms; data consent).
- Platform Terms of Service & Privacy Policy.
- End-customer notice wording for the WhatsApp/SMS message.
Legal opinions requested
- Insurance & accident liability structure.
- Customer data & privacy (lawful basis, retention, courier access).
- Payments / e-money licensing (is CIBPAY sufficient?).
- COD & tax/fiscal-receipt obligations.
- Enforceability of dispute rules & no-refund terms.
Full detail: Lawyer Brief document.
Regulatory Compliance
- Payments / e-money: assume the CIBPAY partnership avoids a separate licence โ to confirm.
- Data protection: retention policy and lawful basis for messaging customers (merchant-provided numbers) โ to confirm.
- Gig / labour: courier classified as independent contractor โ to confirm.
- Consumer protection: extent of obligations given the customer is not our direct contracting party โ to confirm.
- Tax: VAT / fiscal receipts on packages and delivery fees โ to confirm.
Risks & Open Items
Pre-launch blockers
- ๐ Provider integrations: CIBPAY, WhatsApp BSP, Google Maps, Weather.
- โณ Legal: agreements, insurance/liability, ToS/privacy.
Market / execution risks
- Cold-start: no couriers online โ auction fails. Mitigation: seed supply + gamification + sign-up bonuses.
- Auction no-accepts: mitigated by rebid flow + price guidance.
- Trust on first deliveries: code system, wallet escrow, drop-off photos.
- Aggregator competition: differentiate on cost + merchant ownership of customers.
Research still to do
- ๐ Market sizing, competitor data, regulatory confirmation, financial projections.
Source Documents
Internal working documents this room is built from (in ../work/):
- Salik_PRD.md โ product requirements (authoritative).
- Open_questions.md โ all 60 business decisions.
- Salik_Implementation_Plan.md โ build workstreams & sequencing.
- Salik_Backlog.md โ status & future-phase ideas.
- Dispute_Rules_Framework.md โ dispute logic (lawyer review pending).
- Admin_Access_Framework.md โ RBAC + conduct policy.
- Referral_Marketing_Strategy.md โ merchant acquisition.
- Salik_Gamification_Strategy.md โ courier engagement.
- Lawyer_Brief.md โ legal engagement brief.
Glossary
| Term | Meaning |
|---|---|
| Auction | Short 2โ3 min session where couriers compete to accept a merchant's bid-priced delivery. |
| Merchant / sender | Restaurant, cafe, or shop posting a delivery. |
| Pickup code | 5-digit code on the merchant screen confirming courier collection. |
| Delivery code | 5-digit code sent to the customer confirming handoff. |
| COD | Cash on delivery โ here, escrowed digitally via the wallet. |
| Wallet escrow | COD amount blocked on courier wallet at pickup, released to merchant on delivery. |
| Package | Prepaid bundle of delivery credits (Paket 1 / 2 / 3 โ 50, 100, or 200 credits). |
| CIBPAY | Payment gateway partner for top-ups and withdrawals. |
| SIMA / SIMA ฤฐmza | Azerbaijani digital identity / e-signature (future integration). |