Skip to main content

Work

  1. 01

    PHI Firewall

    An OpenAI-compatible proxy that swaps patient info for realistic fakes before any model sees it, then restores the real values in the reply. Covers all 18 HIPAA identifier types.

    Python · FastAPI · spaCy · Redis · Docker · Render · OIDC · Swift · MCP

    your app sends

    NAME: Maria Lopez, MRN MRN: 448213, seen DATE: 03/14 for a persistent cough.

    • Request path: detect, mask, call the model, restore. Detection stacks regex rules, name lexicons, structured-field parsers and spaCy's small NER model, which can only add spans, never drop them. It fails closed, so if detection, the session store or the model breaks, nothing gets sent.
    • 94.3% recall, 96.9% precision on synthetic notes it never saw · 89.7% / 97.1% on notes someone else wrote · 7.3 ms median, 95% under 18 ms, CPU only · 798 test functions
    How it works (2 more) +
    • The tricky part is keeping fakes coherent across a conversation. Each session gets one date offset so intervals stay true, and real values come back even in streamed replies.
    • Eval cases are written after the rules are frozen, so the score isn't fit to the test set. Session maps are encrypted per team (HKDF-derived keys, rotatable), API keys are stored as HMACs, rate limits are per key, and the audit log is a hash chain.
  2. 02

    Salesforce MCP Gateway

    An MCP server that lets AI work in Salesforce as the signed-in partner or employee, never through a shared admin account.

    TypeScript · Node.js · Azure Functions · Salesforce APIs · OAuth 2.0 + PKCE · MCP · Grafana

    • Each user signs in through Salesforce OAuth with PKCE, so the AI inherits that person's record access. The gateway stores no passwords or tokens. Writes pass my validation, then Salesforce's own, with per-user create limits. Deletes are blocked and every change is logged.
    • 908 commits · 6 Azure apps across test and live · load-tested with 150 users · 2.3 s cold start vs 90 ms warm
    How it works (2 more) +
    • Under load the first things to break were Salesforce's own API limits and cold starts, not my code, so those limits are written down next to the load test results.
    • Health checks run every 10 minutes. One failure sends a chat alert, two in a row place a phone call, and an outage only ever pages once. Releases are versioned and deploy on their own.
  3. 03

    Secure Coding Quiz Platform

    Coding quizzes for universities. Every student gets a browser code editor with all AI features stripped out, and instructors watch live.

    Docker · code-server · Node.js · Express · Server-Sent Events

    • One Docker container per student runs code-server. A Node/Express backend streams edits to the instructor dashboard over SSE and records every edit for replay.
    • 230 MB of bundled Copilot deleted, and the build fails if any of it is left · 30 of 30 lockdown checks pass
    How it works (1 more) +
    • The editor falls back to a public extension store even when you turn it off, so it's locked at three separate layers. Settings are pinned, and a guard reverts any attempt to turn AI or autocomplete back on.

