Knowbetter is a hackathon project for improving last-meter delivery accuracy.
Couriers often receive inaccurate or incomplete location data for an address. The street address may be technically correct, but it does not tell them where to park, which entrance to use, or how previous couriers actually reached the door. Knowbetter lets couriers correct that missing delivery context when they arrive.
For many deliveries, the hardest part is not reaching the street address. It is finding the practical delivery route:
- Where can the courier park?
- Which entrance should they use?
- How should they walk from the parking spot to the entrance?
- How has this address been delivered to before?
Knowbetter turns each delivery into useful operational knowledge for the next courier.
When a courier arrives at an address, they can update the delivery location details from the map:
- Save or correct the parking location.
- Save or correct the entrance location.
- Keep a history of where each courier parked.
- Log the walking trace from parking to entrance.
- Review delivery history for a specific address over time.
This creates a living address record. Instead of every courier rediscovering the same information, the app keeps a history of real delivery attempts and uses it to make future deliveries faster and more accurate.
- A courier opens a delivery address in the app.
- The map shows known parking and entrance points for that address.
- When the courier arrives, they save their current parking location.
- If the suggested point is wrong, they adjust it on the map.
- The courier continues to the entrance while the app can store the walking trace.
- Future couriers can see the accumulated delivery history for that address.
- TanStack Start for the application framework.
- TanStack Router for file-based routing.
- Convex for realtime backend data.
- Mapbox for map rendering.
- React for the UI.
- Tailwind CSS for styling.
- Vitest for tests.
- Bun for package management and scripts.
The Convex backend stores two main concepts:
address: the latest known delivery context for an address, including parking and entrance points.events: the delivery history for an address, including courier parking points, entrance points, timestamps, and walking traces.
This lets the app show both the current best-known delivery information and the historical record of how couriers delivered to the same address over time.
Install dependencies:
bun installCopy the example environment file and fill in the required values:
cp .env.example .env.localRequired environment variables:
CONVEX_DEPLOYMENT=
VITE_CONVEX_URL=
VITE_MAPBOX_ACCESS_TOKEN=Start the Convex backend:
bunx --bun convex devStart the app:
bun --bun run devThe app runs on http://localhost:3000.
bun --bun run dev
bun --bun run build
bun --bun run start
bun --bun run test
bun --bun run lint
bun --bun run format
bun --bun run checksrc/routes: TanStack Router routes and route-local helpers.src/components: Shared UI components.src/integrations: Convex provider and other app integrations.convex: Convex schema, queries, and mutations.convex/_generated: Convex generated files.
Do not edit src/routeTree.gen.ts or files under convex/_generated by hand.
Regenerate them through the project tooling.