Daniel Cárdenas

AI Automation Engineer: RAG · Edge ML · Firmware

I build practical AI systems: RAG pipelines, voice and document automation, Python APIs, and the embedded telemetry that makes edge ML useful in the real world.

XPLevel 1
0 XP150 to level up
Nov 2024Backend & Frontend2 min read

Stock Insights Dashboard

Containerized Go + Vue stock platform with Gemini portfolio screenshot extraction, fundamentals refresh, and watchlist workflows.

Go APIGeminiCockroachDB
GoVueCockroachDBFastAPIGeminiFintech

Outcomes

  • Docker Compose stack: Go API, Vue SPA, CockroachDB, FastAPI fundamentals service
  • Gemini-powered portfolio screenshot extraction
  • External market data integrations for quotes, fundamentals, and bond yield inputs

Problem

I wanted a realistic financial data product that combined backend services, a typed frontend, scheduled ingestion, and AI-assisted data entry. The challenge was to make stock and portfolio workflows feel operational instead of just displaying a static table.

Approach

  • Built a Go REST API with migrations and background ingestion for stock records, quotes, recommendations, and watchlists.
  • Used CockroachDB locally as the SQL store, managed by Docker Compose for repeatable setup.
  • Added a Vue 3 + Vite + TypeScript frontend with Pinia state and Tailwind styling.
  • Integrated Gemini to extract portfolio positions from brokerage screenshots.
  • Added scheduled fundamentals and quote refresh flows using Financial Modeling Prep, Alpha Vantage, and FRED-style yield inputs.
  • Split fundamentals work into a small FastAPI service so Python data tooling could live beside the Go API without turning the backend into a script pile.

Results

  • End-to-end containerized stack that can be brought up locally with one docker compose up --build.
  • Portfolio upload flow turns an image into structured positions for downstream portfolio views.
  • Recommendation endpoints combine cached quotes, fundamentals, and valuation inputs instead of relying on one raw provider response.