Projects

Things I built to take the busywork out of data.

Automation tools and dashboards I designed and built. Most started as one tedious task and grew into something used every day, and two are open source and still in progress. The CRM tools go by generic names, and the dashboards show sample data with sample names. Side projects made for fun are at the bottom.

  1. Flagship case study

    From a VBA Workbook to a Python Tool Suite

    Eight Tools and One Launcher, Built One Bottleneck at a Time

    • status shipped
    • version v21
    • built Sep 2026
    • suite 8 tools
    • 8 purpose-built tools in one launcher
    • 300K+ CRM records processed by the pipelines

    How a handful of small automations grew, one bottleneck at a time, into a desktop suite of eight tools that search, convert, reconcile, and report on CRM data.

    Built with PythonpandasPySide6RapidFuzzopenpyxlPyInstaller

  2. Chrome extension

    PowerFill

    Scan a Form Once, Fill It in One Click

    • status ongoing
    • version v1.2.0
    • built Oct 2026
    • Chrome Manifest V3
    • dependencies none
    • license MIT
    • 1 click to fill a form after scanning it once
    • 140+ checks in an end-to-end test suite run in headless Chrome

    A Chrome extension that reads the fields on any web form, saves the values you set as a profile, and fills the form again in one click, or row by row from a spreadsheet.

    Built with JavaScriptChrome Extensions APIManifest V3Puppeteer

  3. Apps Script and Google Sheets

    VoIP Call Tracking Dashboard

    Two Phone Systems, One Hourly Feed

    • status shipped
    • refresh hourly
    • platform Google Sheets
    • data sample
    • 2 VoIP providers merged into one 19-column schema
    • Hourly automatic refresh through the providers' APIs

    Calls lived in two VoIP systems with two report formats. I connected both to one Google Sheets workbook through their APIs, so call activity sits in one place and refreshes itself every hour.

    Data flow VoIP provider APIsGoogle Apps ScriptGoogle Sheets

  4. Python desktop tool

    Search & Filter Engine

    From Hours of Excel Filtering to Seconds

    • status shipped
    • version v14
    • built Sep 2026
    • demo runs in the browser
    • <10 s per search, down from 1–3 hours by hand
    • 100K+ rows searched without lag
    • 90–95% match accuracy, up from about 70%

    A desktop search engine for 100K+ row lead exports that understands company names and job titles, so filtering a 200-company target list takes seconds instead of hours.

    Built with PythonpandasPySide6Regex

  5. Zoho Analytics dashboard

    Database Management Dashboard

    A Weekly Health Check for the CRM

    • status shipped
    • refresh weekly
    • platform Zoho Analytics
    • data sample
    • Weekly refresh, read at a monthly level
    • 6 data-gap counters, from missing email to unreachable contacts

    A Zoho Analytics dashboard that shows on one screen how complete and how usable a contact database is: what's missing, who can't be reached, and where the records came from.

    Data flow Zoho CRMZoho Analytics

  6. Python ETL tool

    CRM Conversion Engine

    Turning Any Lead File Into a Clean Import

    • status shipped
    • version v27
    • built Sep 2026
    • ~18 s to convert 40K+ records, down from 4–8 hours
    • 80–90% fewer import errors
    • <1 min to set up a new file, down from about 10

    A Python ETL tool that converts exports from CRMs and lead-data providers into each system's import format, with identity matching built in, so a clean import file takes seconds instead of 4 to 8 hours.

    Built with PythonpandasRapidFuzzPySide6openpyxl

  7. Dota 2 bot script

    TI Champions Bot

    Fixing Dota 2 Bots One Match Log at a Time

    • status ongoing
    • version v0.7.9
    • built Oct 2026
    • language Lua
    • base Open Hyper AI
    • 16 versions logged in the changelog, 0.6.4 to 0.7.9
    • 127 heroes scored for each of the five positions in the draft

    A customized Dota 2 bot script in Lua, built on the open-source Open Hyper AI. I play a local match against the bots, read the console log, find the root cause of what went wrong, and ship the fix as the next version.

    Built with LuaDota 2 bot scripting APIGit

  8. GA4 and Zoho Analytics

    Website Analytics Dashboards

    One Template, Three Sites

    • status shipped
    • source Google Analytics 4
    • platform Zoho Analytics
    • data sample
    • 3 websites on one report template
    • 1 Google Analytics 4 property behind each site

    One report layout applied to three websites, each fed by its own Google Analytics 4 property, so traffic, search, and content numbers read the same way for every site.

    Data flow WebsiteGoogle Analytics 4Zoho Analytics

  9. Python desktop tool

    CRM Reconciliation Tool

    Syncing Updates Back Without Breaking the Master Data

    • status shipped
    • version v11
    • built Sep 2026
    • 1 run builds the whole import package
    • 0 existing values erased by blank fields
    • Ordered import files, one category at a time

    A tool that compares records updated during calling against the full master database and turns them into separate, ordered import files, so only safe, intended changes reach the main CRM.

    Built with PythonpandasPySide6openpyxl

  10. Zoho Marketing Automation

    Email Marketing Dashboards

    Campaigns and Mailing Lists at a Glance

    • status shipped
    • source Zoho Marketing Automation
    • platform Zoho Analytics
    • data sample
    • 2 dashboards on one marketing data source
    • Funnel from emails sent down to clicks

    Two Zoho Analytics dashboards built on Zoho Marketing Automation data: one follows email campaigns from sends to clicks, the other shows which mailing lists produce leads.

    Data flow Zoho Marketing AutomationZoho Analytics

  11. Python desktop tool

    Call Analytics Tool

    Matching Call Logs to CRM Records in Seconds

    • status shipped
    • version v9
    • built Sep 2026
    • <15 s per dataset, down from about 60 minutes
    • 98% less time spent per run
    • 3-layer phone matching: full number, last 8, last 7 digits

    A desktop tool that cleans raw call logs and CRM exports, matches calls to contacts, and produces conversion metrics, monthly call imports, and a weekly operations report, in seconds instead of an hour.

    Built with PythonpandasPySide6openpyxl

  12. Zoho Analytics report

    Monthly CRM and Calls Report

    Activity and Outcomes, Month Over Month

    • status shipped
    • refresh monthly
    • platform Zoho Analytics
    • data sample
    • 2 parts on one page: CRM activity and call performance
    • 12 months of history in each trend chart

    A monthly report that puts CRM activity and call performance from two VoIP systems on one page, with every headline number shown against the month before.

    Data flow CRM and VoIP call logsZoho Analytics

  13. Python desktop tool

    Pivot Report Tool

    From Repetitive Pivot Work to One-Click Reports

    • status shipped
    • type desktop app
    • stack Python + pandas
    • <20 s per report, down from 20–30 minutes
    • 95% less time on recurring reports
    • Saved sessions rerun a full setup in one click

    A lightweight desktop tool that turns a CSV export into a filtered, pivot-style report in one pass, with saved sessions for recurring reports.

    Built with Pythonpandas

  14. Advanced Excel

    Turning Excel Into a CRM

    Six Sources, One Workbook, and Formulas Doing the Cleanup

    • status superseded
    • stack Excel formulas
    • figures illustrative
    • download sample workbook
    • 30,000+ lead records in one workbook
    • 160+ fields tracked per record
    • 6 sources merged into one structure

    Before any of the Python tools existed, the lead database lived in one Excel workbook: six sources, 160+ fields, formula-driven cleanup, and a live dashboard. This is that system.

    Built with ExcelArray formulasSUMIFS

Small automations

Smaller tools in the Python suite. Each one removes a single repetitive step, which adds up across a week.

  • Email Validation Importer

    Turns email validation results into one CRM update file. When an address appears twice, the most severe status wins.

  • Campaign Report Formatter

    Turns a raw CRM export into each campaign's report table. Formats are saved and edited in the tool, not in code.

  • Contact Request Builder

    Takes a free-text request, pulls out the email addresses, and builds one clean import, flagging contacts with risky history.

  • Email Campaign Consolidator

    Combines email campaign reports into CRM-ready imports and a password-protected summary workbook.

Just for fun

Side projects I make to play with data and learn. I plan them and write the prompts, and AI writes the code, so they show ideas and data work, not my programming.

  • Side project · AI-built

    Globe Trivia

    Spin the Planet, Click a Country, Get Its Tech Facts

    • status shipped
    • built Oct 2026
    • code written by AI
    • facts 853 sourced
    • stack HTML · CSS · JS

    A cartoon 3D globe with 853 sourced tech and data facts for 245 countries and territories. I planned it and wrote the prompts: Claude's deep research found and sourced the facts, and Claude Code wrote all of the code. A fun side project to see how far prompting can go, not a showcase of my coding.

Want the details behind any of these? Get in touch