Projects
A few things I’ve built. I’ll keep adding projects as I ship them.
Built an AI chatbot for my personal website that answers questions about my background, projects, and experience. Uses OpenAI's Assistants API with file search (RAG) to query a knowledge base of my resume, projects, and blog posts. Adapts tone based on visitor type (recruiter vs casual).
- AI Architecture: OpenAI Assistants API with file_search tool, vector store with 6 knowledge base files (about, projects, roles, FAQ, blog excerpts, voice examples).
- Adaptive Voice: Two response modes (recruiter: professional/concise, casual: friendly/conversational) based on onboarding data.
- Smart Features: Confidence scoring (high/medium/low), next-action buttons (View Projects, Resume, Contact), fallback to phone contact for low-confidence responses.
- Persistence: Chat sessions and message history stored in Supabase, conversation context limited to last 12 messages for cost efficiency.
Implemented a 3-phase analytics system for my portfolio site: (1) onboarding modal to capture visitor intent, (2) Supabase database with event tracking and conversion funnels, (3) analytics dashboard with role segmentation and engagement metrics. Tracks everything from first visit through chat interactions.
- Onboarding Flow: Modal captures visitor role (recruiter/collaborator/browsing), goal, and referral source. Data persists to Supabase + localStorage for dual reliability.
- Data Model: Postgres schema with visitors, preferences, events, chat_sessions, and chat_messages tables. Includes SQL views for conversion funnels and engagement metrics.
- Analytics Dashboard: Protected route (/dashboard) showing 7-day metrics: visitor count, onboarding completion rate, conversion funnels by role, chat engagement, and event tracking.
- Event Tracking: Captures onboarding_completed, resume_clicked, contact_clicked, chat_opened, chat_message_sent, and more. All timestamped with visitor_id for cohort analysis.
Built and deployed my personal website with a blog workflow so I can publish posts from the web. Includes a clean Next.js frontend, a Keystatic admin panel, and Cloudflare Pages hosting + domain setup.
- Frontend: Next.js + TypeScript pages (about, projects, reading, blog).
- Blog workflow: Keystatic admin panel to create/edit posts via GitHub.
- Infra: Cloudflare Pages deploys + domain + DNS + Access protection for /keystatic.
- Analytics: Integrated Google Analytics (GA4) to measure traffic and engagement.
Built an end-to-end analytics pipeline that turns annual financial statement inputs + valuation assumptions into cleaned Postgres tables, KPI SQL views, and a Power BI dashboard with comps + DCF scenario valuation outputs (Base/Bull/Bear).
- Data model: Postgres dim/fact tables + staging loads for annual financials and scenario assumptions.
- KPI layer: SQL views (e.g., YoY revenue growth, FCF margin, latest-year comps) + basic data quality checks.
- Valuation: 5-year DCF with Base/Bull/Bear scenarios and intrinsic value per share written back to Postgres for Power BI consumption.
Built a statistical model to predict ACC men’s basketball point spreads for the Triangle Sports Analytics Competition (Feb–Mar 2026). Focused on building a repeatable pipeline: data prep → features → model → predictions.
- Data + tooling: Python + Pandas (CSV pipelines across 2023–2026 seasons), Jupyter notebooks.
- Modeling: scikit-learn regression experiments (linear/regularized + tree/ensemble) with holdout evaluation.
- Outputs: saved models (.joblib) + 2026 prediction CSVs (optionally with intervals / uncertainty).
Bootstrapped a Next.js app (create-next-app) as the foundation for a job search tracking tool.
- Foundation: Next.js project bootstrapped with create-next-app; edit entrypoint via
app/page.tsx. - Structure: App Router setup under
src/appwith standard Next.js config files (e.g.,next.config.ts,tsconfig.json). - Dev workflow: Local dev server via
npm run devwith fast iteration and auto-reload. - Code quality: ESLint configured to enforce consistent standards as the project grows.