
Agent turns doomscrolls into $$$
Profit from human weakness, autonomously
About
The problem it solves **For users:** Screen time limits don't work because there's no consequence. [Proofwell](https://proofwell.app) adds real skin in the game. Stake crypto on your daily screen time goal, verified by Apple's DeviceActivity framework. Hit your goal, get your stake back plus a share of the losers' pool. Fail, lose 40%. **For the agent ecosystem:** Most onchain agents are demos with no revenue model. They read prices, tweet, and burn VC money. Proofwell Agent solves this by having a real, scalable revenue source tied to human behavior. The more people fail their screen time goals, the more the treasury earns. It also introduces behavioral attestation as a new DeFi primitive: "is this wallet holder disciplined?" is a signal no one else sells onchain. Use of AI tools and agents The agent uses a two-tier AI decision system: **Deterministic rules (95% of cycles):** Every 5 minutes, the agent reads onchain state (balances, Aave position, active stakes) and applies hard rules. Idle USDC above threshold gets deposited to Aave. Expired stakes get resolved. No LLM needed. **LLM fallback (at most 1x/hour):** For ambiguous portfolio rebalancing decisions, the agent calls GPT-4o-mini with current balances and gets back a JSON action (deposit/withdraw/none). Cost: ~$0.0001/call. This keeps compute costs under $1/day while still handling edge cases intelligently. The entire codebase (agent + iOS app) was built with Claude Code.
How it's made
Challenges we ran into **ERC-8021 builder codes break ERC-20 approvals.** Appending the builder code suffix to calldata works fine for most contract calls, but ERC-20 approve transactions with trailing data caused Aave's supply to fail with "transfer amount exceeds allowance." The approve looked successful but the allowance wasn't actually set. Fix: send approve transactions without the builder code suffix, only append it to the actual DeFi operations (supply, withdraw, resolve). **Separating real yield from deposits in tracking.** The agent tracks Aave aUSDC balance deltas to measure yield revenue. But when the agent deposits USDC, the aUSDC balance jumps by the deposit amount, which got incorrectly logged as "yield." Fix: update the position tracker immediately after any deposit/withdrawal, and cap yield per cycle at $1 as a safety check. **Dual USDC on Sepolia testnet.** Aave's test USDC and Proofwell's MockUSDC are different tokens on Base Sepolia (same address on mainnet). The agent's idle-funds logic was checking the wrong token balance. Required separate balance tracking and conditional logic based on network.