Salesforce · Azure · Applied AI

Document AI for field sales: from photo to reviewed CRM data

Two Salesforce apps that turn photographed drinks menus and expense receipts into CRM records. A vision model reads the document, deterministic code checks and matches it, and nothing is written until a person has reviewed it.

  • 94.6% field accuracy on 347 public receipts
  • 8 days from plan to first accepted expense flow
  • Salesforce LWC
  • Apex
  • TypeScript
  • Azure Container Apps

Azure Data Factory · Azure SQL · Salesforce

Perfect Store: scoring store visits in Azure and syncing results to Salesforce

Every store visit gets a Perfect Store score: configurable checks, points per threshold, and a traffic light. I built the calculation as an Azure Data Factory and Azure SQL pipeline that reads from Salesforce and writes the results back reliably.

  • 9 Salesforce objects refreshed per run
  • 4 result types written back through one outbox queue
  • Azure Data Factory
  • Azure SQL
  • T-SQL
  • Change Tracking

Salesforce · Power BI · Microsoft Entra ID

Power BI inside Salesforce: no second login, row-level security that holds

Sales users wanted their Power BI reports directly on Salesforce records, filtered to the customer they're looking at. I built an embedding where Apex brokers the Power BI token, so users never sign in twice and no secret reaches the browser.

  • 1 sign-in: no second Microsoft login
  • 0 secrets in the browser
  • Lightning Web Components
  • Apex
  • Power BI REST API
  • Power BI JavaScript SDK

Azure Functions · Data Factory · Salesforce

Sales targets: moving target tracking from Salesforce to Azure

Field reps have targets such as visits, distributed products, or custom KPIs. I moved the calculation of their actual values to Python Azure Functions and Azure SQL, orchestrated by Azure Data Factory, and wrote the results back to Salesforce.

  • 3 target types: count, sum, and admin-defined SQL
  • 2 Azure Functions running in parallel per run
  • Python
  • Azure Functions
  • Azure Data Factory
  • Azure SQL

Salesforce · Email deliverability

Signed order PDFs from Salesforce, and why some emails never arrived

When a field rep closes an in-store order, Salesforce now generates a branded PDF with both signatures and emails it to the right people. Getting it to actually arrive meant diagnosing SPF, DKIM, and DMARC.

  • ≈ 0% of emails DKIM-aligned with the sender domain at diagnosis
  • 3 PDF templates, chosen by order type
  • Apex
  • Salesforce Flow
  • Visualforce PDF
  • Custom Metadata

Realtime AI · SAP Sales Cloud · Team project

Debugging a realtime voice agent that degraded in long sessions

A German voice assistant for field sales got noticeably worse after 10–20 minutes of use. As part of the project team, I worked on tracing the problem through production logs to a browser speech-state bug and on making the agent's CRM writes verifiable.

  • 24% → 55% cancelled responses before the investigation
  • 3 / 3 speech hints after the fix (before: 1, 1, 2)
  • OpenAI Realtime API
  • LiveKit
  • TypeScript
  • Node.js

More work

Further client and internal projects, in short.

AI infrastructure

Benchmarking a local AI workstation

Set up a desktop AI system with vLLM behind an OpenAI-compatible gateway and measured throughput, tool calling, and fine-tuning, reaching 255 tokens/s at 100 parallel requests. A QLoRA fine-tune lowered accuracy, so I recommended the base model.

Optimization · ML

Prioritizing store visits with data

Backtested a risk model that decides which store visits get extra preparation time. With the same 20% capacity, it reached about 597 more at-risk visits than random selection (precision 88.5% vs. a 49.4% base rate, ROC-AUC 0.813).

Data platform

Promotion calendar automation

Replaced a manually maintained Excel promotion calendar with a pipeline from the Fabric lakehouse through Power Automate to a VBA generator. It builds the calendar workbook automatically every weekday at 3:30.

Salesforce · Data

Demo org factory for Consumer Goods Cloud

Rebuilt a demo org from a read-only QA org: curated metadata, dependency-aware seed data, and 39,108 products pseudonymized and bulk-loaded. Guardrails refuse any write to the QA org.

Salesforce

One-click contract PDFs

Sales reps generate contract PDFs from a record in one click. A single orchestrator picks the template by contract type, so a new type needs one template and one mapping entry, with no change to the Flow.

Salesforce

Transaction-safe customer deletion

A Screen Flow that deletes prospects already sent to SAP together with their contacts, visits, listings, and cases, or transfers them to another customer. Every write has a fault path, and any conflict rolls back everything.

Salesforce

Head-office contacts mirrored to outlets

Contacts linked to a retailer's head office appear automatically on all of its outlets. Bulk-safe Apex triggers keep the mirror in sync on insert, update, and delete.

Salesforce

Holidays as calendar blockers

A metadata-driven Apex batch creates holiday entries per field rep, sales org, and year, so they show up in the mobile app. It includes a correction for managed-package automation that reassigned the owners.

AI tooling

AI documentation with a verifier

A command-line tool where one AI agent writes project documentation from a Git snapshot and a second agent checks every claim against evidence before anything is published.