ai2work
On-chain freelancer marketplace — smart contracts on Celo, Next.js PWA, native Android wallet with ECDSA signing.
The Problem
Freelancers lose 5-20% in platform fees on traditional marketplaces. Payment disputes take days. Cross-border payments add 3-5% forex and 2-3 business days. Smart contract escrow eliminates intermediaries, but existing Web3 freelance platforms are desktop-only and require MetaMask — inaccessible to the 70% of global users on mobile.
The Solution
ai2work is a mobile-first Web3 freelancer marketplace deployed on Celo — a carbon-negative, mobile-optimized L1. Freelancers post bounties in cUSD, CELO, or USDC. Funds are held in an auditable smart contract escrow. Dispute resolution is on-chain.
Fees: 2% protocol fee (vs 5-20% on Web2 platforms). Settlement: instant on-chain. No KYC. No bank dependency. Works on any Android device with the native APK.
Architecture
• ReentrancyGuard + Ownable2Step + Pausable (OpenZeppelin v5)
• 20+ mutating functions, tested with forge test
• Deployed on Celo Mainnet (chain 42220), verified on Celoscan
• WalletConnect v2 integration
• PWA with offline support, installable on mobile
• Hosted on Render.com, CI/CD via GitHub Actions
• Android Keystore for private key storage (hardware-backed)
• Keccak256 implemented from scratch in Kotlin (no external crypto libs)
• EIP-1559 transaction signing + RLP encoding
• WebView bridge injecting window.ethereum
• @yeheskieltame/claudelance-types — shared ABI + TypeScript types
• Published on npm + GitHub Packages
Technical Deep Dive: Native ECDSA on Android
The core innovation is a custom Capacitor plugin that implements Ethereum transaction signing natively in Kotlin — no Web3 wallet required. This eliminates the MetaMask dependency that blocks mobile Web3 adoption.
- secp256k1 via BouncyCastle (SpongyCastle on Android)
- Keccak256 implemented manually — no extra dependency
- RLP encoding for transaction serialization
- Android Keystore for key generation (hardware-backed when available)
- Bridge.js injected into WebView — dapps see a standard
window.ethereumobject
// EIP-1559 transaction signing fun signTransaction(tx: EthTransaction, key: PrivateKey): ByteArray { val encoded = rlpEncode(tx.toList()) val hash = keccak256(encoded) return signECDSA(hash, key) // secp256k1 deterministic }
Results & Impact
| Gas cost per bounty | ~$0.01 (Celo) |
| Protocol fee | 2% |
| APK size | 4.2 MB |
| Android API | 24+ (99.1% devices) |
| Transaction signing | No external wallet needed |
Lessons Learned
1. Capacitor plugins are the right abstraction for Web3 mobile — they bridge the gap between web UX and native crypto without forcing users into a separate wallet app.
2. Celo's sub-cent gas fees make on-chain freelancing viable. On Ethereum mainnet, a single bounty posting would cost $5-20 in gas. On Celo: $0.01.
3. The hardest part of Web3 mobile is key management. Android Keystore + hardware backing is the only acceptable solution — no plaintext keys in SharedPreferences.
4. The Celo ecosystem's focus on mobile-first and real-world assets (cUSD, USDC) aligns perfectly with freelancer payments — stablecoins are non-negotiable for professional use.
Want something like this?
I build full-stack Web3 products — smart contracts, mobile apps, agent orchestration.
Get in touch →