morteza.moradi
All projects
Live in production2025–present

Voltrisks

A macroeconomic risk intelligence SaaS I designed and shipped.

Stack

Next.jsReactNode.jsPythonPostgreSQLSupabaseRedisStripeGitHub ActionsRenderVercelGrafanaClaude
Voltrisks — product screenshot

A production SaaS that monitors 350+ economic variables across 6 government and financial APIs, delivering real-time macroeconomic risk assessments across 11 GICS equity sectors and 7 risk categories. I drove the problem-framing, the feasibility calls, the architecture, and the build.

The problem

Individual investors don't have access to the kind of macroeconomic risk intelligence that institutional desks treat as table stakes. Bloomberg terminals are $24K/year. Most retail research stops at "the Fed raised rates 0.25%" without answering "what does that mean for my energy sector exposure this quarter?"

Voltrisks closes that gap with AI-powered macro risk dashboards that translate 350+ raw economic indicators into sector-level risk assessments — updated 5× per weekday, accessible to anyone with a subscription.

What I built

  • Full product. 13 months from blank repo to live launch. 1,305 commits, 222,000+ lines of code. Backend, frontend, data pipelines, AI workflows, billing, observability.
  • Production data pipeline. 422,000+ macroeconomic data points across 354 variables from 6 government and financial APIs (including FRED, EIA, BLS, CFTC, and GPR), spanning 21 years of historical depth.
  • Statistical pipeline rigor. 5-module Python pipeline across 4 frequencies (daily, weekly, monthly, quarterly), producing 103,000+ validated macro-sector correlations using t-tests, Benjamini-Hochberg FDR correction, walk-forward validation, and k-means regime classification across 4 market regimes (VIX, credit spreads, yield curve).
  • AI at authoring time, not runtime. The library of plain-language risk scenarios — translating technical signals into assessments a subscriber can read — was authored with Claude Code behind guardrails: validation rules, an auto-fix loop, and a review pass, plus guidelines and tests written to prevent drift, hallucination, and shortcuts. The daily product then runs that library deterministically — no LLM generates risk assessments at run time.
  • Reliability layer. 5× daily CI/CD deployments, 700+ automated daily data jobs at 96% success rate, Prometheus + Grafana observability with 9 custom metrics, circuit breakers across 6 external API integrations, 3-tier rate limiting.
  • Security & compliance. 215 Snyk scans executed via CI, automated dependency patching, Stripe webhook signature verification, Supabase row-level security, CORS lockdown. All critical and high CVEs resolved.

Architecture

Three repositories: a Node.js + Python backend, a Next.js frontend, and a separate Grafana observability agent. Production on Render (API), Vercel (frontend), Supabase (Postgres), and Grafana Cloud (monitoring).

Backend (Node.js + Python)
├── Express API on Render (REST, auth, billing)
├── Python risk engine (5× daily via GitHub Actions)
├── Python data pipelines (FRED, EIA, BLS, CFTC, GPR)
├── Statistical pipeline (correlation, FDR, walk-forward)
├── Deterministic scenario matching (no LLM at run time)
└── Redis/BullMQ async report queue
Frontend (Next.js on Vercel)
├── App Router, Tailwind, React Query
└── Supabase Auth, Stripe billing
Data (Supabase)
└── PostgreSQL, 4.6M+ rows
Observability
└── Prometheus metrics → Grafana Cloud

What I learned building it

Over 13 months, every product decision was mine: what to build, what to leave out, and the decision records behind each call. A few takeaways:

  • Choosing where AI shouldn't live. The statistical pipeline is deterministic. The risk engine is deterministic. The daily risk assessments use no LLM at all. The model did the one thing it's genuinely good at — authoring the plain-language scenario library, once, under guardrails — and then stayed out of the runtime. Deciding where AI shouldn't live is half the job.
  • Governance is engineering, not paperwork. The 10+ automated rule checks, the auto-fix loop, the director-review pass — that's how you keep an LLM authoring pipeline honest, not a Notion doc nobody reads.
  • Pick your battles. Render + Vercel + Supabase + Stripe + Grafana Cloud — boring, reliable, well-documented platforms — ship what used to need a small team.