Kiki Delivery Service
Kiki connects three sides of local trade within immigrant communities: people who produce or sell something, people who want to buy it, and couriers who deliver it. This three-participant agreement already exists informally. Kiki gives it a clear workflow for identity, delivery terms, matching, tracking, confirmation, and ratings.
One person can participate in any role. A user can publish goods or services, request a delivery, receive a parcel, and work as a courier without maintaining separate accounts.
How it works
The sender creates a route, receives a delivery quote, and records the parcel and direct-payment terms. The recipient joins through a private Telegram invitation. An eligible courier accepts the request, and everyone involved can follow its status through pickup and delivery.
During an active delivery, Kiki can show the courier's current position. It keeps the latest position rather than a movement history and removes it after the delivery ends. Optional confirmation codes help protect parcel pickup and receipt.
Kiki also includes showcases for local food, goods, and services. A showcase can belong to a home producer or an independent specialist as easily as a conventional shop. Buyers contact sellers through Telegram, while delivery uses the same shared workflow as any other Kiki request. Payments remain direct agreements between participants.
One service, several clients
Kiki is available through:
- Telegram bot
- Telegram Mini App
- installable PWA and web application
- Android application
All clients use the same account, data, and delivery process. Telegram provides identity, invitations, notifications, participant communication, and media storage.
Privacy and trust
Kiki keeps its data model deliberately narrow. It does not expose a user directory or build a public social graph. Parcel and showcase images remain in the user's Telegram bot chat; Kiki stores Telegram media references instead of duplicate image files.
Courier trust is verified manually and remains separate from ratings. Users can choose trusted couriers, save couriers they have worked with, and restrict a delivery request to those contacts. Moderation states and role-specific ratings help participants make informed decisions without exposing the wider user base.
Technologies
The implementation uses a compact runtime stack shared by every client:
- grammY
- Fastify
- PostgreSQL with PostGIS
- JSDA-Kit and Symbiote.js
- MapLibre with OpenStreetMap data
- Capacitor
- PM2
- Docker Compose