Mary Imevbore
Vol. I · No. 01 · May 2026
Brooklyn, NY Est. 1996 Last updated May 2026
§ — Case Study · Engineering

Beauty Forward

A donation logistics platform for beauty product redistribution, built for Isan Elba. Two production apps — donation pickup orchestration and AI-assisted inventory management — plus an analytics dashboard in design.

TypeScript Angular Firebase Gemini Logistics
§ 01 — Problem

Problem

Beauty Forward routes donated, unused beauty products from individuals to shelters. The operational reality has three pieces: getting product physically out of donors' homes (courier logistics, payment verification, scheduling), getting it onto shelter shelves with accurate inventory records (intake, classification, batching), and giving shelters visibility into what's coming and what they have on hand (analytics).

Three apps. Two in production. One in design.

§ 02 — Architecture

Architecture

donation-delivery-app is the donor-facing pickup scheduler. Angular 21 frontend, Firebase Cloud Functions backend, Firestore for state. Integrates Roadie for last-mile courier dispatch, Givebutter for donation processing and payment verification, HubSpot for CRM upserts, and Resend for transactional email.

inventory-management-system is used by the warehouse manager to catalog and track donated products. Same Angular + Firebase shape, plus Firebase Data Connect for relational queries and Gemini 2.5 Flash for photo-to-inventory extraction at intake.

The analytics dashboard is the third app, currently in design. See "What's next" for the planned shape.

§ 03 — Technical Decisions

Technical decisions

§ 04 — What's Next

What's next

  1. App 3 — analytics dashboard. Currently in design, built on the data the two production apps already capture. The plan is to turn that data into insight for brands: which of their products get donated most, how much product gets diverted from landfill and where it ends up; and what's actually in demand.

  2. Real Givebutter session creation. The current donation flow builds a Givebutter checkout URL; the longer-term shape is a server-side session-creation API call so the platform can carry session metadata end-to-end and tighten reconciliation.

  3. Shelter acceptance rule enforcement. The data model already captures what each shelter takes and doesn't take — acceptedTypes, rejectedTypes, preferredBrands, and capacityPerBatch — but batch prep currently relies on user judgment to line up with those preferences. The next step is to automate the enforcement, so a batch can't be created with products a shelter doesn't accept.

§ 05 — Links

Links