/ Docs / Last-Mile Delivery v1 Β· 2026
Core Flow Β· Last-Mile

Last-Mile Delivery

The unsolved leg into India's villages β€” solved with PUDO Points, crowd piggyback partners and Block-Hub milk-runs, all held together by an unbroken, money-gating custody chain.

1. Overview β€” the last mile is the whole problem

For e-commerce in urban India the last mile is a solved, commoditised line item. In rural India it is the entire unsolved problem: homes have no postal-grade address, density is too low to justify a dedicated courier round, roads peter out into cart tracks, and the cost of a single failed door attempt wipes out the margin on the parcel. RideChain's thesis is that the rural last mile is not a delivery problem but a network problem β€” and that the network was already invented in Europe. We take three proven European primitives and adapt each to Indian village reality.

European primitiveWhat it does thereRideChain India adaptation
Mondial Relay / Packstation (PUDO points & parcel lockers)Parcels are dropped at and collected from a dense mesh of shops/lockers instead of every door β€” no failed attempts, addresses optional.RideChain Point β€” an existing trusted venue in the village: a kirana shop, a CSC (Common Service Centre), the panchayat office, or a chai stall. Zero new real estate; the network already exists.
Shopopop (crowd-shipping courier)An ordinary person already travelling that way carries a parcel for a small fee β€” capacity created from existing trips.Piggyback partner β€” the milkman, the school-van driver, the farmer driving to the mandi, the daily bus. Their trip already exists; the parcel rides along.
La Poste milk-run (scheduled hub-and-spoke rounds)A scheduled vehicle threads many stops on one efficient loop out of a sorting hub.Block Hub feeder β€” a small consolidation point at the block (tehsil) level runs scheduled milk-runs out to the cluster of villages it serves, batching many parcels into one trip.

None of these three is novel on its own. The product is the combination: the Point removes addressing and failed attempts, the piggyback partner removes the cost of dedicated capacity, and the Block-Hub milk-run removes the cost-per-parcel through bundling. Stitched together by software, they turn an uneconomic geography into a routine one.

