← All work

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.