DukaAgent π§Ύ β Your business manager on WhatsApp, your bank on Celo The problem. 600 million+ people run the informal economy β the seamstress, the suya seller, the market woman. They move real money daily, but to a bank they're invisible: no books, no records, no credit history. So they can't borrow, can't grow, can't be reached by any financial product. The solution. DukaAgent is an AI business manager that lives in WhatsApp. A vendor sends a voice note in their own language β English, Pidgin, Yoruba, Hausa, Swahili β e.g. "Ngozi paid me 22,500 for the dress, and I'll pay my supplier Victor 40k on Friday." The agent transcribes it, confirms it, and then: - π logs the income/expense on-chain on Celo, - πΈ pays the supplier in cUSD stablecoin automatically on the scheduled day, - π§βπ€βπ§ builds a CRM of customers & suppliers (with saved wallets), - πͺͺ verifies the vendor is a real human via Self Protocol (zero-knowledge β no data exposed), - π¦ and turns it all into a DukaScore β a 0β100 credit identity a lender can trust.
The seven checks, with their evidence
7 recordedRegistered?rung 1 Β· registered
passThe agent exists in the on-chain registry, with an owner and a document URL.
passed
- block_number
- 74443315
- chain_id
- 42220
- token_id
- 9393
checked at 2026-08-10T07:05:20.997189Z
Reachable?rung 2 Β· resolvable
passThe document URL it declared actually answers when fetched.
passed
- bytes
- 1362
- data_uri_variant
- base64
- inline
- true
- scheme
- data
- uri
data:application/json;base64,ewogICJ0eXBlIjogImh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtODAwNCNyZWdpc3RyYXRpb24tdjEβ¦ (1,845 chars β expand)
data:application/json;base64,ewogICJ0eXBlIjogImh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtODAwNCNyZWdpc3RyYXRpb24tdjEiLAogICJuYW1lIjogIkR1a2EiLAogICJkZXNjcmlwdGlvbiI6ICJEdWthQWdlbnQg8J+nviDigJQgWW91ciBidXNpbmVzcyBtYW5hZ2VyIG9uIFdoYXRzQXBwLCB5b3VyIGJhbmsgb24gQ2Vsb1xuXG4gIFRoZSBwcm9ibGVtLiA2MDAgbWlsbGlvbisgcGVvcGxlIHJ1biB0aGUgaW5mb3JtYWwgZWNvbm9teSDigJQgdGhlIHNlYW1zdHJlc3MsXG4gIHRoZSBzdXlhIHNlbGxlciwgdGhlIG1hcmtldCB3b21hbi4gVGhleSBtb3ZlIHJlYWwgbW9uZXkgZGFpbHksIGJ1dCB0byBhIGJhbmtcbiAgdGhleSdyZSBpbnZpc2libGU6IG5vIGJvb2tzLCBubyByZWNvcmRzLCBubyBjcmVkaXQgaGlzdG9yeS4gU28gdGhleSBjYW4ndFxuICBib3Jyb3csIGNhbid0IGdyb3csIGNhbid0IGJlIHJlYWNoZWQgYnkgYW55IGZpbmFuY2lhbCBwcm9kdWN0LlxuXG4gIFRoZSBzb2x1dGlvbi4gRHVrYUFnZW50IGlzIGFuIEFJIGJ1c2luZXNzIG1hbmFnZXIgdGhhdCBsaXZlcyBpbiBXaGF0c0FwcC4gQVxuICB2ZW5kb3Igc2VuZHMgYSB2b2ljZSBub3RlIGluIHRoZWlyIG93biBsYW5ndWFnZSDigJQgRW5nbGlzaCwgUGlkZ2luLCBZb3J1YmEsXG4gIEhhdXNhLCBTd2FoaWxpIOKAlCBlLmcuIFwiTmdvemkgcGFpZCBtZSAyMiw1MDAgZm9yIHRoZSBkcmVzcywgYW5kIEknbGwgcGF5IG15XG4gIHN1cHBsaWVyIFZpY3RvciA0MGsgb24gRnJpZGF5LlwiIFRoZSBhZ2VudCB0cmFuc2NyaWJlcyBpdCwgY29uZmlybXMgaXQsIGFuZFxuICB0aGVuOlxuICAtIPCfk5IgbG9ncyB0aGUgaW5jb21lL2V4cGVuc2Ugb24tY2hhaW4gb24gQ2VsbyxcbiAgLSDwn5K4IHBheXMgdGhlIHN1cHBsaWVyIGluIGNVU0Qgc3RhYmxlY29pbiBhdXRvbWF0aWNhbGx5IG9uIHRoZSBzY2hlZHVsZWQgZGF5LFxuICAtIPCfp5HigI3wn6Sd4oCN8J+nkSBidWlsZHMgYSBDUk0gb2YgY3VzdG9tZXJzICYgc3VwcGxpZXJzICh3aXRoIHNhdmVkIHdhbGxldHMpLFxuICAtIPCfqqogdmVyaWZpZXMgdGhlIHZlbmRvciBpcyBhIHJlYWwgaHVtYW4gdmlhIFNlbGYgUHJvdG9jb2wgKHplcm8ta25vd2xlZGdlIOKAlFxuICBubyBkYXRhIGV4cG9zZWQpLFxuICAtIPCfj6YgYW5kIHR1cm5zIGl0IGFsbCBpbnRvIGEgRHVrYVNjb3JlIOKAlCBhIDDigJMxMDAgY3JlZGl0IGlkZW50aXR5IGEgbGVuZGVyIGNhblxuICB0cnVzdC4iLAogICJpbWFnZSI6ICIiLAogICJzZXJ2aWNlcyI6IFtdLAogICJyZWdpc3RyYXRpb25zIjogW10sCiAgInN1cHBvcnRlZFRydXN0cyI6IFtdLAogICJhY3RpdmUiOiBmYWxzZSwKICAieDQwMnN1cHBvcnQiOiBmYWxzZQp9
checked at 2026-08-10T07:05:20.997189Z
Readable?rung 3 Β· parseable
passWhat came back is valid JSON that a machine can read.
passed
- body_bytes
- 1362
- body_sha256
- a565a3e646b75ce91e323bec8b7b9c36177e4decdfcb68a740730dda10caf2e8
- content_type
- β
checked at 2026-08-10T07:05:20.997189Z
Follows the spec?rung 4 Β· conformant
passThe document meets what ERC-8004 requires of it.
passed
- both_fields_present
- false
- legacy_endpoints_field
- false
- may_gaps
- x402Support, supportedTrust
- must_violations
- (empty)
- registrations_checked
- 0
- services_field_source
- services
- services_status
- empty
- should_gaps
- services_empty, registrations
- spec_commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
checked at 2026-08-10T07:05:20.997189Z
Claims its identity?rung 5 Β· bound
unclaimedThe document names the on-chain agent it belongs to, rather than leaving it unsaid.
unclaimed β the document made no claim to check
- declared_agent_id
- β
- declared_chain
- β
- declared_registry
- β
- match
- β
- reason
- unclaimed
- registrations_seen
- 0
checked at 2026-08-10T07:05:20.997189Z
Answers?rung 6 Β· live
unprobeableA declared endpoint responds to a probe. Not implemented yet, so nobody passes or fails it.
unprobeable β no declared endpoint that a probe can reach
- endpoints
- (empty)
- endpoints_answered_not_live
- 0
- endpoints_declared
- 0
- endpoints_live
- 0
- endpoints_our_error
- 0
- endpoints_payment_gated
- 0
- endpoints_probeable
- 0
- endpoints_probed
- 0
- endpoints_refused
- 0
- kinds
- (empty)
- reason
- no_services_declared
checked at 2026-08-10T07:07:52.226139Z
Has feedback?rung 7 Β· attested
failAt least one on-chain feedback entry names this agent.
did not pass
- distinct_authors
- 0
- feedback_count
- 0
- reason
- no_feedback
checked at 2026-08-10T07:05:20.997189Z
Check it again, now
outside the censusOn-chain snapshot
celo- token id
- 9393
- owner
- 0x4127b5ae4690cb2cda0662f9bdf781875c8d1b06
- block
- 74,443,315
- observed
- 2026-08-10T07:05:20.999548Z
What the fetch saw
data- scheme
- data
- request url
- β
- final url
- β
- http status
- β
- content type
- β
- size
- 1,362 bytes
- sha256
- a565a3e646b75ce91e323bec8b7b9c36177e4decdfcb68a740730dda10caf2e8
- elapsed
- 0 ms
This run
reproducible- run
- 4131a5a1-0461-46ce-b393-bcd825d2113b
- chain
- celo
- pinned block
- 74,443,315
- agents
- 9,765
- started
- 2026-08-10T06:41:13.909696Z
- finished
- 2026-08-10T07:06:42.747601Z
- checker
- 0.7.0 Β· 55deaa9ce71c025a9199311a53cdc2de236eae53
- spec commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
cargo run -p sweeper -- celo # at block 74443315