~100%
First-attempt success at a Point
β‚Ή25–45
Bundled milk-run, 15 km interior
β‚Ή70–90
RideChain urgent, 15 km
2Γ—
Asset use with backhaul (mandi-bound produce)
flowchart LR
  subgraph EU["European primitives (proven)"]
    MR["Mondial Relay / Packstation
(PUDO points + lockers)"] SH["Shopopop
(crowd courier)"] LP["La Poste
(scheduled milk-run)"] end subgraph IN["RideChain India adaptation"] PT["RideChain Point
kirana / CSC / panchayat / chai stall"] PB["Piggyback partner
milkman / school van / mandi-bound farmer"] BH["Block Hub feeder
consolidate + scheduled village runs"] end MR --> PT SH --> PB LP --> BH classDef eu fill:#e8f0fb,stroke:#1f5fae,color:#143d6e; classDef ind fill:#fff3e0,stroke:#f4920b,color:#8a5200; class MR,SH,LP eu; class PT,PB,BH ind;
The three European last-mile primitives and their one-to-one adaptation for the Indian village. RideChain ships the combination β€” a software-orchestrated mesh, not any single one of these.
Why this works in India specifically: the venues (kirana, CSC, chai stall) and the trips (milkman, bus, farmer's run to the mandi) already exist in every village. RideChain creates almost no new physical capacity β€” it coordinates and trusts capacity that is already there.

2. The RideChain Point (PUDO)

A RideChain Point is a Pickup/Drop-Off (PUDO) location hosted by an already-trusted village business β€” most often a kirana shop, but equally a CSC, a panchayat office or a chai stall. The host signs up as a Point operator (see Onboarding & KYC), earns a per-parcel fee, and gains footfall. The Point plays four roles in the network.

πŸ“₯

Drop

A sender brings a parcel to the Point instead of waiting for a door pickup. The operator scans/sticks the QR, accepts custody, and stages it for the next leg.

πŸ“€

Collect

A receiver collects at the Point at their own convenience β€” the parcel is already there, so the first attempt always succeeds. No "out for delivery, you were not home".

πŸ—„οΈ

Store

The Point holds the parcel safely for a bounded window (storage limit), tracked as on-hand inventory in the operator app, with a return-to-sender clock if uncollected.

🧺

Consolidate

Multiple parcels for the same direction accumulate at the Point, ready to be swept onto a single Block-Hub-bound milk-run β€” the unit economics lever.

The Point is what makes the rural last mile economic, for two reasons. First, it drives first-attempt success toward ~100%: a parcel is never "missed" because the human comes to the parcel, not the other way around. Second, it removes rural addressing entirely β€” the destination is a Point, not a house that GPS cannot find. The hardest part of rural delivery (finding an unaddressed home) simply does not occur on a POINT drop. (For the DOOR/POINT mode matrix and why POINT β†’ POINT is cheapest, see Booking & Delivery Flow.)

flowchart TB
  S["Sender"] --> D{"Pickup mode?"}
  D -- "DOOR" --> PU["Partner collects at door"]
  D -- "POINT" --> OP1["Origin Point: operator accepts
scan QR + stage parcel"] PU --> OP1 OP1 --> INV["Point inventory: on-hand,
storage clock starts"] INV --> SWEEP["Swept onto next leg
(milk-run or partner)"] SWEEP --> DP["Destination Point:
accept + store"] DP --> COLL{"Receiver collects
within window?"} COLL -- "yes" --> OK["Drop OTP + POD β†’ delivered"] COLL -- "no (storage limit)" --> RTS["Return-to-sender clock
β†’ reverse leg"] classDef pt fill:#fff3e0,stroke:#f4920b,color:#8a5200; class OP1,DP,INV pt;
A parcel's path through Points. The Point absorbs the timing mismatch between sender, carrier and receiver β€” that buffering is exactly what kills failed deliveries and removes the need for a precise home address.

Inventory & storage handling. Every parcel resting at a Point is on-hand inventory in the operator app: a list of parcel-IDs with their state, age, storage deadline and the leg they are waiting for. The operator can only ever see and act on parcels that the system has assigned to that Point (this is the assignment lock, below). When a parcel exceeds its storage window uncollected, the system auto-starts the return-to-sender clock and offers the receiver a final reminder before triggering a reverse leg.

3. Delivery topologies β€” and when the engine picks each

A booking decomposes into ordered legs, and the matching/routing engine assembles those legs into one of three topologies. The choice is driven by the speed tier, the pickup/drop modes, distance, and whether a scheduled milk-run already serves the corridor.

flowchart TB
  subgraph A["Mode A Β· Direct door-to-door (one partner, one leg)"]
    SA["Sender door"] -->|"single leg"| PA["Partner"]
    PA --> RA["Receiver door"]
  end
  subgraph PP["Point-to-Point (single partner, no hub)"]
    SP["Origin Point"] -->|"one shared leg"| PPp["Partner"]
    PPp --> DPp["Destination Point"]
  end
  subgraph B["Mode B Β· Relay / milk-run (multi-partner, multi-leg via hub)"]
    VX["Village X Point"] -->|"leg 1: Partner A"| HUB["🏬 Block Hub
consolidate"] HUB -->|"leg 2: Partner B (milk-run)"| VY["Village Y Point"] end classDef hub fill:#fff3e0,stroke:#f4920b,color:#8a5200; class HUB hub;
Three topologies. (a) Direct is one dedicated partner over one leg. (b) Point-to-Point keeps a single partner but stages at Points. (c) Relay/milk-run threads multiple partners through a Block Hub.
TopologyShapeThe engine chooses it when…
(a) Direct door-to-door (Mode A)One partner, one leg, DOOR β†’ DOOR.The tier is urgent / on-demand, distance is short enough for one partner, and the booker is paying for dedicated speed. Highest price.
(b) Point-to-Point single partnerOne partner, POINT β†’ POINT or one POINT end, no hub.Both ends sit on a corridor one partner can cover in a trip, but staging at Points removes the door-find cost. Express tier, mid price.
(c) Relay / milk-run (Mode B)Multiple partners, multiple legs, via a Block Hub.Origin and destination are in different village clusters, the corridor is served by a scheduled Block-Hub run, and the tier is bundled milk-run. Cheapest because trip cost is split across many parcels.
The engine is bundling-first: it tries to fit a parcel onto an existing scheduled milk-run (cheapest) before it offers a dedicated leg, and only falls back to direct door-to-door when speed demands it or no run serves the corridor. See Nearest-Partner Matching for the dispatch cascade and Fastest-Route Finding for how legs are sequenced.

4. The milk-run & bundling β€” where the cost disappears

A milk-run is a scheduled feeder route out of a Block Hub that visits a sequence of village Points in one loop, dropping and picking up at each. It is the single biggest cost lever in the network, because the trip cost is fixed while the number of parcels it carries is variable. Bundling many parcels onto one run is a classic Vehicle Routing Problem (VRP): given the hub, the set of village Points to serve, vehicle capacity and time windows, find the cheapest multi-stop loop.

flowchart LR
  HUB["🏬 Block Hub
(start + end)"] --> V1["Point Β· Village 1
drop 3 Β· pick 1"] V1 --> V2["Point Β· Village 2
drop 2 Β· pick 4"] V2 --> V3["Point Β· Village 3
drop 5"] V3 --> V4["Point Β· Village 4
drop 1 · pick 2"] V4 --> HUBR["🏬 Block Hub
(return, backhaul to mandi)"] classDef hub fill:#fff3e0,stroke:#f4920b,color:#8a5200; class HUB,HUBR hub;
A single milk-run loop. One scheduled trip threads four village Points, dropping forward parcels and picking up outbound ones, then returns to the hub. Every parcel on the loop shares the one trip cost.

The economics are simple and brutal in RideChain's favour:

  1. Trip cost is fixed. Fuel, driver time and vehicle wear for the loop are roughly constant whether it carries 1 parcel or 30.
  2. Cost per parcel = trip cost Γ· N. Doubling the parcels on a run nearly halves the cost each one bears β€” the curve bends down hard as the network densifies.
  3. The Point makes N large. Because parcels consolidate and wait at Points, a single run can sweep a whole village's accumulated volume rather than chasing one parcel at a time.
This is why POINT β†’ POINT is the cheapest mode. A bundled milk-run can land a 15 km interior delivery at β‚Ή25–45 where a dedicated on-demand trip costs β‚Ή70–90 and a legacy courier costs β‚Ή60–120 and often fails. The VRP solver lives in Fastest-Route Finding; the full unit-economics model is in Scale & Low-Cost.

5. The custody chain β€” the integrity mechanism

A network that hands parcels between strangers β€” kirana operators, milkmen, farmers, hub staff β€” only works if every handover is provably honest. RideChain's answer is a custody chain: each handover is gated by four interlocking checks, and the chain repeats at every leg, forming one unbroken, auditable record from origin Point to final receiver. Crucially, each leg's money release is gated by the successful handover that closes it β€” no honest handover, no payout.

#CheckWhat it guarantees
1Assignment lockOnly the partner assigned to this leg sees the parcel in their app. An unassigned partner cannot view, accept or scan it β€” the parcel is invisible to everyone but the one person responsible for it right now.
2Unique parcel-ID + tamper-evident QREvery parcel carries a unique ID under a tamper-evident QR seal. The scan must match the assigned parcel-ID or the handover is blocked β€” no wrong parcel, no swapped contents.
3Two-sided handover OTPThe giver (Point operator) confirms handing to a named, photo-verified partner and the partner enters/scans the OTP. Both sides must assert the same handover β€” neither can fake it alone.
4Geofence + server timestampThe handover is only valid inside the expected location geofence and is stamped with a trusted server time. A handover claimed from the wrong place or replayed later is rejected.
sequenceDiagram
  autonumber
  participant OP as "Point operator (giver)"
  participant SV as "Go custody service"
  participant PA as "Partner (receiver, leg N)"
  Note over OP,PA: Leg N handover β€” all four checks must pass
  SV->>PA: "Assignment lock: parcel visible ONLY to assigned partner"
  PA->>SV: "Scan tamper-evident QR (unique parcel-ID)"
  SV-->>PA: "QR match? mismatch BLOCKS handover"
  OP->>SV: "Confirm: handing to named + photo-verified partner"
  PA->>SV: "Enter / scan two-sided handover OTP"
  SV-->>SV: "Verify geofence + stamp SERVER timestamp"
  SV-->>SV: "All 4 pass β†’ close leg N custody record"
  SV->>PA: "Custody transferred; release leg N money (gated)"
  Note over OP,PA: Chain repeats: Point to partner to hub to next partner to receiver
        
One handover, gated by all four checks. The same gate fires at every hop β€” origin Point β†’ partner β†’ Block Hub β†’ next partner β†’ receiver β€” so the legs interlock into a single unbroken chain, and each closed link is what permits that leg's payout.
flowchart LR
  OPt["Origin Point"] -->|"gate βœ“ β†’ release leg 1"| P1["Partner A (leg 1)"]
  P1 -->|"gate βœ“ β†’ release leg 1 hub-in"| HUB["🏬 Block Hub"]
  HUB -->|"gate βœ“ β†’ release leg 2"| P2["Partner B (leg 2)"]
  P2 -->|"gate βœ“ β†’ release leg 2"| RCV["Receiver / dest Point"]
  classDef hub fill:#fff3e0,stroke:#f4920b,color:#8a5200;
  class HUB hub;
        
The unbroken chain across a relay. Every arrow is a four-check gate; passing the gate both transfers custody and releases that leg's slice of money. A broken gate halts both custody and payment.
Many-to-many coverage, one-to-one custody. A partner may serve many Points and a Point is served by many partners β€” that flexibility is what creates coverage. But for any single parcel on any single leg, custody is locked to exactly one Point + one partner. Coverage is many-to-many; responsibility is one-to-one. That is the distinction that keeps the chain auditable.

6. Per-leg money & handoff

Because the custody chain closes leg by leg, money also releases leg by leg. The booker pays once into escrow at booking time (the platform holds no money β€” see Payments & Integration); the held funds are then released as a split per leg, each slice triggered by that leg's successful handover (the four-check gate above, finishing with drop OTP + POD). Using the canonical relay example β€” a total fare of β‚Ή220:

RecipientSliceReleased by
Partner A β€” leg 1 (village β†’ hub)β‚Ή55Leg-1 hub-in handover gate passes
Partner B β€” leg 2 (hub β†’ destination)β‚Ή95Leg-2 drop OTP + POD at destination
Drop Point (origin)β‚Ή6Origin-Point drop accepted
Block Hubβ‚Ή8Hub consolidation handover
Collect Point (destination)β‚Ή6Destination-Point collection
Platformβ‚Ή50On final settlement (absorbs PG + tax reserve)
Totalβ‚Ή220β€”

The defining property is that Partner A is paid for leg 1 the moment they hand the parcel to the hub, even though Partner B will finish the journey hours later. Each participant is paid for the custody they actually held β€” no one waits on anyone else's leg. The currency in the ledger is paise (integer); the β‚Ή figures here are display. The single point-to-point baseline (total β‚Ή120 β†’ partner β‚Ή80, drop Point β‚Ή6, collect Point β‚Ή6, platform β‚Ή28) and the full split mechanics live in Split-Money Settlement.

Money rides the custody chain. Every gate that transfers custody also unlocks exactly that leg's ledger entry. A leg that never completes its handover never releases its slice β€” which is precisely how a failed or re-dispatched leg avoids paying for work that was not done.

7. Reverse logistics & backhaul

Half of a milk-run is the trip back to the hub, and an empty return leg is wasted, paid-for capacity. RideChain fills it two ways, and both improve the unit economics of every forward parcel on the route.

↩️

Reverse logistics

Returns and exchanges are picked up from the village Point (or door) on the same run that delivers forward parcels. A return is just a new leg in the opposite direction, re-using the identical four-check custody chain.

🌾

Agri backhaul

Outbound produce to the mandi rides the empty return leg: the milk-run that drops parcels into villages carries vegetables, milk or grain back to the block market β€” turning a dead leg into a revenue leg.

flowchart LR
  HUB["🏬 Block Hub"] -->|"forward: parcels in"| VIL["Village Points"]
  VIL -->|"backhaul: returns + agri produce"| HUBB["🏬 Block Hub β†’ mandi"]
  HUBB -->|"produce sold"| MANDI["Block mandi / market"]
  VIL -.->|"return / exchange pickup"| HUBB
  classDef hub fill:#fff3e0,stroke:#f4920b,color:#8a5200;
  class HUB,HUBB hub;
        
Forward + backhaul on one asset. The vehicle that carries parcels out to villages does not return empty β€” it carries returns and mandi-bound produce back, roughly doubling asset utilisation and lowering the cost borne by every parcel on the loop.
Backhaul is not a side hustle β€” it is core to the cost model. A loop that earns on both directions can price the forward leg lower, which is part of why the bundled milk-run reaches β‚Ή25–45. See Scale & Low-Cost.

8. Special handling

The rural mix is not just cartons. The booking flags (set at booking time) drive vehicle choice, routing priority, packaging and Point-storage rules.

🍢

Fragile

Flagged for gentle vehicle/packaging, "handle with care" on the QR label, and a higher declared-value / damage scrutiny at each POD photo.

❄️

Perishable / cold-chain

Tight SLA, priority routing, and Point-storage exclusion or insulated handling. A cold-chain break is flagged and routed for fastest viable leg.

πŸ“¦

Oversized

Forces a larger vehicle (Bolero / Tata Ace / mini-truck) at the recommend step; may bypass small Points that cannot store it.

🌾

Livestock-feed / agri

Bulk, weight-priced, often the backhaul cargo; matched to tractor-trolley or Ace, scheduled onto milk-runs.

πŸ“„

Documents

Small, high-trust, often urgent. Tighter custody scrutiny; tamper-evident envelope; frequently a DOOR end.

⏰

Time-windows

Delivery/collection windows constrain the VRP and the milk-run schedule; breaches trigger proactive notify and re-route.

Addressing the unaddressed. Most rural homes have no usable postal address. For DOOR ends RideChain uses a what3words-style landmark addressing scheme β€” a precise grid reference plus human landmarks ("near the banyan tree, behind the panchayat well") β€” so a partner can find a house with no street name. For most parcels the cleaner answer is simply a POINT destination, which sidesteps addressing altogether.

On the roadmap: smart lockers at high-traffic Points (Packstation-style) for 24Γ—7 OTP/QR self-collect β€” the receiver opens the locker with a code, no operator needed. This extends the Point model's reach to off-hours and unstaffed venues without changing the custody chain.

9. Edge cases & failure modes

The last mile is where things go wrong most, so every failure mode below has a defined mitigation. The full catalogue and cross-component patterns live in the Edge-Case Catalog.

Scenario / riskMitigation
Point closed / operator absent at a scheduled handoverRun reschedules to the next stop and retries on the return leg; backup nearby Point offered; parcel never handed to anyone without the two-sided gate, so it simply waits in custody.
Parcel sits too long at a Point (storage limit hit)Storage clock auto-fires a final receiver reminder, then triggers return-to-sender as a reverse leg; operator never bears indefinite storage.
Relay second-leg partner never arrives at the hubHub retains custody; leg 2 is re-dispatched from MATCHING after timeout; the SLA clock pauses; Partner A is already paid for leg 1 regardless.
Block Hub overflow (volume exceeds capacity)Intake throttling + spillover to a sibling hub; bundling-first dispatch smooths peaks; oversized/perishable get priority slots so they never queue behind bulk.
Wrong parcel scanned at handover (QR mismatch)Scan must match the assigned parcel-ID or the app blocks the handover β€” no OTP prompt, no custody transfer, no release.
Receiver cannot reach the PointHome-drop fallback: convert the final leg to a DOOR delivery (small fee) using landmark addressing; else hold or return-to-sender.
Perishable spoilage riskPerishable flag forces priority routing + fastest viable leg, Point-storage exclusion, and a spoilage flag that triggers proactive notify and partial-refund policy on breach.
Milk-run vehicle breaks down mid-routeRemaining stops re-dispatched to a backup vehicle / on-demand partners; parcels already swept stay in custody on the stranded vehicle until rescued; affected bookers notified.
Cold-chain break detectedFlag the consignment, re-route to fastest leg, record the break in the custody log, and apply damage/declared-value policy if the contents are compromised.
Parcel lost or damaged in transitCustody log pinpoints the leg/partner where the chain broke; covered by insurance up to the declared-value cap recorded at booking; resolved via the dispute flow.
GPS / geofence fails at a remote rural PointFall back to operator manual confirm (still two-sided OTP + photo); the geofence check degrades but the other three checks hold, and the manual confirm is logged for audit.
QR seal tampered / openedTamper-evident seal flags the handover; partner/operator captures photo evidence; parcel is held, escalated to dispute, and money for downstream legs is gated until resolved.