May 2024 to Aug 2024 · Toronto, ON
Software Engineering Intern
Bond Brand Loyalty
- Tech
- Python, Streamlit, Snowflake, SnowSQL, Snowpark, Scikit-learn, Azure AI Vision, Azure AI Translation, Azure OpenAI Embeddings, BeautifulSoup, Postman
- Date
- May 2024 to Aug 2024
- Status
- Complete
- Links
- bondbl.com ↗
Bond Brand Loyalty runs loyalty programs and customer-experience work for large North American brands, and its AI team builds the tools underneath that work: sentiment analysis, campaign generation, competitive intelligence, internal machine learning tooling. I joined as a Software Engineering Intern on that team and shipped four separate applications to production over the summer.
Customer Sentiment Analysis Tool
Problem
The existing sentiment analysis tool pulled customer sentiment out of multiple data sources to guide loyalty program design, but its Snowflake integration had drifted and stopped returning reliable results, and only an engineer could operate it.
Architecture & Approach
I rebuilt the retrieval layer against Snowflake directly, writing SnowSQL queries to pull and join the source tables the tool depended on, and redesigned the interface so a marketer with no SQL background could run an analysis in a few clicks instead of filing a ticket.
Technical Challenges
The hard part wasn't the interface, it was tracing a silent data mismatch back through several joined Snowflake tables to the single upstream schema change that had broken the original query.
AI-Assisted Content Generation Tool
Problem
Marketers writing new ad campaigns had no fast way to check what Bond had already tried, so ideas that had already failed with a client kept resurfacing, and producing a first draft of copy and concept art took real creative time before an idea was even validated.
Architecture & Approach
I built a Streamlit application, used by more than 50 marketers, that generated headline and campaign copy through GPT-4o and concept art through DALL-E, backed by a retrieval layer over an archive of 75,000 past ads: OpenAI embeddings indexed the archive, and cosine similarity surfaced comparable campaigns alongside every new idea so it stayed grounded in what had actually worked. A feedback loop, backed by Streamlit session state, let a marketer regenerate content against their own notes without losing the rest of the session.
Technical Challenges
Getting useful nearest neighbors out of 75,000 ads meant treating the embedding step as a first-class part of the system rather than an afterthought, since a bad embedding pass would quietly surface unrelated campaigns with no signal to the user that the match was weak.
Competitive Intelligence Pipeline
Problem
A $25B grocery retail client needed to track competitor loyalty offers, specifically digital-exclusive deals, across flyers from stores nationwide, more volume than any manual review process could keep up with cycle over cycle.
Architecture & Approach
I built a Python pipeline that scraped competitor flyers nationwide with BeautifulSoup and Requests, classified each offer through Azure AI Vision and Azure AI Translation for image content and multilingual text, and used GPT-4o for the final offer-type classification, before landing structured results in Snowflake for the Analytics Consulting team.
Technical Challenges
Flyers arrived in inconsistent formats and multiple languages with no shared structure, so classification had to hold up against noisy OCR output; regex cleanup on the extracted text closed most of the remaining gap and cut manual labour hours on the process by 11%.
Machine Learning Automation Platform
Problem
Data analysts across Bond were repeating the same manual steps on every model, feature selection, importance analysis, hyperparameter comparison, with no shared tool and no guardrail against biased model selection.
Architecture & Approach
I built a Snowflake native application on Snowpark, Scikit-learn, and Streamlit that automated model selection, feature importance, and partial feature importance, deployed through Snowflake's own stage-and-procedure architecture so any of Bond's 250-plus employees could run it without local setup.
Technical Challenges
The core of it was cross-nested validation, selecting a model and its hyperparameters without letting the same data leak into both steps and bias the comparison, which took real care to implement correctly inside Snowpark's execution model.
Key Learnings
The recurring problem across all four builds was the same: turning a capable but rough AI output, generated copy, a classified image, a selected model, into something a non-technical colleague could trust and use without engineering supervision. That meant investing as much in retrieval quality, validation, and interface design as in the model calls themselves, and it shaped how I think about shipping AI features for people who will never read the logs.
Other
- Shipped four production applications in a single four-month internship, reaching 250+ employees across marketing, analytics, and data science.
- Presented finished tools at department-wide meetings to both engineering and non-technical stakeholders.
- Worked directly with Bond's marketing team to scope and refine the content generation tool against real campaign needs.