Home Projects Résumé Contact
← All projects

AI-driven engineering · YC S21

Multibase

Software Engineer Apr 2024 – Jan 2025 Remote

Multibase is an on-chain analytics platform: think a BI tool, but for wallets, contracts, and tokens instead of spreadsheets. I joined as one of the company's first product engineers and worked across the entire stack, from the AI layer that lets users ask questions in plain English to the indexer that turns raw blockchain data into something a dashboard can chart.

Multibase AI chat assistant answering 'Show the top 100 users by balance' with a live, sortable results table

Overview

Multibase gives crypto and Web3 teams a way to understand who their users actually are on-chain: balances, contract activity, token holdings, wallet behavior, all without hand-writing SQL against raw chain data. I joined in the company's early days, which meant no part of the product was really "not my problem." I built dashboard features, an AI query layer, a payments system, and a good chunk of the data pipeline underneath all of it.

An AI assistant that speaks the schema

The most interesting problem I owned was turning a plain-English question into a real, trustworthy answer. A user could type something like "Show the top 100 users by balance" and expect back a live, sortable table or chart, not a hallucinated guess. That graphing integration, wiring the assistant's output straight into pinnable, chartable dashboard tiles, was what made it feel like a BI tool rather than a chatbot.

Multibase AI chat home screen with suggested starter queries
The assistant's starting screen, with suggested natural-language prompts.

I researched a few approaches before settling on an architecture, prototyped the first version on OpenAI's Assistants API, and later migrated the whole system to Anthropic's Claude as the models and our needs evolved. Because correctness mattered more than cleverness here, I built a suite of test prompts specifically to measure whether the assistant was generating accurate queries against our schema before I'd call any change a win.

How a query actually resolves

A user's question is translated into a structured query against our indexed on-chain data (backed by Clickhouse and MongoDB), executed, and rendered back as an editable report card the user can immediately sort, tweak, or pin to a dashboard. It's the same rendering path whether the query came from the AI assistant or the manual query editor.

A dashboard you can actually rearrange

Early on, charts were static and lived wherever engineering put them. I helped move that into a modular, resizable report system: users drag, resize, and arrange chart "cards" into their own custom dashboard layout, and the app automatically saves and restores that layout per user.

Making that work well meant refactoring the underlying query schema so the exact same report definition could be used both in the ad-hoc query/editing interface and as a pinned, live tile on a saved dashboard. One schema, two surfaces, instead of two systems that could drift apart.

Multibase custom dashboard with several resizable chart tiles
A user-built dashboard: resizable, rearrangeable report cards that persist per user.

Configurable on-chain alerts

I built out the alert configuration flow shown below: pick a contract address, chain, and method, set how far back to look and how often to be notified, and Multibase watches that activity for you on a schedule. I paired this with a separate, simpler in-app notification system, visible to every member of an organization, with each person able to dismiss their own notifications independently.

Multibase alert configuration screen for tracking contract activity
Configuring a recurring alert against a specific contract, chain, and method.

Billing, usage, and a data pipeline underneath it all

On the business side, I integrated Stripe end-to-end, using webhooks to keep subscription state in sync with our own NoSQL database and surfacing plan details directly inside the app rather than sending users out to a billing portal. I also built a usage dashboard so teams could see exactly where they stood against their plan's limits: users, ingested events, and AI credits.

Multibase pricing page with Free, Growth, and Scale plans
Usage-based plan tiers, backed by the Stripe billing integration.
Multibase usage page showing users, events, and AI credits consumed
An in-app usage dashboard so teams can track consumption against their plan.

Underneath the product, I developed a webhook-based indexer and interpreter in Python and MongoDB that pulled historical data straight from the Bitcoin chain via API, staged the raw data in AWS, and interpreted it into the structured transaction events the rest of the app depended on. I also added a security-conscious session system that automatically signs users out after a period of inactivity and lets them reactivate cleanly.

Design and frontend

I designed components, visuals, and layouts in Figma, including an early concept board for the marketing landing page, before building them out with Next.js, React, TypeScript, and Tailwind CSS. Working this close to design meant fewer handoff gaps and faster iteration on the parts of the app users actually look at first.