The problem
Migrating project data between Azure DevOps and Jira is slow, manual, and error-prone. Enterprise teams lose ticket history, break parent-child relationships, and spend weeks on one-off scripts that nobody wants to maintain. Consultants charge six figures; internal teams stall.
Migrayt exists to make this self-serve: connect your source, map your fields, preview a dry run, then execute a checkpointed bulk write — with a clear audit trail of what ran and when.
Architecture
The platform is split into three isolated stages: intake & catalog (secure connect, full project scan, pricing from real volume), mapping intelligence (types, fields, sprints, components — AI drafts mappings, humans approve), and execution & delivery (dry-run preview, checkout, checkpointed bulk writes). Each stage is separate so customers always know what ran and when.
Infrastructure runs on AWS — ECS for compute, RDS for state, SQS for job queues, VPC for tenant isolation — all provisioned with Terraform. Stripe handles usage-based billing. Azure DevOps CI/CD pipelines deploy the application layer.
AI with Zero Data Retention
Field mapping is where AI earns its place. Source and destination schemas rarely align one-to-one; an LLM can propose sensible mappings from context, but enterprise buyers require strict data handling. Migrayt's AI sanitisation layer processes data under a Zero Data Retention policy — no customer ticket content is stored after the mapping step completes.
That constraint shaped the architecture: ephemeral processing, explicit consent gates, and audit logs that record *what* was mapped without persisting *what* was in the tickets.
What I'd do differently
Ship the dry-run preview earlier. Customers needed to *see* the migration output before paying; once we made that the centrepiece of the funnel, conversion improved. The technical work was always there — the product framing caught up later.
More writings
2026 · 12 min
Building a draggable card-canvas hero (with the code)
A breakdown of this site's hero — copy-paste code for the developer ID badge, the now-playing card, the live clock, and the floating-card primitive behind them all.
Mar 2026 · 6 min
Building an LLM prompt-injection firewall in 48 hours
How SentryML detects prompt-injection attacks in real time — with explainability, sub-millisecond latency, and an open-source SDK.