More projects

  • PFPersonal finance app for Mac and iPhone: net worth, spending, investments and an early-retirement planner. No accounts, no analytics, data stays on the device.
    • SwiftUI app on SwiftData. All money math lives in a separate Swift package that uses Decimal, so cents never drift.
    • 34 tests across the finance core, backups and price fetching · 6,300 lines of Swift
    • Quotes come from 4 providers in a fallback chain. If every one fails, it shows the cached price and marks it stale instead of guessing.
    • The retirement planner adjusts for inflation and estimates years to go from your contribution rate. Also has widgets, net worth in the Mac menu bar, an app lock and AirDrop backups.

    Swift · SwiftUI · SwiftData · WidgetKit · Swift Testing

  • ClaroVirtual cards for teams, with budgets that enforce themselves and live spend tracking.1st Place
    • Stripe payment events hit a Next.js API, which checks the spend against budget rules mapped to the company's team structure and updates totals as it happens.
    • Rate-limited API answers in under 200 ms · 95% of transactions processed in under 250 ms
    • The budget check sits in the payment path, so it had to stay fast enough not to hold up the transaction.

    TypeScript · Next.js · Stripe · Supabase · PostgreSQL

  • Claro Allocation EngineSplits available cash across many clients in real time, fairly and inside risk limits.Patent Pending
    • Each client's share is weighted by need, then adjusted for their preferences. Risk and cash limits are hard constraints checked on every allocation, never soft targets.
    • The tradeoff is one client's preferences against fairness across everyone, without ever breaking a limit in the middle of a real-time update.
    • Built at mySpacebar Studios

    TypeScript · Node.js · PostgreSQL

  • Digital Receipt Automation SystemReads receipts with OCR and files the expense report on its own.
    • Receipts go through OCR, get sorted by vendor, and land in the expense report without anyone typing them in.
    • Up to 250 receipts a minute · 70% less manual data entry

    Google Apps Script · JavaScript · OCR

  • PaperBoy.RealNews reader that groups stories about the same event, summarizes them and flags the tone.
    • Pulls 3 outlets per event, clusters them, and has an OpenAI model summarize and compare tone and bias. Reading history lives in Db so follow-up stories link back to what you read based on the foreign key linkage
    • 3 sources compared per story · 7 filters · about 80% less reading time

    Next.js · OpenAI API · Postgres

  • SnapLotAuction app for live events with bidder sign-up, real-time bidding and instant payouts.
    • Bids push to every phone in real time, and Stripe pays the seller as soon as the winner checks out.
    • Bids show up in under 150 ms · 200+ people bidding at once · checkout twice as fast
    • Venue Wi-Fi is unreliable, so bidding has to keep working when the connection drops.

    TypeScript · Next.js · Node.js · Supabase · Stripe

  • Mental Health ChatbotGPT chatbot for mental-health support with topic filters and hand-off to a human.
    • Next.js front end on the OpenAI API. Chat history is stored per user in Supabase and only readable by that user.
    • Users stayed 2.5× longer · nobody managed to push it off-topic
    • Off-limits topics get filtered, and chats that need a person are flagged for a human instead of the bot trying to handle them.

    Next.js · OpenAI API · Supabase

  • BudgetlyGame that teaches money basics through levels, quizzes and points.3rd Place
    • Offline-first PWA. Progress saves on the device and syncs to Supabase when you're back online.
    • First version in 36 hours · 10 working modules

    Next.js · PWA · Supabase · Stripe

  • Data Mining & Predictive ModelingModels that predict house prices, customer churn and who'll respond to marketing.
    • Python and R for the models, a hyperparameter search over 200+ settings, and Tableau to compare how each model performed.
    • 200+ settings tested · 14% more accurate than the baseline model

    Python · R · Tableau

  • Drone-Based Parking EnforcementFinds illegally parked cars in drone footage, reads the plate and drafts the ticket.
    • OpenCV detects moving cars, OCR reads the plate, and only high-confidence reads make it into a ticket. Low-confidence ones get dropped rather than guessed.
    • 90% of plates read correctly · 80% of the work automated

    Python · OpenCV · OCR · React

  • Automation Scripts SuiteGoogle Apps Script tools for scheduling, outreach emails and volunteer sign-ups.
    • Mail-merge templates fill in each person's details, and one-click buttons let non-technical staff run them.
    • About 10 hours a week saved · 300+ emails per campaign

    Google Apps Script · JavaScript

  • Luminex DashboardAdmin dashboard for a business app: charts, request tracking, and each company only sees its own data.
    • Next.js on Supabase with every query scoped to the signed-in company. Framer Motion animates state changes.
    • Loads in under 1 second · perfect performance score

    Next.js · Supabase · Framer Motion

Research

Published

Navigating the Artificial Intelligence (AI) Era: Cross-Cultural Perspective on Technostress, Anxiety, and AI Use

Joseph Manga, Alin Geevarghese · 2025

Examines how technostress and anxiety mediate AI adoption across culturally distinct student populations in the US and West Africa, revealing anxiety as the primary barrier regardless of skill level.

AI AdoptionCross-Cultural ResearchTechnostress
Read paper ↗

Role of Stigma, Anxiety, and Tone on Disclosure and Response Behaviors in Online Health Communities

Joseph Manga, Francis Kofi Andoh-Baidoo, Emmanuel Ayaburi, Alin Geevarghese · 2025

Investigates how stigma and anxiety shape disclosure patterns in online mental health communities and how tone of peer responses moderates re-engagement behavior.

Digital HealthOnline CommunitiesBehavioral Analysis
Read paper ↗

Working Papers

Building Scalable Data Pipelines for IoT Systems

How I built real-time sensor data pipelines at a nuclear research lab

Coming soon