Projects
End-to-end builds — the problem, what I built and how it works
Deployed · GCP Cloud RunVoice AILLM
BrewHub — AI Voice Receptionist
Problem: Small businesses miss bookings when nobody can answer the phone, and taking reservations by hand is slow and error-prone.
What I built: A voice-first receptionist for a café. Customers just talk, and the assistant understands what they want, remembers context across turns, checks availability, confirms the booking out loud and emails a confirmation.
- Reliable dialogue: GPT-4o-mini handles language and a custom finite-state machine handles slot filling, so the LLM can't skip a required booking detail or confirm something invalid.
- Full voice loop: in-browser recording → Whisper speech-to-text → LLM → ElevenLabs text-to-speech (gTTS fallback).
- Business logic: booking validation, availability checks, per-session memory and branded HTML confirmation emails over SMTP.
- Shipped: FastAPI backend on Google Cloud Run, React + Vite + Tailwind frontend.
Mic → Whisper STT → GPT-4o-mini + FSM memory → TTS → Booking validation → HTML email
Python · FastAPI · OpenAI (Whisper, GPT-4o-mini) · ElevenLabs · React · Vite · GCP Cloud Run · SMTP
Data EngineeringAPIs
Compliant Contact-Data Pipeline (Apollo.io)
Problem: Sales teams need enriched contact data at scale, but scraping breaks platform terms and privacy rules (GDPR/CCPA), and API access differs from plan to plan.
What I built: A Python pipeline that uses only official Apollo.io APIs. It starts from LinkedIn-based targets and puts mobile numbers first.
- Graceful degradation: tries paid person enrichment first and automatically falls back to search-based discovery on free or trial plans. The same code runs unchanged with full API access.
- Cost awareness: tracks and optimises mobile-credit usage.
- Compliant by design: read-only, with no scraping, browser automation or reverse engineering.
- Clean output: structured, de-duplicated CSV ready for a CRM.
Targets → Enrichment API → (fallback) Search API → Credit tracking → Normalise → CSV
Python · REST APIs · requests · pandas · Data validation
Machine LearningNLP
Skill-Fit Job & Project Recommender
Problem: Job seekers struggle to see which roles fit their current skills, and which skills or projects would open up better ones.
What I built: A recommender that parses a resume, matches it against real job postings and returns best-fit roles, missing skills and project ideas to close the gap.
- Data engineering: merged three job datasets (Dice.com US, Sri Lanka IT, Morocco) into one schema, with de-duplication and audit files.
- Skill extraction: an extensible skills taxonomy with aliases maps messy wording (e.g. "sklearn" → scikit-learn) to canonical skills.
- Matching: TF-IDF vectors and cosine similarity rank roles. Gap analysis then suggests projects when a resume lacks key skills.
- Usable: interactive Streamlit app.
Resume → Parsing & skill extraction → TF-IDF vectors → Cosine similarity → Roles + skill gaps + project ideas
Python · pandas · NumPy · SciPy · scikit-learn · Streamlit
Earlier Work
House Price Predictor
Regression pipeline (Ridge/Lasso) with feature engineering, model comparison and a Streamlit front end.
Code