Armakuni Contact us
← All case studies

In Mexico, nobody was tracking its prices.
Now 160 retailers are checked up to six times a day.

A global appliance company had no pricing coverage in Mexico, and its U.S. and Canadian tooling couldn't say who held the buy box or whether a listing was even the right product. We built a production service that reads retailer pages, identifies the price, the seller and the SKU match, has an analyst confirm the match, and delivers it into the company's Snowflake reporting. Alongside it, proofs of concept for its device telemetry and consumer research.

Before

A price tells you less than you think.

Hundreds of retailers, all built differently.

After
160retailers' prices tracked, in production
~1,150products matched, in 3 countries
6×a day refreshed for large retailers

A price tells you less than you think

A commercial team needs more than the listed price: who is selling the product, whether it's in stock, which seller holds the buy box, and whether the listing actually matches the SKU being tracked. Without those, a price comparison can be confidently wrong.

The company had no pricing coverage for Mexico at all as it entered the market. In the United States and Canada, its existing tool didn't supply seller classification, buy-box information or the screenshot evidence the team needed to enforce its pricing.

Hundreds of retailers, all built differently

Every retailer's pages are built differently, and they change without warning. Hand-built scrapers break, and a person checking prices by hand can cover a few products at a few stores. The team needed something that could read any retailer's page, return a consistent record, and let a person confirm the matches that matter, at the scale of a continent.

Start small, then build the machine

We began with three to five Mexican retailers and 20–50 priority SKUs, to prove the extraction worked on real pages. Then we built the service, on AWS, to cover North America, with a repeatable path for adding retailers.

How we built it

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

  1. Read the page with a model, write it in the company's schema
  2. A person confirms the match before it counts
  3. New retailers are tested before they're trusted
  4. Telemetry the product teams can ask questions of
  5. An early warning before the customer complains
  6. Synthetic personas, for deciding what to ask real people
  7. Recipes that fit the appliance on the counter

Read the page with a model, write it in the company's schema

Built withLambdaECSFargateBedrockS3
Retailer pageAnother layoutA third layout One schema price, seller, availability, buy box
The engineering

Retailer formats vary, but the output has to match the company's existing pricing schema exactly, or nothing downstream works:

  • Scheduled jobs trigger Lambda orchestration and containerized processing on ECS/Fargate, deployed across U.S. East, Canada Central and Mexico coverage regions in private subnets.
  • Amazon Bedrock extracts the product URL, listed price, availability, ratings, buy-box winner and first- or third-party seller classification.
  • The pipeline captures screenshots as evidence and normalizes the output to the existing pricing schema.
  • EFS holds temporary processing files, and the architecture connects processing to S3 outputs, a metadata store and the analyst application.

Why: a model that reads pages copes with layouts changing, and a schema that never changes is what keeps the reports working.

A person confirms the match before it counts

Built withSnowflake
The model proposes a matchAn analyst confirms itOnly then it counts
The engineering

The costly mistake in pricing intelligence is comparing the wrong product. So a human review workflow lets the team correct and approve AI-suggested SKU matches before they're used. Consolidated records then flow into Snowflake, keeping schema compatibility while adding seller-location and marketplace information the old tool never had.

New retailers are tested before they're trusted

Tested before they're trusted25 Mexican retailers, 200 SKUs100 U.S. retailers, 600 SKUs35 Canadian retailers, 350 SKUs
The engineering

Coverage grows when the business can add retailers without engineers. A configuration interface lets team members add a retailer and test extraction with a dry run before it joins the scheduled service, with the required scraping parameters identified automatically.

The service grew to 25 Mexican retailers with 200 SKUs, 100 U.S. retailers with 600 SKUs and 35 Canadian retailers with 350 SKUs. Large retailers are refreshed six times a day and smaller ones three times.

Telemetry the product teams can ask questions of

Built withS3GlueAthenaQuickSight
A question about the devices Amazon Q on curated data a chart back
The engineering

Pricing was one part of a wider program. The company's device estate generates about 70,000 telemetry records a minute, but product teams couldn't investigate mission success, coverage and performance without writing SQL. An IoT insights proof of concept connected data preparation to questions and reports:

  • Raw S3 data passes through Glue ETL into curated datasets, with the Glue Data Catalog and Athena for analytical queries.
  • Amazon Q Business uses the S3 knowledge source, with a device-specific vocabulary and role-based access for each product team.
  • QuickSight dashboards with Q show mission success, coverage and performance trends, through charts and natural-language questions.
  • Python, Pandas and Plotly produce daily and weekly summaries, with PDF and Excel exports for wider distribution.

An early warning before the customer complains

Built withSageMakerIoT CoreS3QuickSightSNSCloudWatch
proof of conceptDevice telemetryFailure patternsModel drift Team
The engineering

