Reliability over cleverness
Boring, observable systems beat clever hacks. I design for clear failure modes and fast recovery.
I build scalable .NET platforms, cloud-native services, and crisp product experiences—with reliability you can measure.
Scroll to explore architecture, delivery, and impact
Stack
.NET + React
Cloud
Azure / AWS
Patterns
Microservices
Domains
FinTech / Health
Recent emphasis: performance, observability, and safe AI automation in regulated environments.
About
I build systems that think and scale—engineering resilient microservices, high-performance APIs, and AI-driven workflows across financial and healthcare domains. Passionate about turning complex problems into reliable, real-world impact.
0+
Years shipping production
0+
Products & platforms delivered
0+
Major systems optimized
Skills
Categorized proficiency with interactive cards and a compact competency radar for quick scanning.
Competency radar
Experience
Interactive vertical timeline with Raymond James as the current focus and Wipro as the foundation years.
Key achievements
Technologies
Impact
Replace rows in impactRows with numbers you can stand behind in interviews.
| Role / context | Metric | Before | After | How measured |
|---|---|---|---|---|
| Raymond James — Full Stack .NET | Manual processing time | High touch, spreadsheet-heavy | ~60% reduction in manual steps | Workflow timing samples + ticket volume before/after automation rollout. |
| Raymond James — APIs & data | Document processing | ~2 hours end-to-end | <10 minutes (OCR + parallel pipelines) | P95 job duration from processing queue telemetry. |
| Wipro — Healthcare microservices | Daily transaction throughput | Baseline cluster load | ~12k transactions/day sustained | Service metrics + DB throughput dashboards. |
| Wipro — Auth reliability | SSO success rate | 72% | 99% | Azure AD sign-in logs + app error rates. |
Certifications
Filter by focus area, scan shared skills across credentials, and expand any card for credential IDs and verification links.
Skills across credentials
Atlassian
End-to-end agile project management with Atlassian tooling—backlogs, boards, and stakeholder-ready reporting.
Scrum.org
Scrum.org credential for product vision, backlog ordering, and maximizing value within empirical process control.
Microsoft
Builds, deploys, and secures cloud-native apps on Azure—aligned with how I ship production .NET services.
JPMorganChase
Virtual program applying agile workflows in a global financial services setting—bridging delivery and compliance.
Engineering philosophy
Principles that guide architecture, code review, and production operations—before frameworks and buzzwords.
Boring, observable systems beat clever hacks. I design for clear failure modes and fast recovery.
Trace, log, and profile with real traffic. Optimization without data is guesswork.
Retries, idempotency, and backpressure are defaults in distributed systems—not stretch goals.
Versioning, schemas, and documentation keep teams aligned as services multiply.
Data boundaries and audit trails are modeled early—not bolted on after launch.
System design
Bounded contexts, asynchronous boundaries, and data layers that stay understandable as load grows.
Services align to business capabilities; synchronous calls only where UX demands it—everything else goes async or cached.
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Billing │ │ Claims │ │ Identity │
│ service │ │ service │ │ service │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└──────────────┼──────────────┘
│
┌───────▼────────┐
│ API Gateway │
│ + rate limits │
└───────┬────────┘
│
┌───────▼────────┐
│ Clients / │
│ BFF layers │
└────────────────┘Azure Service Bus for ordered topics and AWS SQS for fan-out and Lambdas—dead-letter queues and retries are first-class.
Producer Bus / Queue Consumer
┌────────┐ ┌─────────────────┐ ┌────────┐
│Service │─────▶│ Azure Service │─────▶│Worker │
│ A │ │ Bus (topics) │ │group B │
└────────┘ └────────┬────────┘ └────────┘
│
┌────────┐ ┌────────▼────────┐ ┌────────┐
│Service │─────▶│ AWS SQS (+ DLQ) │─────▶│Lambda /│
│ C │ │ cross-cloud fan │ │service │
└────────┘ └─────────────────┘ └────────┘REST + versioning
Resource-oriented URLs, explicit v1/v2, deprecation headers, and OpenAPI as the contract source of truth.
Idempotent writes
Idempotency-Key on mutating operations; safe retries from mobile and async workers.
Pagination & filtering
Cursor-based lists for large datasets; bounded page sizes and stable sort keys.
Problem+json errors
Consistent error shape with trace IDs for support and observability correlation.
AI & innovation
From retrieval pipelines to OCR normalization, I focus on evaluable systems: tracing, guardrails, and cost-aware inference in real workflows.
Designing production-grade AI workflows with prompt engineering, guardrails, and cost-aware model usage.
Building retrieval systems with embeddings, vector search, and domain-tuned ranking strategies.
Automating document workflows using OCR, preprocessing, and intelligent extraction pipelines.
Learning & voice
Replace placeholders in data.ts with your real books, links, talks, and OSS highlights.
Designing Data-Intensive Applications
Martin Kleppmann
Reference for distributed systems trade-offs and data modeling.
Building Microservices (2e)
Sam Newman
Boundaries, deployment, and evolution of service architectures.
Microsoft Learn — Azure architecture
Microsoft
Well-architected patterns I revisit before major design reviews.
Architecture Notes
Various
Short, visual breakdowns of real-world system designs.
2026-04
Deepening RAG evaluation: citation accuracy checks and cost caps per tenant.
2026-03
Sharpening AKS + GitOps patterns for zero-downtime API rollouts.
2026-02
Experimenting with structured logging conventions across .NET + frontends.
Internal tech talk — Idempotent message consumers
Team brownbag · 2025 · talk
README templates for microservices
Engineering wiki · 2024 · writing
Engineering lab
Health check curl for ops-minded visitors; code sample is illustrative—tune the snippet in showcaseSnippet.
GET /api/health — JSON with ok, short git SHA on Vercel, and timestamp.
curl -sS "https://YOUR_DOMAIN/api/health"
After load, the curl uses your current origin automatically.
1// Process message at-least-once without duplicate side effects2public async Task HandleAsync(ClaimSubmitted msg, CancellationToken ct)3{4 var key = $"claim:{msg.IdempotencyKey}";5 if (!await _store.TryAcquireOnceAsync(key, TimeSpan.FromHours(24), ct))6 return; // already processed78 await _db.ExecuteInTransactionAsync(async () =>9 {10 await _claims.UpsertAsync(msg, ct);11 await _bus.PublishAsync(new ClaimIndexed(msg.ClaimId), ct);12 }, ct);13}
For recruiters
Edit answers in recruiterFaq in data.ts.
Contact
Use the form — it sends via the server when configured, or opens your email app with everything filled in so you can send in one tap.