FluxPay is an autonomous escrow marketplace for the creator economy. Brands post content deals, creators apply and deliver, and an AI agent verifies the work and releases USDC automatically
Creator–brand deals run on trust and manual ops: brands worry about paying for low-quality work; creators worry about getting paid at all. Escrow helps, but someone still has to manually judge "is this deliverable good?" and click release. That human bottleneck doesn't scale, and on-chain payments traditionally require creators and brands to hold native gas tokens on every chain.
FluxPay turns the entire deal lifecycle into an autonomous on-chain workflow:
Brand posts a deal → defines milestones, budget, and content requirements.
Brand grants a spending permission once → via useGrantMilestonePermission, an ERC-7715 spending permission is signed on their MetaMask Smart Account and stored server-side (POST /api/permissions).
Creators apply → browse open deals, submit a cover note; brands review on-chain reputation and select.
Creator submits a deliverable → a single submit call auto-kicks the settlement loop.
Venice AI verifies & scores → the score is mapped to a payout amount (quality-weighted payment).
The agent releases USDC autonomously → it redeems the brand's permission via ERC-7710 and pays the creator — 1Shot relays on mainnets so gas is paid in USDC; Base Sepolia uses a direct-redeem path. Reputation scores update on both sides.
AI is in the money path, not just an advisor. Venice's score literally determines how much USDC is released — quality-weighted, autonomous settlement.
Permission-based payments, not pre-funded escrow vaults. The brand signs once; the agent draws against that permission per milestone using MetaMask's delegation toolkit.
Gasless for everyone. All gas is paid in USDC via 1Shot's paymaster path — creators and brands never touch a native token.
Truly multi-chain. A single source-of-truth chain config spans 8 mainnets (Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Linea, Scroll) plus Base Sepolia for testing — with per-chain USDC addresses and correct decimals (USDC is 18 decimals on BNB Chain, 6 elsewhere)
<h3>Core autonomous settlement loop (the heart of the project)</h3><ul><li><p>✅ <strong>Venice AI verification service</strong> (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/veniceService.ts">veniceService.ts</a>, <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/verificationService.ts">verificationService.ts</a>) — scores deliverables against the brief; <code data-inline="true" spellcheck="false">POST /api/verify</code>.</p></li><li><p>✅ <strong>Score-to-payout settlement</strong> (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/settlementService.ts">settlementService.ts</a>) — <code data-inline="true" spellcheck="false">POST /api/settle</code> runs verify → score → release with no human approval. Milestone submit auto-kicks the loop.</p></li><li><p>✅ <strong>1Shot relayer path</strong> (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/relayerService.ts">relayerService.ts</a>, <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/routes/oneshot.ts">oneshot.ts</a>) — mainnet payouts with <strong>gas paid in USDC</strong>; USDC addresses sourced from 1Shot's <code data-inline="true" spellcheck="false">getCapabilities</code>.</p></li><li><p>✅ <strong>ERC-7715/7710 permission flow</strong> (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/permissionService.ts">permissionService.ts</a>, <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/redeemService.ts">redeemService.ts</a>, <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/redelegationService.ts">redelegationService.ts</a>) — brand grants a spending permission on the frontend; agent redeems it server-side to release funds. Direct-redeem path for Base Sepolia (1Shot doesn't support testnets).</p></li></ul><h3>Multi-chain infrastructure</h3><ul><li><p>✅ Single source-of-truth chain config for <strong>8 mainnets + Base Sepolia</strong> (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/config/chains.ts">chains.ts</a>) — per-chain USDC addresses, correct decimals (18 on BNB Chain), and <code data-inline="true" spellcheck="false">NETWORK_MODE</code> / <code data-inline="true" spellcheck="false">ACTIVE_CHAIN_ID</code> resolution.</p></li><li><p>✅ On-chain balance reads (wagmi <code data-inline="true" spellcheck="false">useBalance</code> + USDC <code data-inline="true" spellcheck="false">balanceOf</code>) with a GoldRush/Alchemy proxy for the full token list.</p></li></ul><h3>Full marketplace product</h3><ul><li><p>✅ <strong>Auth</strong> — Web3Auth (MetaMask Embedded Wallets) with server-side JWT verification (JWKS/PEM).</p></li><li><p>✅ <strong>Jobs → milestones lifecycle</strong> — post, quote, apply, select, fund, submit, approve, dispute (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/routes/job.ts">job.ts</a>, <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/routes/deal.ts">deal.ts</a>).</p></li><li><p>✅ <strong>Multi-creator applications</strong> with an approvals inbox (<code data-inline="true" spellcheck="false">/api/applications/incoming</code>).</p></li><li><p>✅ <strong>Unified reputation system</strong> (0–100 for creators <em>and</em> brands, everyone starts at +5) wired everywhere — replaced all mock data with real scores (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/routes/reputation.ts">reputation.ts</a>).</p></li><li><p>✅ <strong>One-time $2 testnet USDC faucet</strong> on signup, idempotent per address (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/faucetService.ts">faucetService.ts</a>).</p></li><li><p>✅ <strong>Social OAuth</strong> for creator profiles (<a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/backend/src/services/socialOAuthService.ts">socialOAuthService.ts</a>).</p></li><li><p>✅ <strong>Neon Postgres persistence</strong> — JSONB repository pattern (no migrations for new fields), graceful in-memory fallback.</p></li></ul><h3>Engineering quality</h3><ul><li><p>✅ Strict frontend↔backend contract through a single typed <a rel="noopener noreferrer" target="_blank" href="vscode-webview://16e9e4grsbrm2ls41ir6ooru6vhsje03f6sskmvpuvc36gbflc70/frontend/src/lib/api-client.ts">api-client.ts</a>; canonical <a href="http://API.md">API.md</a> endpoint list; consistent <code data-inline="true" spellcheck="false">{ error: { code, message } }</code> shape.</p></li><li><p>✅ Migrated all creator & organization pages to TanStack Query hooks; reconciled on-chain vs. ledger balance sources.</p></li><li><p>✅ Deployed to production (Vercel + Render) with full <code data-inline="true" spellcheck="false">.env.example</code> parity.</p></li></ul><h3>Sponsor integration scorecard</h3><table style="min-width: 50px"><colgroup><col style="min-width: 25px"><col style="min-width: 25px"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Sponsor</p></th><th colspan="1" rowspan="1"><p>How FluxPay uses it</p></th></tr><tr><td colspan="1" rowspan="1"><p><strong>MetaMask Smart Accounts Kit</strong></p></td><td colspan="1" rowspan="1"><p>ERC-7715 spending permissions granted on Smart Accounts; ERC-7710 redemption via the Delegation Toolkit; Web3Auth MetaMask Embedded Wallets</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>1Shot API</strong></p></td><td colspan="1" rowspan="1"><p>Relays milestone payouts on 8 mainnets with gas paid in USDC; capabilities-sourced USDC addresses</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Venice AI</strong></p></td><td colspan="1" rowspan="1"><p>Scores every deliverable and sets the payout amount — AI is the release authority in the money path</p></td></tr></tbody></table><hr><p><br></p>
<p>none</p>