Adjay Mistry-Katz

Enterprise AI Solutions Consultant · ServiceNow Certified Technical Architect

I advise enterprise customers on AI adoption by day. The rest of the time I design, build, and run production AI systems end to end: two multi-platform consumer products and the eval platform that measures them — shipped solo, in daily use by real users. 

[email protected] · London

Consumer web + native iOS · AI with guardrails

Lyra — a language platform that teaches

A language-learning platform that actually teaches — grammar, conjugation, and vocabulary in pedagogical order with real spaced repetition — rather than testing random words. Four       languages are live (French, Spanish, Italian, Portuguese) on a React web app and a native SwiftUI iOS companion sharing one API. The course is drawn as a galaxy: CEFR level = galaxy, unit = star, lesson = planet.

  • 6 languages live
  • 90+ units · ~3,000 vocab items
  • FSRS-4.5 scheduler
  • 20 exercise formats
  • Azure + Whisper speech
  • Web + native iOS
Lyra's web course view: the whole French course drawn as three visible galaxies of stars against a starfield, labelled French A1 with 30 of 30 lessons done, French A2 with 4 of 38, and French B1 with 0 of 30, plus a 'fading' marker for items due for review
A whole language, one screen. CEFR level is a galaxy, a unit is a star, a lesson is a planet in orbit around it. Zoom is the navigation model — tap a galaxy to fall into its stars, tap a star to land on its planets — so a learner's position in 128 lessons is a place rather than a progress bar. The comet bottom-left is the review queue.

The map is the data model

Nothing about the galaxy is decorative: star positions, orbital radii and planet ordering are derived deterministically from the course structure itself — unit index, lesson count, prerequisite chain — so the same course always draws the same sky, and adding a unit moves nothing that already exists. The layout functions are the most heavily mirrored code in the platform: the Swift implementation is a named twin of the web one and is pinned by exact-value tests, because a learner who switches devices has to recognise the same constellation.

Lyra's iOS course map zoomed to the French A2 galaxy: a vertical chain of star systems labelled with unit names — Le conditionnel présent, Les phrases avec si, Le plus-que-parfait, Les pronoms relatifs — each with lesson planets in orbit and a lesson count, next to a comet marked 'four fading, tap to review'
Inside a galaxy. Each star is a unit, sized and lit by how much of it is learned, chained in pedagogical order — you can see the course's dependency structure without a syllabus. Planets carry their lesson number, and the comet is the spaced repetition queue asking for attention.
Lyra's iOS unit view for 'L'imparfait I', with a plain-English description of what the unit teaches, a zero percent progress ring, and four numbered lesson planets orbiting a sun, each labelled with its topic — the nous-stem rule, être à l'imparfait, la météo, la campagne d'autrefois
Inside a star. The unit states what it will teach you in plain English, then its lessons orbit as planets in the order you should take them — grammar rule, the irregular verb, then the two topics that use them. Twelve items from earlier units are fading and can be reviewed from here.

A lesson teaches before it tests

Each lesson runs as a fixed sequence of phases — grammar explanation, conjugation tables, vocabulary, then drills — rather than a shuffled quiz. That ordering is the pedagogical claim of the product: presentation is a first-class schedulable item, so a conjugation table you already know can be marked as such and demoted in the queue, and the twenty exercise formats only ever draw on vocabulary the course has already introduced.

A Lyra lesson in its conjugation phase: a header for 'Être à l'imparfait' in unit L'imparfait I, a three-step phase bar reading Grammar, Conjugation, Vocabulary, and the full imparfait conjugation of être with a control to mark the table as already solid
The conjugation phase. The phase bar is the lesson's contract — grammar, then conjugation, then vocabulary, then drills. The controls beside the table let the learner mark it already solid, hard, or unclear; that feeds the scheduler rather than just skipping the screen.
A 'tap the mistake' exercise: the French sentence 'Sophia avait très timide, mais maintenant elle est bavarde' with its English translation, the word 'avait' selected and marked correct, and feedback buttons reading 'too easy', a tick, a question mark, and 'bad exercise'
One of twenty exercise formats, graded deterministically on-device for instant feedback and re-graded server-side as the authority. The four buttons after the answer are the interesting part: too easy and hard feed the spaced-repetition rating, and bad exercise files a content flag that lands in a triage queue against the source unit.

Scheduling is the product

FSRS-4.5 spaced repetition runs server-side only: clients submit graded results, never schedules. Ratings come from grading, not self-report — wrong, almost, correct, and too-easy map to scheduler ratings — and grammar and conjugation concepts are first-class schedulable items alongside vocabulary. Deterministic grading runs client-side for instant feedback and is mirrored server-side as the authority; AI grading is a capped fallback for open answers only, never for choice formats.

Lyra's progress screen: a five-day streak, four items due now, twenty-four answers today, an offer to take an adaptive placement test, and a course mastery list where each unit shows a bar and counts of items learned, learning, marked known and confirmed at production level
Mastery is reported per item state, not per lesson. Each unit breaks down into learned, learning, marked-known and — separately — confirmed at production level, because recognising a word and being able to produce it are different pieces of knowledge with different schedules.
Lyra's practice tab, 'Beyond the planets': timed drills called Conjugation sprint and Gender sprint presented as meteor showers, and a 'Holiday crash course' asteroid belt of standalone topics like greetings and ordering food, each with an item count
Content that doesn't fit the course gets its own space. Timed drills are meteor showers; standalone survival topics are asteroid belts you can drop into with no course progress at all. Both draw from the same item pool and the same scheduler, so practice outside the syllabus still moves the review queue.

Content is a build pipeline

Courses are authored as unit JSON through a validated pipeline: generated authoring briefs, machine-checked invariants (vocabulary introduced before it's used, cross-unit dedupe, per-format payload schemas), and idempotent publishing that regenerates only changed rows by content hash — a full-language publish fell from twenty minutes to under thirty seconds on shared hosting. AI-generated exercises fill demand into a shared, hash-deduped cache, validated before serving and constrained to vocabulary already taught; in-app flag reports feed a triage loop back into the source content.

AI with guardrails

Prompts are composed server-side and every provider call passes one instrumented choke point logging tokens, cost, latency, and errors. The floating tutor receives the learner's screen context as a server-resolved sentence — never client free text — closing an obvious injection surface. Speech uses two providers with defined degrade paths: Azure pronunciation assessment scores read-aloud drills, Whisper transcribes free speech for debriefs; audio is consent-gated, usage-capped, and discarded after scoring.

Two clients, one contract

The iOS app is a genuine second client, not a wrapper: ported components carry named Swift twins, and every API-contract change on the web side requires a parity-log entry before it lands. The mirror rule from the fitness platform, formalised into process.