Case study
AI Sweeper — email to booking
Reads freight emails and their Excel/PDF attachments, and turns them into structured bookings and containers with an LLM.
FIG.1AI

- Role
- Sole frontend developer; about a third of the backend
- Stack
- AngularNestJSBullMQOpenRouterMongoDBGitLab CI
- Result
- Bookings are reviewed instead of typed.
Problem
Operators re-keyed bookings from customer emails and spreadsheets with hidden columns, duplicate headers, and inconsistent formats.
What I owned
Sole frontend developer; about a third of the backend
What I built
- Built the Angular review and export UI and rebuilt it as a real-data-first v2.
- Built Gmail OAuth and per-user accounts, and hardened spreadsheet parsing.
- Set up containerized deploys and GitLab CI.
System shape
NestJS 11 + BullMQ API runs extraction 'runs' through OpenRouter and grades them for accuracy, with A/B prompt arms. Angular 22 review grid for operators to correct and export.
What changed
Bookings are reviewed instead of typed.