Search projects, hackathons, sponsors and tech

    ← All projects

    Pitch Perfect

    Cross-chain wallet agent with voice identity

    About

    The problem it solves Natural language is the lowest-friction interface for humans — no tutorials, no screens, no hurdles. Over 65% of users prefer voice for its hands-free speed and simplicity (Deloitte, 2022). But while voice control is intuitive, voice alone is not identity. As AI agents increasingly act on our behalf — executing trades, authorizing payments, or routing cross-chain assets — ensuring the authenticity of the speaker becomes critical. Without an embedded identity layer, voice-controlled systems are prone to: - 🎭 AI impersonation - 🧠 Contextual spoofing - 🔓 Unauthorized delegation of agentic tasks We’re entering a new paradigm where speech is not just input, but intent — and that intent must be verifiable. ## Our Solution PitchPerfect introduces `Beca`. An identity-aware, voice-controlled AI agent for Web3 wallets. Powered by ElizaOS & CCIP. Beca enables users to delegate actions or trigger customizable intents without trading off user trust or experience. > 🔊 Voice becomes the controller of intent, not the signer of transactions. ![image](https://assets.devfolio.co/content/e408238a8f544d21883a66fb3390acab/ecf53efe-3045-4265-bd16-c9601304038d.png) - [plugin-voice](https://github.com/acgodson/pitch-perfect/tree/main/pitch-perfect-client/src/plugin-voice) uses [Microsoft WavLM](https://github.com/microsoft/unilm/tree/master/wavlm) to generate speaker embeddings and perform cosine similarity checks for identity. - [Beca Agent](https://github.com/acgodson/pitch-perfect/blob/main/pitch-perfect-client/src/agent.ts) acts as the central orchestrator: all voice messages are sent here, where they’re dispatched to plugins for a specific action - [plugin-ccip](https://github.com/acgodson/pitch-perfect/tree/main/pitch-perfect-client/src/plugin-ccip) links the voice intent with chain actions, such as asset transfers or portfolio analytics across multiple chains. - ``sendToEVM()`` - Standard CCIP to supported EVM chain - ``sendToAvalancheSubnet()`` - CCIP → Avalanche → Teleporter → Subnet - ``sendToSolana()`` - CCIP to Solana/SVM wallets

    How it's made

    Challenges we ran into By design, shared storage for voice profiles raised a little concern because calculating similarities across a large number of profiles after each command may be exhaustive and less user-friendly. To avoid that, we implemented a mechanism where session IDs tied to the client device/browser are synced with the ElizaOS runtime, allowing each vector filtering and matching without loading all profiles into memory.