All Projects
ActiveSolo Engineer & ArchitectFlagship · Advanced

ALMS

AI-powered market access for India's artisans.

ALMS bridges the gap between India's marginalized artisans and digital markets — using AI to handle cataloging, image enhancement, and multilingual content so artisans can sell without needing digital skills.

Live Demo
ALMS

The Story

Why this exists.

The Problem

Millions of Indian artisans produce exceptional handcrafted goods but can't access digital markets. Barriers include poor product photography, no product descriptions, language gaps, and zero digital marketing knowledge.

Why It Matters

India's handicraft sector employs 7+ million people. Bridging the digital divide for even a fraction of them creates direct economic uplift without intermediaries taking margins.

The Solution

ALMS lets artisans upload phone photos and voice notes. AI enhances images, generates multilingual product descriptions, suggests pricing, and lists products on a searchable marketplace — entirely automated.

Product Features

What it does.

AI Image Enhancement

Removes backgrounds, adjusts lighting, and sharpens product photos — transforming phone camera shots into marketplace-quality images.

AI Image Enhancement

Multilingual Description Generation

Gemini AI generates product titles and descriptions in English, Hindi, Kannada, and Tamil from a voice note or a few typed keywords.

AI Price Discovery

Analyses similar listings on major marketplaces to suggest competitive pricing based on product category, material, and craftsmanship.

PWA — Works Offline

Progressive Web App with offline support — artisans in low-connectivity areas can draft listings offline and sync when connected.

PWA — Works Offline

Searchable Marketplace

Buyers can search, filter by craft type and region, and contact artisans directly — no commission platform in between.

System Architecture

How every layer connects.

Artisan uploads → AI pipeline → enhanced listing → marketplace → buyer discovery

FrontendNext.js 14 + TypeScriptMarketplace UI, artisan dashboard, PWA shell
AI ServicesGemini AIImage analysis, description generation, price suggestion
StorageCloudflare R2Original and enhanced product images
DatabaseMongoDB AtlasArtisan profiles, product listings, buyer interactions
PWAService Worker + Cache APIOffline-first draft storage and sync
DeploymentVercelEdge CDN, ISR for marketplace pages

Technical Deep Dive

Under the hood.

AI Image Enhancement Pipeline

Artisan uploads a phone photo. The image is sent to the Gemini Vision API with a structured prompt requesting background removal guidance and quality assessment. A server-side Sharp pipeline then applies background removal (rembg), auto-levels, and sharpening based on the AI's quality score. The enhanced image is uploaded to Cloudflare R2 alongside the original.

Multilingual Content Generation

The artisan speaks or types a short description in any supported language. Gemini translates and expands this into a structured product listing: title, short description, material callouts, and care instructions — in all 4 target languages simultaneously. The prompt is engineered to preserve cultural context and craft terminology.

PWA Offline Architecture

Draft listings are stored in IndexedDB via a service worker. When connectivity is restored, the sync worker uploads images to R2 and pushes listing data to the API. Conflict resolution uses a last-write-wins strategy with a device timestamp.

// Service worker: queue failed uploads
self.addEventListener('fetch', (event) => {
  if (event.request.method === 'POST' && isListingAPI(event.request.url)) {
    event.respondWith(
      fetch(event.request.clone()).catch(() => {
        return queueForSync(event.request);
      })
    );
  }
});

Engineering Decisions

Challenge → Decision → Result.

Image enhancement — client-side vs. server-side processing

Decision

Server-side via Sharp + rembg

Why

Artisan devices are low-spec. Server-side processing ensures consistent quality regardless of device.

Result

Enhancement time < 3s on average, consistent output quality.

Multilingual UI — translation at build time vs. runtime

Decision

next-intl at build time for UI, Gemini at runtime for content

Why

Static UI strings are fast and cheap to serve from the edge. Product descriptions need to be dynamic and context-aware.

Result

UI loads instantly; content generation adds ~2s per listing.

Performance & Scale

By the numbers.

< 3sImage Enhancementavg processing time
< 4sDescription Generation4 languages simultaneously
100%PWA Offlineoffline draft capability
200+Listings Createdin pilot program

Deployment & Infrastructure

Production setup.

Deployment

Next.js on Vercel Edge CDN with ISR for marketplace pages. MongoDB Atlas for data. Cloudflare R2 for image storage with public CDN URLs.

CI/CD

GitHub Actions — lint + build on PR, Lighthouse CI for PWA score check, auto-deploy on merge to main.

Monitoring

Vercel Analytics. Lighthouse PWA score tracked on every deploy. MongoDB Atlas alerts for slow queries.

Challenges & Failures

What broke — and how I fixed it.

Challenge

Background removal producing artifacts on complex craft backgrounds.

Fix

Added a manual override — artisans can accept or reject the AI enhancement and revert to original.

Challenge

Voice input quality varying widely across devices.

Fix

Added a text fallback and a preview-edit step before finalising the AI-generated description.

What I Learned

Key takeaways.

Future Roadmap

Where this is going.

v2.0 — Q1 2027

  • WhatsApp integration for artisan onboarding and listing updates
  • AI-powered demand forecasting for seasonal crafts
  • Direct payment integration with UPI

Screenshots

The product.

ALMS marketplace

Artisan marketplace with AI-enhanced listings

Artisan dashboard

Artisan listing dashboard — offline-capable PWA

Technology Stack

Built with.

Frontend

Next.js 14TypeScript

AI/ML

Gemini AI

Database

MongoDB Atlas

Storage

Cloudflare R2

Offline

PWA / Service Worker

Image Processing

Sharp

Deployment

Vercel

Ready to dive in?

This isn't just a project.
It's a system I designed,
engineered, and shipped.

Live Demo ← All Projects