Inspiration

Community pharmacies are the frontline of healthcare — yet many still manage stock with spreadsheets or pen and paper. When a pharmacy runs out of a critical medication, patients suffer the consequences. We wanted to build something that gives independent pharmacists the same intelligent inventory management that large chains take for granted, putting AI to work on a real, everyday problem in healthcare access.

What it does

In Southeast Asia, people visit pharmacies ten times more often than a doctor, making the community pharmacist the de facto frontline of healthcare. Yet most independent pharmacies still manage stock with pen and paper, and over 20–50% of antibiotics dispensed across the region are inappropriate, fuelling a silent AMR crisis already projected to cause millions of deaths by 2030. When pharmacies can’t track what they have, patients self-medicate, pharmacists guess, and the wrong drugs reach the wrong people. We built a Progressive Web App that puts AI-powered inventory intelligence in any pharmacist’s hands: log your stock, and Claude instantly analyses it, flags what’s critically low, and surfaces prioritised recommendations — not just to prevent stockouts, but to nudge dispensing towards better stewardship. Because the path to fighting antimicrobial resistance starts with knowing what’s on the shelf.

How we built it

We built a full-stack Progressive Web App using TypeScript throughout — an Express API server backed by a Drizzle ORM database, paired with a React PWA frontend. The AI advisory layer uses Claude to analyse stock levels and surface actionable recommendations for each pharmacy. We structured the project as a monorepo with shared Zod schemas so the API contract stays consistent between frontend and backend.

Challenges we ran into

Getting the PWA and API server to play nicely together in a single Replit environment was trickier than expected — routing requests to the right port under a shared public URL took real debugging effort. We also had to think carefully about how to make AI advice genuinely useful rather than generic, which meant designing prompts around specific stock thresholds and product categories.

Accomplishments that we're proud of

We shipped a working end-to-end product in a single hackathon session — a real pharmacy can enter their stock, and Claude surfaces tailored advisory insights in seconds. We're proud that the app is genuinely useful rather than just a demo shell.

What we learned

We learned how much value there is in tight API contracts when using AI — structured Zod schemas made it far easier to feed reliable data to Claude and get consistent, meaningful responses back. We also gained a much deeper appreciation for how many small pharmacies are underserved by existing software tools.

What's next for Apotek.AI

We'd love to add real-time stock sync across multiple branches, automated supplier order suggestions, and expiry date tracking. Longer term, we think this data could integrate directly with ongoing AMR policy intervention efforts and enhance community health worker efforts to drive better prescribing patterns for independent pharmacies within south east Asia.

Built With

Share this project:

Updates