Client work · MyEyeDr
AI-powered Braze campaign testing tool
Own the backend of a .NET 10 tool that catches blank personalization in Braze campaigns before they are sent, using Azure OpenAI and a RAG pipeline on Azure AI Search.
- Role
- Software Developer · backend owner
- Employer
- Maven Technosoft
- Status
- Internal tool · not in production
The problem
Braze campaigns fail silently. When a customer is missing an attribute that a message depends on, the email still goes out, with a blank where the personalization should be. Nothing errors, and the team usually finds out from the customers who received it.
The tool is being built for MyEyeDr, a US client, and has not been released to production.
My contribution
- Own the backend of the tool.
- Designed it as a clean N-tier .NET 10 monolith.
- Built a retrieval-augmented generation (RAG) pipeline on Azure AI Search over a knowledge base kept in Azure Blob Storage, with Azure OpenAI models.
Technical decisions
- A layered monolith, not microservices. One deployable keeps an internal tool simple to run, while clear layers keep business rules separate from infrastructure.
- RAG instead of a bare model. Grounding Azure OpenAI in a curated knowledge base keeps answers tied to the team’s own documentation rather than the model’s general knowledge.
- The right tool for each job: DuckDB for in-process analytical queries, Hangfire for background jobs and SignalR for real-time updates to the user interface.
Outcome
The tool is an internal, pre-production project. It is where I work most directly with LLM integration: retrieval, grounding and wiring AI results into a .NET backend.