AI-native, direct-to-landlord rental platform for the GTA
Next.js
TypeScript
Node/Express
PostgreSQL
Prisma
Claude
Stripe
Clerk
Built the full-stack platform as a Turborepo monorepo spanning web, API, and shared packages, running the entire rental loop (browse → AI-screen → lease → rent collection) end to end and designed to cut agent commissions out of the deal.
Built 9 Claude-powered AI services (applicant match scoring, natural-language listing search, listing-description generation, roommate compatibility, student/newcomer screening), each with a deterministic heuristic fallback so the product still runs without API keys.
Built student- and newcomer-friendly screening (a built-in guarantor flow, no Canadian credit history required) plus AI-assisted Ontario RTA lease and LTB notice generation with rent-cap auto-checks.
Wired up Stripe (test mode) for rent and paid-service flows, Clerk auth, Pusher real-time messaging, Mapbox, and a verification layer with government-ID and proof-of-ownership checks.
Built a multi-tenant lead-intake app that ingests inquiries from web forms, email, and call notes and returns structured qualification, a summary, a drafted reply, routing, and a next task in a single Claude call.
Used JSON-schema-constrained structured outputs to pull contact fields and classify lead quality (hot/warm/cold/spam) without hallucinated data, keeping API keys server-side behind route handlers.
Built a per-client config layer injected into the system prompt, so qualification logic, routing, and reply tone adapt per business with no code changes.
Extended it into a full pipeline (deal stages, value tracking, stale-deal detection, an LLM follow-up generator) plus real-time live-call transcription that surfaces suggested responses mid-call.
Algorithmic modeling and data-engineering platform
Python
NumPy
pandas
Genetic Algorithms
Bayesian Optimization
Built a streaming ETL pipeline that processes a 56 GB CRSP market-data set row-by-row in constant memory, applying split/dividend adjustments and emitting clean per-symbol data for backtesting.
Engineered a composable strategy layer searched by a genetic algorithm and Bayesian optimization, and implemented gradient-boosted-tree and Q-learning models from scratch in NumPy.
Built a walk-forward validation gate (out-of-sample testing, purged cross-validation, transaction-cost modeling) that keeps strategy selection and validation strictly separated.
Designed, built, tested, and operated the whole platform solo, backed by 260 automated tests run as a pre-merge gate with safety guarantees encoded as executable invariants.
Built an LLM assistant that ingests annual reports, earnings transcripts, and investor materials and answers analyst-style questions with cited source passages.
Implemented the full RAG pipeline (document parsing, chunking, embeddings, semantic search over PostgreSQL/pgvector, and OpenAI responses) with 'insufficient context' answers when the documents don't support a claim.
Built an evaluation harness measuring retrieval quality, hallucination risk, and answer consistency, and containerized the whole stack with Docker Compose behind CI/CD checks.
Probabilistic forecasting and a play-money prediction market
Python
PyTorch
Perplexity API
Built a probabilistic forecasting system for a friends-based, play-money prediction game, combining historical event data, live odds, and market signals into event-probability estimates.
Trained a custom PyTorch model to fold historical patterns and external market signals into a single calibrated probability.
Built peer-to-peer and global prediction markets (market creation, odds updates, and AI news summaries via the Perplexity API), plus an engagement layer of streaks, XP, daily quests, and a leaderboard with head-to-head duels.