← Portfolio

Salud Walmart — Digital Membership Platform

Healthcare memberships sold over the counter at Walmart and Bodega Aurrera, brought online: folio validation for memberships bought in store, clinic search over Google Places and our own directory, and a member account where beneficiaries, appointments and privacy settings live in one place.

Role  Frontend Developer @ InnovattiaYear  2022
Salud Walmart — Digital Membership Platform

Walmart de México and Bodega Aurrera sell healthcare memberships over the counter: a low monthly fee that buys consultations, dental work, laboratory tests, nutrition and psychological support. At Innovattia I built the frontend of the platform where those memberships are discovered, activated, validated and managed.

Salud Walmart homepage anchoring the membership at forty-five pesos a month, above a three-column band showing the benefits earned by renewing: a dental cleaning at the third month, a full check-up at the sixth, a free membership at the twelfth
The homepage: one price up front, and the renewal ladder that rewards staying subscribed.

The problem

A membership bought at a checkout is not yet a membership anyone can use. It arrives as a folio printed on a receipt, or attached to a BAIT recharge, and from there the holder has three questions, all of them practical: is this still active, where is the nearest clinic that will honour it, and how do I manage my data and the people I have added to it.

Each question has a different source of truth, which is what made this more than a brochure with a login. Activity lives in the membership backend, keyed on a folio the customer often cannot find. Clinics are a directory we own, but people search for them with whatever they happen to remember: a colonia, a postal code, half an address. And beneficiaries are a complete identity record per person, collected from someone sitting alone with a phone rather than across a desk from an agent who can prompt them.

So the information architecture follows the questions rather than the org chart. Three surfaces, in the order a member actually arrives at them.

Validating a membership

The first surface answers the folio question and nothing else. One field, a hint for members who do not know where to look for their number, and a direct path into purchase for anyone who arrives without a membership at all. Someone standing in a queue with a receipt in their hand should not have to create an account to find out whether the thing they already paid for works.

Membership validation screen with a single folio number field, a help link explaining where to find the folio, and a secondary path to purchase a membership
Validating a membership: one folio field, a hint for where to find it, and an exit into purchase for non-members.

Clinic discovery

Search accepts an address, a neighbourhood, a postal code or a city. Google Places absorbs the ambiguity of how people actually type a location, resolving free text into coordinates through its autocomplete predictions; those coordinates go to our own backend, which owns the clinic directory and returns what is in range; the results land on a Google Map beside the list.

The interesting part was never the map. It was the seam between two providers of truth: Places knows about places in general, and only our backend knows which of them are Walmart or Bodega Aurrera clinics with real coverage. Keeping the search forgiving while the answer stayed authoritative was the work.

Member account and self-service

For existing members the account area gathers self-service behind a persistent sidebar: beneficiaries, appointments, privacy and password settings, alongside the member's own personal and membership data.

Getting in is a four-step wizard, anchored on the folio throughout: create the account, verify it, complete the additional data, finish. Around it sit the screens that carry the rest of the lifecycle, login, account recovery, password reset and membership activation, each of which has to work for someone who may only visit once a year.

Step one of the account creation wizard, showing the four-step progress indicator above the membership holder's personal details and access credentials
Step one of four: the wizard keeps the membership folio in view while collecting holder details and credentials.

Beneficiary management is the most form-heavy surface in the product, and the clearest case for Reactive Forms in the whole build. Each beneficiary is a full record: personal data, CURP, relationship to the holder, an address resolved from the postal code, and an emergency contact that either inherits the holder's or is registered separately. That last choice branches the form underneath it, so sections appear and begin validating on the strength of an answer given three fields earlier.

Beneficiary registration form inside the account area, with the Mi Cuenta sidebar listing beneficiaries, appointments and privacy settings
The account area: adding a beneficiary, with the emergency contact section branching on the member's choice.

Technical notes

Reactive Forms carry the domain. Angular Material supplies the primitives and RxJS drives the API-backed UI states, but the structure that mattered is the form model: conditional sections, cross-field validation, and a shape that mirrors what the backend expects rather than what the layout happens to look like. Where a form branches, it branches in the model first and in the template second.

Payments came in as a module, not as code. Purchase-related functionality was integrated through a local Angular payment library, kept as a reusable module rather than absorbed into the app. Environment-specific configuration separated development and production endpoints, so the same build behaved correctly on either side.

The Salud Walmart site at an iPhone viewport, with the navigation collapsed into a menu and the renewal benefits stacked into a single column: a dental cleaning at the third month, a full check-up at the sixth, a free membership at the twelfth
The same renewal ladder at a phone viewport: what reads as three columns on desktop collapses into one legible stack.

Outcome

The platform pulled scattered touchpoints into one place: discovering a plan, activating a membership bought at a till, finding care nearby, checking that coverage is still live, and keeping a household's records current over time. Unglamorous work, and the kind that decides whether somebody uses the healthcare they have already paid for.