尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證ProcureAI — one-sentence bulk buying; Kora verifies vendors, holds the money, pays in two stages.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Buy in bulk with one sentence. The AI chooses; Kora makes the choice safe.
Try it live → procureai-six.vercel.app/buy (runs on Kora's sandbox, so every naira is test money)
"300 branded T-shirts, under ₦1.5m, delivered by 23 October."
That one sentence is the whole interface. ProcureAI searches its vendor market for the suppliers that sell what was asked,
reads their messy replies into one comparable table, checks every vendor with Kora, recommends one, takes the payment, holds the money, and pays the vendor only as the
goods arrive. It ends in a record anyone can verify.檢視完整 README ↗Buy from any vendor, safely, with one sentence. The AI chooses; Kora makes the choice safe.
Try it live → procureai-six.vercel.app/buy (runs on Kora's sandbox, so every naira is test money)
"300 branded T-shirts, under ₦1.5m, delivered by 23 October."
That one sentence is the whole interface. ProcureAI searches its vendor market for the suppliers that sell what was asked, reads their messy replies into one comparable table, checks every vendor with Kora, recommends one, takes the payment, holds the money, and pays the vendor only as the goods arrive. It ends in a record anyone can verify.
Buying from a vendor you don't know yet in Nigeria runs on WhatsApp voice notes, "send half now", and trust. A buyer compares prices that arrive in different shapes, pays a stranger up front, and has no proof afterwards. The cheapest quote is often the one that isn't real.
| Step | What the buyer sees | |
|---|---|---|
| 1 | Ask | One sentence. ProcureAI shortlists up to eight vendors that sell that item and asks them all. They reply in their own words, at their own pace (some decline, some never answer); ProcureAI turns "boss good evening, 300 pcs i go do am 3900 per one" into a clean row. Totals are computed in code, never by the model. |
| 2 | Check | Kora confirms each vendor is a registered business and that the payout account belongs to that business or one of its directors. A vendor that fails is struck through with Kora's reason, and cannot be approved or paid. |
| 3 | Approve | One click. Kora opens a one-time bank account for this purchase only. |
| 4 | Pay | The buyer transfers from any bank app. ProcureAI re-asks Kora how much actually arrived before crediting a single kobo. Kora caps one account at ₦1,000,000, so a ₦1.26m order is paid as two honest transfers. |
| 5 | Hold | The money sits held. 30% goes to the vendor now, so they can start work. |
| 6 | Deliver | The buyer gets a 6-digit code. The vendor types it on delivery and the remaining 70% is released. If the buyer never hands it over, the vendor proves delivery with a photo, and the 70% is released after 72 hours unless the buyer reports a problem. |
| 7 | Record | A shareable page lists every naira in and out with its Kora reference, and ends on Left unaccounted: ₦0. It saves as an image. |
Along the way, buyer and vendor can message each other on the order. If something goes wrong, the buyer presses
Something's wrong: payouts freeze, both sides add a note and a photo, and ProcureAI either pays the vendor or refunds
what is still held through Kora. Vendors register once (/vendors/join), after which a quote is one message; a
vendor who hasn't registered can still reply through a one-off link.
Take Kora out and ProcureAI stops existing: Kora gates the recommendation (identity), holds the money (one-time bank-transfer accounts) and releases it (payouts). Every state change is confirmed against Kora twice, by signed webhook and by asking Kora directly.
| Kora capability | Used for |
|---|---|
| CAC business verification | Is this vendor a real, active registered company? |
| Bank account verification | Does the payout account belong to the company or a director? (name matching rule below) |
| Bank-transfer charges + charge query | The one-time pay-in account, and the truth about what was paid |
| Payouts + payout query | Stage 1 (30%) and Stage 2 (70%) to the vendor, each with its own reference |
| Balances and balance history | Pre-flight funds check, and a reconciliation screen that matches Kora's ledger to ours |
| Webhooks | Signed events, verified over the raw bytes, stored first, processed after |
| Refunds + refund query | Disputes ruled for the buyer: what is still held goes back through Kora |
286 automated tests (unit, integration against a real Postgres, and Playwright end to end), plus a suite that runs the full purchase against the real Kora sandbox.
The click-by-click script, with every failure state you can trigger on demand, is in docs/DEMO.md.
Next.js (App Router, TypeScript strict) · Postgres + Prisma · Zod on every boundary · server-sent events for live
screens · deployed on Vercel. One module, lib/kora/, is the only code that talks to Kora.
docs/ARCHITECTURE.md covers the state machine, the webhook path and the concurrency rules.
Needs Node 20+ and Docker. No keys required: the offline mode replays Kora's documented responses and shows a red OFFLINE banner on every page.
npm install
npm run db:up # Postgres in Docker
npx prisma migrate deploy
npm run dev:offline # http://localhost:3000/demo
npm test # unit + integration tests