CognivexAI
Back

Pyramid

A Full-Scale Investment Intelligence Platform

Role: Founder & Lead Developer, CognivexAI

Type: Client project (end-to-end)

Live: pyramidfinance.eu

Stack: Next.js (App Router) · TypeScript · Tailwind CSS · Zustand · Neon Postgres · DuckDB-WASM · Vercel

Solo build~70 countries~16.7k assetsBilingual EN/FRInstallable PWA

Overview

Pyramid is a bilingual (EN/FR) investment-intelligence platform that brings professional-grade market data, screening, research, and advisory tools into a single, fast, consumer-friendly product. I designed and built the entire application end-to-end — architecture, data pipelines, UI, and deployment — as the sole developer.

Think of it as a professional-grade markets terminal fused with an advisory toolkit and a community layer, delivered as a modern, installable web app.

The Brief

The client needed a serious, credible finance platform that could:

  • Cover global markets — stocks, ETFs, crypto, forex, commodities, indexes — across ~70 countries.
  • Give retail users institutional-grade depth (financial statements, analyst consensus, SEC filings, supply-chain trade flows, COT reports) without overwhelming them.
  • Feel fast and premium, work on mobile, and support two languages.

The hard part: doing all of this on top of third-party market data that is messy, inconsistent, and never quite shaped the way a clean product needs it.

What I Built

Markets & Discovery

  • A global Explorer and a DuckDB-WASM client-side Screener that filters ~16.7k assets instantly.
  • Rich asset detail pages — live quotes, interactive charts, financial statements, trend analysis, valuation, dividends, earnings, peers, analyst consensus, and news — in a customizable tile dashboard.
  • A global search that returns a company's home and US listings, each correctly labeled by exchange.

Deep Data

  • Supply-chain / trade-flow maps (bilateral trade + tariffs across the world economy).
  • SEC/EDGAR filings, IPO calendar, economic calendar, and COT positioning reports.
  • A research feed with analyst content and PDF export.

Beyond Markets

  • Advisory tools & calculators (budgeting, risk, planning) and an advisor marketplace/booking flow.
  • Portfolio tracking + simulation, watchlists, and price alerts (web-push).
  • A community/groups layer and a broker comparison engine.
  • SERO — an AI technical-analysis assistant.

Platform

  • Full bilingual (EN/FR) i18n, a PWA (installable, push notifications), a Gold subscription tier, and an admin surface.

Architecture & Engineering

Designed and built across every layer — frontend, backend, data, security, payments, and infra — as the sole developer.

Frontend

Next.js (App Router) + TypeScript + a custom Tailwind design system; bilingual EN/FR; mobile-first; installable PWA with push. A client-side DuckDB-WASM engine filters ~16.7k assets in the browser with zero server round-trips.

Backend & data

Server API routes + scheduled cron jobs (price alerts, AI briefs) over Neon Postgres. A normalization layer reshapes messy multi-provider data (FMP, SEC/EDGAR, UN Comtrade/WITS, news) into clean product models — each wrapped with caching and graceful fallbacks so a flaky upstream never breaks the UI.

Security

Full auth with Google & Microsoft OAuth, email verification, and password reset; CSRF protection, rate limiting, and admin gating. Every provider API key lives in server-only modules — no secret ever ships to the browser.

Payments

Stripe checkout, customer portal, and webhook-driven subscription state powering the Gold tier.

Infra

Vercel CI with preview builds and a manual production-promotion gate; secrets management; VAPID web-push.

A Hard Problem I Solved: Global Cross-Listings

The same company can trade on many exchanges under different tickers — Royal Bank is RY (NYSE, USD) and RY.TO (Toronto, CAD); Nestlé is NESN.SW (Swiss, CHF) and NSRGY (US OTC, USD); and there's often no relationship between the two tickers (Toyota is 7203.T vs TM, Kraken is PNG.V vs KRKNF).

The data provider tags each ticker by the company's domicile, not the exchange it trades on — which naively produced wrong currencies, wrong flags, and duplicate/broken pages.

I designed a currency-driven identity model: each listing's country and currency are derived from the listing itself, never the domicile — so every cross-listing self-classifies correctly and automatically. I paired it with a two-layer product model: browse shows one clean canonical listing per company, while search surfaces every listing (home + US), each labeled by exchange. I also solved edge cases like an accent-sensitive search index ("Nestlé" vs "Nestle") with a name-bridging fallback.

The result: a system that handles ~70 markets cleanly and consistently, with no per-stock hard-coding.

Outcome

A production, bilingual, installable finance platform covering global markets end-to-end — shipped and maintained solo, from first commit to live deployment, with ongoing iteration.

Lessons Learned

  1. 1

    Understand the full scope before you start. I began Pyramid before I really grasped how big it would get, and at one point I had to redo a large part of it. Now I map the whole thing out first.

  2. 2

    Wireframe first, then build. With this many screens and models, I learned to wireframe the design before writing code. Diving straight in without a plan cost me rework.

  3. 3

    Build for both languages from day one. I started English-only even though I knew it needed English and French, and retrofitting i18n after the product was already built was the hardest part of the whole project. If it's bilingual, wire that in from the start.

Skills Demonstrated

Full-stack product engineeringComplex data modeling & normalizationFinancial-domain depthPerformance engineering (WASM, caching, client analytics)i18nPWA / pushDesign systemsIndependent end-to-end delivery of a real client product

Zephyr Here!

    CognivexAI

    ©