Inspiration
People often make purchases without considering how it would affect their financial future. We wanted to create a safe and more efficient alternative to credit and traditional loans. By taking this problem head on, we can change how people can think about their money.
What it does
Weenie Beanie transforms lending from reactive and punitive into proactive and protective. Instead of hitting customers with overdraft fees or forcing them into high-interest payday loans, the platform continuously analyzes historical banking data and user-entered recurring expenses to forecast cash flow 12 months in advance. When a projected deficit month is detected alongside a subsequent surplus month that can comfortably absorb it, Weenie Beanie automatically generates a right-sized, zero-surprise micro-loan offer with a clear plain language explanation powered by Google Gemini. Once the customer gives explicit consent, funds are disbursed simultaneously via Capital One's Nessie API and escrowed on Solana devnet. Repayment is automatically executed in the surplus month using pre-authorized on-chain delegation, backed by strict safeguards like a minimum balance buffer, grace periods, and rescheduling options. Each on-time repayment permanently updates a non-transferable Soulbound Token reputation credential, unlocking higher credit tiers. External partners can verify this repayment reputation in real-time through a public endpoint without exposing any Personally Identifiable Information (PII) like names, SSNs, or account numbers.
How we built it
We built Weenie Beanie as a modular app that bridges traditional banking rails with Web3 infrastructure. Built with Java 21 and Spring Boot 3.5, exposing both Spring for GraphQL and REST endpoints.
Google Gemini parses natural language expenses and write explainability notes, while deterministic rules handle 100% of the underwriting to ensure regulatory fair-lending compliance.
Event Backbone & Time-Series Data is backed by TimescaleDB on Tiger Cloud utilizing hypertables and continuous aggregates for fast cash-flow rollups. An Apache Kafka (KRaft) event backbone with 14 topics coordinates asynchronous flows across forecast updates, offer generation, and settlement sagas with retry topics and dead-letter queues.
We integrated Capital One’s Nessie API for fiat accounts, balances, and bills. On-chain settlement is powered by two custom Solana programs written in Rust and Anchor 1.2.1. . microloan manages custodial vaults and borrower token delegation, while . reputation mints the Token-2022 NonTransferable Soulbound credential. A custom Java Solana client (com.shbean.solana) coordinates dual-signer transactions and PDA derivations.
The frontend is built with React 19, TypeScript, and Vite single-page app utilizing Apollo Client, Recharts, and GraphQL WebSocket subscriptions for real-time state delivery. It follows an accessible, high-contrast design system with an interactive SVG plant that reacts live as loans disburse and settle.
Challenges we ran into
Dual-Rail Settlement Sagas & Idempotency: Coordinating asynchronous blockchain transactions with Capital One Nessie API calls was difficult because sandbox APIs lack native idempotency keys, truncate cents, and don't immediately reflect posted transactions in balance snapshots. We designed an idempotent saga executor with a persistent step log, deterministic transaction descriptors, balance carry-forward tracking, and automated refund compensation if settlement fails.
Low-Level Java to Solana RPC Integration: Rather than using heavy external frameworks, we integrated directly via solanaj behind a clean abstraction. We had to identify and overcome critical upstream edge cases: solanaj defaulted to skipping preflight checks (allowing doomed transactions to silently fail on-chain) and scrambled Ed25519 signature ordering when multiple signers (bank authority + custodial borrower) were present. We implemented custom instruction sorting and binary Borsh golden vectors verified against LiteSVM test suites.
Anchor 1.2.1 & SBPF Toolchain Alignment: Upgrading to the latest Anchor 1.2.1 toolchain defaulted builds to Solana Binary Packet Format (SBPF) v3, which caused runtime incompatibilities with current LiteSVM mock testing engines. We solved this by targeting --arch v2 for byte-compatibility across local unit tests and live devnet deployments.
Strict Privacy & Fair Lending Isolation: Ensuring that user PII never leaked into AI prompts or public blockchain accounts required rigorous data sanitation. We designed strict boundary objects so Gemini only receives aggregated numbers and month offsets (never account IDs or names), and the public Solana credential endpoint reads purely from on-chain PDAs to mathematically prove creditworthiness without exposing customer identity.
Built With
- docker
- gemini
- graphql
- java
- javascript
- kafka
- maven
- nessieapi
- restapi
- rust
- solana
- springboot
- tigerdata
- typescript
- vercel



Log in or sign up for Devpost to join the conversation.