Projects

Things I’ve built & researched

Work spanning the full stack of my interests — from analog compute simulators to multi-agent interfaces and policy research tools. Filter by area, and expand any card for the technical architecture.

Market Pulse

Shipped

2025

  • A high-throughput streaming pipeline that ingests live financial news, runs quantized FinBERT sentiment and entity extraction, and computes a real-time sentiment shock signal.
  • Go handles stream plumbing (ingestion, dedup, Kafka); Python runs INT8 ONNX inference in a multi-process consumer group — split by design at the language boundary.
GoPythonKafkaONNXFinBERTPrometheusStreamlit
  1. 1Go ingestion fans out concurrent fetches (GDELT, RSS, replay) into a channel and produces to the news.raw Kafka topic.
  2. 2A Go processing consumer group deduplicates via content hash, normalizes, and filters before publishing to news.processed — so the model never runs on junk.
  3. 3Python worker processes (not threads) join an inference consumer group, run INT8-quantized FinBERT, and feed a rolling z-score shock detector observable in Grafana.

Agora

Shipped

2025

  • A fault-tolerant, sharded edge-network information retrieval engine built from scratch in Go — custom BM25 ranking, no Elasticsearch or Lucene.
  • Coordinator scatter-gathers queries across worker shards over gRPC and merges globally ranked results with graceful degradation under node failure.
GogRPCProtocol BuffersDockerBM25
  1. 1Each edge worker holds an in-memory inverted index with posting lists; queries are tokenized and scored locally with configurable BM25 k1/b parameters.
  2. 2The coordinator fans out SearchRequests concurrently (goroutines + WaitGroup) with a strict deadline, then merges partial top-K slices via a bounded min-heap.
  3. 3Push heartbeats and TTL-based eviction keep the worker pool fresh; restarted nodes re-register automatically without manual config reload.

Aweh

Active

2025

  • AI-powered immigration guidance for F-1 students — hybrid RAG with personalized answers grounded in USCIS policy documents and user profiles.
  • Combines vector + keyword retrieval with Cohere reranking before a LangChain agent reasons over citations and escalates edge cases.
PythonFastAPILangChainSupabasepgvectorClaudeStreamlit
  1. 1Official immigration PDFs (USCIS policy manual, 8 CFR, SEVP guidance) are chunked and embedded into Supabase pgvector for semantic retrieval.
  2. 2Hybrid retrieval merges dense vector search with keyword matching, then Cohere rerank selects the most relevant spans before the agent composes an answer.
  3. 3User profile context rewrites queries for personalization; the agent is instructed to cite sources and flag when a question needs human legal counsel.

Financial NLP Engine

Shipped

2025

  • End-to-end NLP pipeline for extracting structured financial metrics and sentiment from earnings reports and market news.
  • Modular ingestion → parsing → sentiment → metric extraction (EPS, revenue) → market data integration, built as a team project at Notre Dame.
PythonJavaScriptHTMLCSS
  1. 1Raw earnings reports and news land in data/raw/, then flow through parsing modules that extract clean text and structured fields into data/processed/.
  2. 2Dedicated sentiment and extraction stages pull EPS, revenue, and other metrics, writing final JSON/CSV outputs to data/output/.
  3. 3Integration modules connect parsed signals to market data so downstream analysis can correlate language with price movement.