Devices running outside normal parameters went unnoticed until a customer complained. A separate anomaly-detection proof of concept tested how the same device data could flag failure patterns earlier:

  • SageMaker runs time-series models and failure-pattern clustering. Its Model Registry records versions, and endpoints serve inference.
  • The architecture traces device data through IoT Core and S3 to the inference engine.
  • Classified results feed QuickSight, and SNS routes notifications by issue type and severity.
  • Endpoint monitoring and baseline jobs send operational metrics to CloudWatch, including model drift, so alert quality doesn't fall as the fleet grows.
  • Maintenance predictions from usage patterns were explored too.

These are proof-of-concept (POC) capabilities, and the operational impact across the fleet is still to be measured.

Synthetic personas, for deciding what to ask real people

Built withBedrockReact
Personas from the company's researchEach answers the questionnaireGrouped in six dimensionsAnalysts choose what to ask people
The engineering

The consumer insights team commissioned every study from outside agencies, which limited how often it could test an idea. The synthetic-persona platform uses the company's existing consumer research and survey data to derive demographic distributions, ownership patterns and behavior, with study-screening criteria mapped to the generated personas:

  • Each persona and the complete questionnaire go to the Bedrock inference layer together, so the full study context is available while it answers, and each persona answers consistently across the survey.
  • Parallel execution supports larger simulations.
  • Aggregated responses are organized into six research dimensions: role in category, white space, psychological drivers, friction and unmet needs, premium preferences, and demographic sensitivity.
  • A React interface lets analysts adjust screener mappings, search earlier studies and validate outputs, in English, French and German.

The output is exploratory hypotheses from synthetic personas, used to decide what to study with real consumers, in days rather than weeks. It doesn't replace the real studies. Synthetic research is useful as a fast first pass, and only when it's labeled as one.

Recipes that fit the appliance on the counter

Built withTranscribeBedrockOpenSearchStreamlitFastAPIEC2
A video or URL comes inTranscribe takes the spoken recipeBedrock structures itFitted to the appliance's manual
The engineering

Customers find recipes in social video and then have to adapt them to their own appliances. The recipe proof of value tackled that:

  • Transcribe extracts the spoken content from a video, and Bedrock structures the recipe and adapts it to the selected appliance and dietary preferences, including gluten-free, dairy-free, vegan, keto and paleo.
  • Appliance manuals supply what each appliance can do, and OpenSearch holds searchable recipe, ingredient and appliance representations.
  • A Streamlit interface accepts a video or URL, the appliance and the preferences, and a chat interface handles further changes, with FastAPI on EC2 for iterative testing.
  • The prototype includes ingredient substitutions, allergen detection and nutritional information.

One price check, end to end

  1. The scheduler fires for a large retailer, one of its six runs today.
  2. Lambda hands the retailer's pages to containers on Fargate in the right region.
  3. Bedrock reads each page: price, availability, rating, buy-box winner and whether the seller is first- or third-party. A screenshot is saved as evidence.
  4. The record is normalized to the company's pricing schema.
  5. An analyst confirms any new SKU match in the review workflow.
  6. The record lands in Snowflake, with seller location and marketplace data, ready for the morning's pricing report.

What we'd tell another CTO

1Prove extraction on five retailers before building for 160, and put the human check on the SKU match rather than on the price, because comparing the wrong product is the expensive mistake.
2Test every new source before it joins the schedule. The dry run in the onboarding interface catches the retailer whose pages will break the extraction, before it pollutes the morning report.

What else changed

  • Analyst-approved SKU matching, and delivery into the existing Snowflake reporting.
  • Self-service retailer onboarding, with a dry run before a retailer goes live.
  • Telemetry product teams can question in plain language, and an anomaly-detection proof of concept with alerts routed by type and severity.
  • Synthetic exploratory studies the insights team can run itself, in English, French and German.
  • A recipe prototype that adapts social video recipes to the company's appliances and to dietary needs.

What comes next

The pricing platform's path to production scale through the third and fourth quarters of 2026, including self-service onboarding and monitoring dashboards. Then production deployment of the telemetry analytics and anomaly detection, and the persona platform extended to more research areas.

How we'd do it today

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

Six refreshes a day across 160 retailers is a lot of model calls, most of them routine, which makes this AI Inference Engineering work: a model the company owns on Amazon SageMaker AI for the routine pages, at about a tenth of the price, a frontier model through Amazon Bedrock for the hard ones, and a router sending each page to the smallest model that passes. Every SKU match an analyst has approved would become a test case, so a prompt or model change has to reproduce the matches people already confirmed before it touches the live service. Agent ControlPlane, part of AK Run, would make Amazon Bedrock AgentCore Gateway the only way to a model and record each call with the model used, what triggered it and what it cost.

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