Inspiration

My parents run a pharmacy. Like millions of informal small businesses across Africa, they have no real way to track profit, inventory, or customer credit. They know roughly how much came in each day, roughly who owes them money. Existing tools exist but assume a kind of software user my parents are not - someone who sits down, opens a dashboard, and reconciles records. That's not how a small shop runs. I built Ledga to close that gap without adding software complexity to the shop owner's day.

What it does

Ledga is an agentic Business-as-a-Service platform where one operator manages the back-office for multiple informal shops simultaneously. Shop owners never log into anything. They just send a plain message like "sold para x20, Mama Chioma took 3500 credit." An AI agent parses it, records the transaction, updates inventory, tracks customer credit, and flags exceptions (low stock, overdue credit) for the operator to review. At end of day, each owner gets a plain-language summary of their sales, profit, and outstanding credit.

UiPath Maestro Case orchestrates each shop's business day as a live case - moving through Intake, Processing, Exception Review, and Closed stages, with human checkpoints whenever the operator needs to make a judgment call.

How I built it

  • Frontend: Angular 19 operator dashboard, deployed on Vercel
  • Backend: Python FastAPI, deployed on Railway
  • AI parsing: Anthropic Claude API converts informal owner messages into structured transaction data
  • Database: Supabase (PostgreSQL) with a multi-tenant schema for shops, transactions, inventory, and credit ledgers
  • Orchestration: UiPath Maestro Case governs each shop's business day; UiPath Agent Builder hosts the transaction agent; UiPath Action Center handles human-in-the-loop exception review

Claude was used as a coding agent throughout - generating the case/process definition, designing the database schema, and helping debug the UiPath OAuth integration.

Challenges I ran into

UiPath was completely new to me going into this hackathon. The biggest challenge was authentication - personal access tokens need to be exchanged for OAuth tokens before they work with the API, which wasn't obvious from the docs. I eventually solved it by creating an External Application with client credentials.

I also hit a wall understanding that Maestro Solutions and Orchestrator Releases are separate systems with different APIs. A BPMN process published as a Solution doesn't automatically show up as an Orchestrator package.

The LLM parsing, by contrast, was surprisingly easy. Claude understood Nigerian Pidgin and product shorthand ("para" for Paracetamol) on the first attempt.

What I learned

That the hardest part of building an agentic solution is the orchestration plumbing around it. I also learned how much can get done in a short window when you're impatiently patient: give a problem a real attempt, step away, come back with fresh eyes.

What's next for Ledga

Real WhatsApp integration so owners can send messages through a channel they already use daily, voice note support for fully hands-free input, and onboarding more operators to test the platform with real shops.

Built With

Share this project:

Updates