Diagnose
Each vertical gets a Week-One technical diagnostic + positioning audit. Five-stage funnel × two root causes (tech + business). The output is a populated pain-map, not a vibe.
PAIN_MAP_MATRIX.mdThe candidate package picks vertical as the atomic unit. This site is a tunnel into the strongest vertical: money market. The Envio template is already deployed against Aave V3 Polygon, indexed end-to-end, with 14,401 / 14,401 cross-entity invariants passing. The 90-day work isn't build — it's distribution.
Live indexer state
16
Reserves indexed
1,089
Liquidations
USDC
Top supplier base
5,234
Top reserve suppliers
Aave V3 · Polygon · queried client-side from indexer.dev.hyperindex.xyz
copy-paste curl
curl -sX POST https://indexer.dev.hyperindex.xyz/8fc0607/v1/graphql \
-H 'Content-Type: application/json' \
-d '{"query":"{ ReserveAggregator(order_by:{totalSupplied:desc}, limit:5){ asset totalSupplied uniqueBorrowers totalLiquidations } }"}'02 · Method
The full method is in the candidate package's framing memo. This is the orientation tile so the money-market vertical reads as the worked example, not a one-off pitch.
Each vertical gets a Week-One technical diagnostic + positioning audit. Five-stage funnel × two root causes (tech + business). The output is a populated pain-map, not a vibe.
PAIN_MAP_MATRIX.mdEvery cell gets two owning artifacts — one engineer-side (template, handler, runbook) and one operator-side (positioning, pricing overlay, content track). Single-angle plans miss half the pain.
VERTICAL_PLAYBOOK.mdDon't lead with the biggest logo. Lead with the lowest-friction account. Spark before Aave; the case study compounds the next five conversations.
GROWTH_PLAN.mdEvery closed account becomes the qualification mechanism for the next outreach wave. Productise the path: template → trial → Production → Risk-Dashboard tier.
ENVIO_REVENUE.md03 · Why money market
Money market shares the event-streaming infrastructure with DEX and the analytics-as-product framing with Market Making — but the entity model, named accounts, and GTM motion are different enough that running it inside another vertical's playbook would dilute both.
PROPERTY 01
A single user has one position per asset (collateral or debt), aggregated into a UserAggregator cross-reserve rollup. Neither DEX (per-pool) nor MM (per-maker) keying applies.
PROPERTY 02
LiquidationCall touches collateralAsset + debtAsset + user (victim) + liquidator. Naive handlers update one reserve and miss three of the four mutations. Every money-market indexer eventually has a customer-facing bug rooted in this.
PROPERTY 03
Every Aave-shape protocol emits per-block index updates via ReserveDataUpdated. The ReserveRateSnapshot time series is the analytical primitive that powers utilization-curve dashboards — a workload no other vertical has.
| Vertical | Customer | Defining workload | Entity-model keying |
|---|---|---|---|
| DeFi-DEX | Venue (Velodrome, Aerodrome, Uniswap) | Volume / fee / TVL reporting | Per-pool |
| Market Making | Trading desk (CoW solver, UniswapX filler) | My fill performance vs. competition | (maker_address, venue, epoch) |
| Money Market | Lending-protocol team + risk-monitoring tooling | Liquidator leaderboards · utilization curves · risk-cohort segmentation | (chainId, asset, user) |
Synthesized from the money-market positioning audit + tech diagnostic. Each cell has a named owning artifact in the repo.
| Stage | Tech root cause | Business root cause |
|---|---|---|
| Acquisition | Money-market protocol engineers don't see themselves in the indexing-infrastructure conversation. The marketing language is DeFi-default; "real-time data" doesn't speak to liquidator leaderboards or utilization curves. | Money market is invisible as a target segment in current Envio marketing. No money-market-named landing page, no money-market content track, no Aave / Compound / Spark / Morpho on the visible customer wall. |
| Activation | Default templates miss money-market-specific event shapes — per-(asset, user) state, dual-reserve liquidation handling, RAY-precision interest indexes, scaled-balance convention. Weeks of correctness debugging for what should be a 60-minute fork. | No money-market-shaped onboarding path. Generic onboarding doesn't acknowledge the vertical's distinct activation path. |
| Monetization | Postgres melts at utilization-curve scale: hundreds of millions of rows × 200 reserves × 4 chains kills GROUP BY hour AVG(rate) at SLA-grade latency. The customer feels the pain but doesn't connect it to "Dedicated tier." | "Production / Dedicated" tier names don't carry money-market-specific value cues. "Risk-Dashboard Tier" does. The tier-up case is currently structured as throughput; for this vertical the natural framing is dashboard latency. |
| Retention | Postgres-backed ReserveRateSnapshot queries hit O(N²) for utilization curves over long windows. The friction shape Aave's subgraph customers report. Without a known ClickHouse Sink upgrade path, customers shop alternatives. | Quarterly health-note cadence doesn't exist for the vertical. Risk-team-led conversations don't happen until something breaks. |
| Expansion | Multi-chain cross-aggregation in Postgres requires federated queries (slow) or periodic ETL (lossy). Neither produces governance-grade real-time dashboards as protocols expand to 6+ chains. | No published case study + no risk-monitoring vendor partnership motion in the customer-visible surface — so expansion ARR per anchor account stalls at the first chain. |
Every cell gets two owning artifacts — one engineer-side, one operator-side. Synthesised from PLAN.md §4.
| §3 Cell | Tech intervention | Business intervention |
|---|---|---|
| Acquisition × Tech | Money-market template is the call-to-action on a new vertical landing page | Name money market as a first-class vertical in customer-facing copy. Ship a money-market content track. |
| Acquisition × Business | Vertical landing page anchored to the template + the Liquidation Handler Reference docs | Co-marketing motion with Gauntlet, Chaos Labs, Llama Risk — Envio as the indexing partner for their workload |
| Activation × Tech | LiquidationCall handler correct from day one (dual-reserve + dual-user) — already shipped, 5/5 vitest, 14,401/14,401 invariants | 60-min walkthrough Loom + written guide as activation entry point. Routed from landing page directly to the template. |
| Activation × Business | — | 2-month free Production trial structure attached to the template. Conversion trigger: "when daily liquidation volume crosses X notional, here's the upgrade conversation." |
| Monetization × Tech | Risk-Dashboard Query Architecture — four canonical analytical patterns + dual-write ClickHouse Sink | Position Dedicated tier explicitly as "the Risk-Dashboard Tier" in money-market-vertical copy |
| Monetization × Business | Per-tier feature matrix called out for money-market workload (utilization-curve scale, liquidator leaderboards, multi-asset reserve sprawl) | Co-marketing motion with risk-monitoring tools — same as Acquisition × Business but with tier-up pull instead of acquisition push |
| Retention × Tech | Effect-API-cached oracle reads + entity-cache-first preload baked into template default | Internal account-health dashboard surfacing utilization-query latency, leaderboard refresh time, snapshot-table size — surfaces bottlenecks before customer notices |
| Retention × Business | — | Quarterly architectural check-in cadence with money-market anchor accounts |
| Expansion × Tech | add-chain CLI in the template — one config change adds chain #N (already shipped) | — |
| Expansion × Business | — | Co-engineering offer: Envio sends the runbook as a co-authored play to anchor accounts before their next chain expansion |
Most of the tech-side interventions are already shipped. The gap is on the business side — landing page, content, outreach, tier-naming overlay.
04 · Technical deep-dive
Five tabs covering the template, the trickiest event, the risk-dashboard tier-up architecture, multi-chain expansion, and how the indexer is verified against real on-chain state.
Six Aave V3 events on the singleton Pool contract. No factory pattern (Pool is one-per-chain).
| Event | Indexer effect |
|---|---|
| Supply | TVL aggregation, per-user supply, lazy Reserve creation |
| Withdraw | TVL aggregation, per-user supply position decrement |
| Borrow | Total borrow aggregation, per-user debt growth |
| Repay | Total repay, per-user netDebtPosition reduction |
| LiquidationCall | Liquidation entity preserved; both reserves and both users updated |
| ReserveDataUpdated | ReserveRateSnapshot append + ReserveAggregator current rates updated |
Layer 1 — Raw
Reserve · UserReserve · Liquidation. Liquidation is append-only, keyed by (chainId, blockNumber, logIndex) so cascading liquidations within one block don't collide.
Layer 2 — Aggregates
ReserveAggregator (per (chainId, asset)) · UserAggregator (per user, cross-reserve). Rollups for current state and leaderboards.
Layer 3 — Snapshots
ReserveRateSnapshot — append-only, keyed by (reserveId, blockNumber). The time-series primitive for utilization-curve dashboards.
Scaled balances, not aToken balances.
Aave V3 stores user balances as scaledBalance × index / RAY where RAY = 1e27. Storing the scaled balance + latest index and computing on-demand is more correct and more efficient than re-running RAY math on every event.
Pick a preset, hit Run. The endpoint is the same one the consumer risk dashboard consumes. Throttled client-side; no auth required.
Query playground
Hits indexer.dev.hyperindex.xyz · Aave V3 Polygon
ReserveAggregator is the per-(chainId, asset) rollup. Sorted by all-time supplied volume.
// Press "Run query" to call the live indexer.05 · Business deep-dive
Five tabs covering who the customer actually is, how the work hits the market, how Dedicated tier gets renamed in this vertical's customer copy, the 90-day wave sequencing, and the structural year-1 ARR math.
The customer is a lending-protocol team or risk-monitoring tooling vendor that ships dashboards to external users — governance forums, retail lenders, liquidator bots, institutional borrowers. Three concrete archetypes:
Lending-Protocol Team
Aave, Compound, Spark, Morpho, Hyperdrive, dForce, Sonne, Moonwell, Aurelius, Sturdy. 8–30 engineers. Risk team is separate, owns the analytics workload.
Risk-Monitoring Tooling Vendor
Gauntlet, Chaos Labs, Llama Risk, BlockAnalitica. 5–20 engineers + research. Higher data-engineer concentration. Indexing is core dependency.
Liquidator-Bot Operator
Anonymous on Aave / Compound / Spark; Flashbots-adjacent searchers. 2–8 engineers. Tertiary segment — opportunistic, not a named-account list.
Qualification rubric — yes/no per archetype
Five criteria from a 30-min first call. Yes on 4/5 = clear pursue. Yes on ≤2/5 = polite pass.
| Criterion | Lending-Protocol | Risk-Monitoring | Liquidator-Bot |
|---|---|---|---|
| #1 Public-facing dashboard | Always-yes | Always-yes | Often-no (private) |
| #2 Backend on Graph or custom | Differentiating (Graph vs custom = different pitch) | Always-yes | Differentiating (custom RPC = fast fork) |
| #3 Expanding to new chain in 6 mo. | Differentiating (~3× conversion lift) | Less weighted | Less weighted |
| #4 Risk/data team separate | Differentiating (real workload signal) | Always-yes | N/A (single small team) |
| #5 Lead engineer reachable | Required | Required | Required |
Per-archetype conversation shape
| Archetype | First-touch channel | Conversion artifact | Cycle |
|---|---|---|---|
| Lending-Protocol | Engineer-to-engineer (Twitter/TG) + technical content | Template fork → 60-day Production trial | 4-8 wks |
| Risk-Monitoring | Routed intro via founder / lead data eng | Architecture review + Risk-Dashboard Tier proposal | 6-12 wks |
| Liquidator-Bot | Self-serve via vertical landing page | Template fork → Production self-conversion | 1-3 wks |
Anti-profile (polite pass)
06 · Proof points
Hosted GraphQL endpoint
Aave V3 · Polygon · queryable now, no auth
Consumer risk dashboard
Next.js front-end consuming the live indexer · forkable
Risk-dashboard template repo
Use as GitHub Template — change one env var, ship for your protocol
Indexer source — money-market template v1
pow/envio-money-market-template-v1 · 5/5 vitest · runnable
Deploy branch
envio-deploy-money-market — pushes here trigger redeploys
PROOF_OF_WORK.md
One-page scoreboard: built · proven · where to verify
Live indexer state
16
Reserves indexed
1,089
Liquidations
USDC
Top supplier base
5,234
Top reserve suppliers
Aave V3 · Polygon · queried client-side from indexer.dev.hyperindex.xyz
Replay locally · 4 lines
git clone https://github.com/kaustubh76/Growth_Engineer_at_ENVIO.git cd Growth_Engineer_at_ENVIO pnpm -C pow/envio-money-market-template-v1 install pnpm -C pow/envio-money-market-template-v1 test # 5 ✓
For a live capture against Polygon, see RUN.md.
Chain provenance