Armakuni Contact us
← All case studies

A curator spent up to an hour on each chemical.
A regulator's deadline was coming for the rest.

A U.S. laboratory-safety software provider had finished moving to AWS but hadn't started modernizing on it. Each chemical profile took 5 to 60 minutes of manual work, and 27 accessibility defects sat across two codebases ahead of a deadline that wouldn't move. We proved out a container platform for onboarding, scoped the AI that turns profiles into a review step for a curator, and put an embedded pod on the defects, starting with the worst.

Before

The chemical catalog could only grow as fast as one curator could type.

On AWS, but still run the way it was in the data center.

After
8 weeksto a proven container platform for onboarding customers
27accessibility defects being fixed worst first, 22 of them high or critical

The chemical catalog could only grow as fast as one curator could type

The company's software helps research institutions manage laboratory safety and compliance. Its chemical catalog depends on careful work. A curator finds a Safety Data Sheet online, reads it, and types the hazard codes, regulatory details and fire classifications into the product, one profile at a time. Each one took 5 to 60 minutes, so the catalog could only grow as fast as the curators could work.

On AWS, but still run the way it was in the data center

The company had already moved from Rackspace to AWS. But the platform still ran on overprovisioned virtual machines with hand-configured releases, and every new customer landed on manually managed databases with no automated backup, scaling or failover. Each customer added more operational work for the same engineers.

A compliance deadline was fixed too and could not move

Then there was accessibility: 27 documented defects, 22 of them high or critical under WCAG 2.1, spread across a legacy Drupal/PHP product and a newer Vue.js application. They covered navigation, sidebars, tables, modals, accordions, forms, empty headers and the PDF and SCORM training modules, and a regulatory deadline was approaching. The internal team couldn't take them on for six to eight weeks without stopping the product roadmap.

How we built it

5 decisions, in the order we made them. Each one says what we did and why, with what it did drawn beside it.

  1. Prove the onboarding pattern before migrating to it
  2. The AI drafts the profile, and the curator decides
  3. Fix the feature customers were complaining about, today
  4. The team fixed accessibility in the shared component, so every page using it was fixed at once
  5. The team only closes a defect once the customer's own scanner confirms the fix

Prove the onboarding pattern before migrating to it

Built withEKSAuroraMySQLKubernetes
Run on EKSEvaluate Aurora MySQLPipelines adaptedThe pattern defined
The engineering

The tempting move was to migrate everything to containers at once. Instead we ran an eight-week containerization proof of concept to test an alternative to individually managed virtual machines, using real workloads:

  • We ran the application workloads on Amazon EKS and used that run to set the container-based deployment pattern the team reuses when it onboards each new customer.
  • We evaluated Amazon Aurora MySQL because its automated backup, scaling and failover mean engineers don't have to manage the database by hand themselves.
  • We adapted the infrastructure-as-code pipelines for Kubernetes operations, so the team has a version-controlled record it can use to reproduce environments.
  • A one-off build for each customer costs more to support over time. The team defined the scale profile instead, so every new customer lands on the same pattern.

The proof of concept validated the target architecture before the production migration began. Proving the pattern once, on a single customer, was far cheaper than finding problems after it had rolled out to every customer.

The AI drafts the profile, and the curator decides

Built withBedrockS3IAM
designedThe AI drafts the profileThe curator corrects and signs
The engineering

Letting a model write the chemical profiles outright would have been simpler to build, but a safety product cannot work that way. The model was scoped to read and extract; the curator's judgment stayed in the review step. The three-to-four-week AI assessment followed the real profile workflow: source document, extracted safety information, profile fields, curator review.

  • Workshops established the users, required response times and success criteria for the tool.
  • The data-readiness work looked at Safety Data Sheet formats, storage schemas, accessibility and ingestion rates, so the team knows which inputs are ready for the pipeline and which need work first.
  • We evaluated foundation models for Safety Data Sheet processing and external research, feeding task benchmarks and cost estimates into the implementation plan.
  • The design uses Amazon Bedrock as the model layer, Amazon S3 for source documents and integration with the existing profile application, with encryption, IAM access and audit requirements set during the assessment.
  • The workflow we designed extracts GHS codes, regulatory information and fire classifications for a curator to review, which cuts out the retyping but keeps the final call with the expert.

