ENGINEERING

How Convexity is built

The technical decisions behind a real-time financial intelligence terminal.

BACKEND

Server architecture

python 3.12+

FastAPI

Type-safe, auto-documented API framework with Pydantic v2 for request and response validation.

asyncio

Async-first architecture

Built on asyncio and aiohttp from day one. Every I/O operation is non-blocking, enabling high concurrency on a single process.

sqlalchemy

Local persistence

SQLAlchemy ORM with aiosqlite for async local storage. Zero external database dependencies for development.

msgpack

Binary serialization

MsgPack encoding for API responses delivers 30-40% smaller payloads compared to JSON, reducing bandwidth and parse time.

uvicorn

ASGI server

Production-grade Uvicorn ASGI server with configurable workers and graceful shutdown.

logging

Structured logging

Structured JSON logging with request tracing, correlation IDs, and performance timing on every endpoint.

FRONTEND

Client application

react 18

TypeScript strict mode

Full strict-mode TypeScript with no-any enforcement. Every component, hook, and API call is type-safe.

vite

Sub-second HMR

Vite build tooling with hot module replacement under one second. No full-page reloads during development.

tanstack query

Server state management

TanStack Query handles caching, refetching, stale management, and background updates automatically.

zustand

Client state

Lightweight Zustand stores for UI concerns: sidebar state, theme preference, workspace configuration.

recharts

Data visualization

Recharts for composable, declarative charting with responsive containers and custom tooltips.

css

Custom design system

Token-based design system with CSS custom properties. Dark-default with full light mode parity. No framework dependency.

REAL-TIME

Streaming infrastructure

websocket

Live market data

Persistent WebSocket connections for streaming quotes, trades, and order book updates with minimal latency.

signals

Signal correlation engine

Detects patterns across insider trades, options flow, and filings. Cluster detection, first-buy identification, and cross-source signal classification.

reconnect

Exponential backoff

Automatic reconnection with exponential backoff and jitter. Connections recover gracefully without user intervention.

replay

Event replay

Missed messages during disconnection are replayed on reconnect so the client never has stale state.

react query

Client-side caching

30-second quote cache integrated with React Query. Prevents redundant network requests while keeping data fresh enough for active trading.

DATA

Data pipeline

ingest

12+ institutional feeds

Twelve or more distinct data feeds ingested and normalized into a unified schema. Each source is validated, normalized, and deduplicated at ingest.

provenance

Timestamped provenance

Every data point carries a provenance timestamp and source identifier. Full lineage from origin to display.

sqlite

Screener engine

SQLite-powered screener with optimized multi-factor queries across the entire dataset with sub-second response times.

cache

Multi-layer caching

Smart tiered caching strategy with TTL-based invalidation. Hot data stays in memory, warm data on disk, cold data fetched on demand.

AI

AI integration

multi-provider

Provider architecture

Anthropic Claude, OpenAI GPT, and Voyage AI embeddings behind a unified interface. Switch providers without changing application code.

routing

Intent-based routing

Requests are classified by intent. Simple lookups hit fast models; complex synthesis tasks route to frontier models.

resilience

Circuit breaker fallback

Automatic fallback across providers with circuit breaker pattern. If one provider degrades, traffic shifts instantly.

cache

Prompt caching

Prompt caching for repeated system prompts and common queries. Reduces cost and latency on high-frequency patterns.

finbert

Financial sentiment

FinBERT for domain-specific financial sentiment analysis. Purpose-built for earnings calls, SEC filings, and market commentary.

rag

RAG pipeline

Retrieval-augmented generation over SEC filings and financial documents. Grounded answers with source citations.

cost

Cost tracking

Per-user quota management with real-time cost tracking across all AI providers. Budget controls prevent runaway spend.

PERFORMANCE

Performance engineering

<100ms p95 target

API response times

We target sub-100ms on warm reads and track live p95 publicly on /status. Cold reads and external-provider round-trips are slower; we’re honest about the difference rather than quoting the best case.

semaphore

Concurrency limiting

Semaphore-based concurrent request limiting prevents upstream rate limits and protects system stability under load.

react.lazy

Lazy-loaded routes

Every route is lazy-loaded with React.lazy and Suspense. Users only download the code they need.

optimistic

Optimistic UI updates

Mutations update the UI instantly and reconcile with the server response. Rollback on failure.

skeleton

Skeleton loading

Content-shaped skeleton placeholders instead of spinners. Reduces perceived load time and layout shift.

splitting

Bundle splitting

Per-route code splitting with shared vendor chunks. Initial bundle stays small regardless of total feature count.

We're building the future of financial intelligence

If you care about real-time systems, financial data, and shipping fast — we want to hear from you.

See open roles