Recurring events system
Zero reported failures after rebuild, previously the top source of user complaints and iOS team blockers.
A non-technical founder built the initial backend of a smart home maintenance assistant using AI coding tools. The result shipped fast, but arrived with critical structural issues. Azati engineers stepped in to stabilize, refactor, and evolve the system into a maintainable, scalable product now actively used and continuously developed.
scheduling failures post-rebuild
redevelopment time saved vs. full rewrite
average time to diagnose production issues
The founder used AI coding tools to move fast and validate the idea. But when the iOS team tried to build on top of the backend, the cracks appeared: business logic scattered across handlers, a recurring events system that broke on edge cases, and no error handling to speak of. The codebase had served its purpose as a prototype but could not carry a real product. Azati was brought in to stabilize it and take full engineering ownership going forward.
The initial backend was written with heavy AI assistance and lacked consistent structure. Controllers mixed business logic with data access, modules had no clear separation of concerns, and the codebase had grown organically without a guiding architecture, making every new feature a risk.
The scheduling system, core to the product, had been partially generated by AI and partially patched manually. It failed silently on custom recurrence patterns, timezone edge cases, and override scenarios, causing incorrect reminders and lost user tasks.
Lambda functions failed without logging. DynamoDB errors surfaced as blank screens on mobile. There was no structured logging, no alerting, and no way to diagnose production issues without reproducing them locally, a critical gap for a live consumer product.
Before touching a line of code, we spent the first week mapping every module: identifying AI-generated patterns that posed stability or security risks, documenting what worked, and building a prioritized remediation plan aligned with the iOS team's roadmap.
We refactored incrementally, module by module, without stopping feature delivery. Each area was stabilized, given clear interfaces, and covered with tests before the next was touched. The iOS team never experienced a blocked sprint.
We designed and implemented a flexible recurring events engine from scratch, supporting custom schedules, timezone-aware processing, per-instance overrides, and filter-based querying. This became the most reliable part of the system.
We implemented a smart scheduling algorithm that factors in season, local climate, pet ownership, household size, and usage patterns to generate balanced, personalized maintenance plans, distributing workload across the year without overwhelming users.
Centralized error handling was added across all Lambda functions. Structured logging, request tracing, and alerting were introduced so the team could diagnose and resolve production issues in minutes instead of hours.
Bring your complexity. We'll bring the plan. Select a convenient slot to start a conversation with our experts.
Schedule a callA purpose-built scheduling system that supports complex recurrence rules, per-event overrides, custom filters, and timezone-safe execution, replacing the fragile AI-generated logic that powered the original implementation.
A personalization engine that builds maintenance schedules based on environmental and lifestyle signals: season, climate zone, pets, number of residents, and historical usage, distributing tasks evenly across the calendar.
A refactored, fully owned NestJS backend running on AWS Lambda with proper module boundaries, typed interfaces, centralized error handling, and structured logging, built to be maintained and extended by any competent engineering team.
Azati continues as the backend engineering team, planning features, advising on architecture, and supporting system stability as the product scales. Full ownership, not a handoff.
Zero reported failures after rebuild, previously the top source of user complaints and iOS team blockers.
Production issues now detected and diagnosed in under 15 minutes, compared to hours of manual reproduction before.
iOS team unblocked, backend changes that previously took days to safely coordinate now ship in hours.
Existing business logic preserved and stabilized, saving an estimated 3-4 months of redevelopment time.
Azati owns the backend end-to-end, from architecture decisions to production incidents, with no dependency on the original AI-generated context.
Last updated