The assessment delivered a model evaluation, an architecture, a quantified business case and a scoped implementation plan. The next step is building chemical-profile generation on Bedrock.

Fix the feature customers were complaining about, today

The complaintMitigated in hours or days
The engineering

A production feature was generating recurring Jira bugs and Zendesk tickets, but long-term fixes don't help the customer raising a ticket today. We ran a two-week feature audit that pulled the bugs and reports into one triaged backlog and connected them to logs, telemetry and user workflows. A bug report only describes a symptom, so we read the error traces, the SLO and SLI signals and the user journeys to build a time-windowed example of every recurring failure, which gave engineering the exact conditions it needed to reproduce each one. The audit also reviewed test coverage and release gates.

The team delivered quick-win mitigations within hours or days, such as configuration changes, guardrails, feature-flag rollbacks and throttles, while the longer fixes were scoped. Each remediation item carried an owner, an effort estimate, its place in the sequence and rollback criteria.

The team fixed accessibility in the shared component, so every page using it was fixed at once

Built withVue.js
One component PagePagePage every page using it, fixed at once
The engineering

Patching one page at a time would have fixed the symptom 27 times. We put three full-time full-stack engineers and a part-time QA engineer inside the customer's sprint process, with one shared defect backlog across both codebases. Full-stack engineers who can work in Drupal, PHP and Vue.js meant both products could reach compliance on the same schedule, with no handoffs between specialist teams.

The remediation fixes tab order, focus behavior, ARIA attributes and screen-reader announcements in shared components, so one fix covers every page that uses the component. The work runs in four tranches, ordered by severity:

  1. Critical navigation and sidebar fixes, in weeks one to three.
  2. High-priority tables, accordions and modals, over the next two weeks.
  3. Medium and low-priority forms and headers, in one to two weeks.
  4. The PDF and SCORM training modules, in a week.

Because the deadline was fixed, the team closed the highest-risk defects first, so the worst exposure was gone whatever else happened.

The team only closes a defect once the customer's own scanner confirms the fix

Built withVue.js
The fixThe customer's own scannerThen it's closed
The engineering

The audit evidence comes from the customer's own tools, so that's where each fix has to prove itself. Legacy Drupal and PHP changes get manual validation, and Vue.js changes can also run through automated test validation. Each ticket closes only after a rescan with the customer's own accessibility tools confirms the fix, and that rescan is also the evidence for the remediation.

The pod reports weekly, reviews each milestone and keeps a risk register reviewed every week, because deadline work fails when surprises arrive late. Deployment stays with the customer, on its own release cadence, so the pod's hours go on fixes.

What we'd tell another CTO

1In a safety product, AI agents read the document and the expert makes the decision. Extraction that feeds a curator's review is the version of chemical-profile automation the team can actually ship.
2The team fixed accessibility in the shared component and proved each fix in the scanner the auditor would use, so a ticket only closed once the customer's own rescan agreed.
3When a feature is generating tickets today, mitigate first with configuration, throttles and feature flags, and schedule the real fix after.

What else changed

  • A scoped, costed plan to turn chemical profiles from 5 to 60 minutes of typing into a curator's review, with models evaluated on the real documents and a quantified business case.
  • A triaged backlog for the feature that was generating tickets, with quick-win mitigations in hours or days and owners, estimates and rollback criteria for the rest.

What comes next

Building chemical-profile generation on Bedrock, the production migration onto the validated container pattern, and the accessibility work completing against the documented 27-defect backlog.

How we'd do it today

This project came before our current offers. Here's how we'd approach the same work now.

With AK Evolve, the legacy Drupal/PHP product would be scored part by part for complexity, coupling, testability and change risk, and characterization tests would pin today's behavior, so a fix in a shared component couldn't quietly break a page nobody tested. For the chemical-profile AI, AK AI Factory would let the AI agent draft a profile but never publish one, screen what it says with Bedrock Guardrails, and gate every change on a golden set of real Safety Data Sheets with the profiles the curators wrote.

Have a problem like this one?

A free workshop: a few hours with the architects who'd do the work, on your own systems. No cost.

Book a free workshop