RiverbornBook Call
All Articles
How We Built an AI Invoice Extractor with GPT-4o Vision
Engineering3 min read

How We Built an AI Invoice Extractor with GPT-4o Vision

Traditional OCR and regex parsers break the moment an invoice layout changes. Here is how I built an AI invoice extractor that turns messy PDFs and receipts into structured data with a built-in human feedback loop.

Akram Sheikh
How We Built EasyDraft: An AI Content Writer with the OpenAI Agents SDK
Engineering4 min read

How We Built EasyDraft: An AI Content Writer with the OpenAI Agents SDK

A multi-agent content generation platform built on the OpenAI Agents SDK, where six specialized agents research, write, fact-check, score, and publish content, with a human still in the loop.

Rabbi Hossain
What We Learned Building an Offline AI App
Engineering3 min read

What We Learned Building an Offline AI App

Before we build an AI system for a client, we usually build it for ourselves first. Here's what broke, what we learned, and why it changes how we scope similar work.

Mahmudul Islam
Why On-Device AI Beats Cloud AI on Privacy and Cost
Engineering3 min read

Why On-Device AI Beats Cloud AI on Privacy and Cost

Cloud AI processes every message on someone else's server and meters every request. On-device inference breaks both problems. Here's the trade-off, honestly.

Mahmudul Islam
Offline Voice AI: Why More Engine Choices Aren't Always Better
Engineering3 min read

Offline Voice AI: Why More Engine Choices Aren't Always Better

Not every part of an offline voice stack needs a choice. Here's why speech-to-text got one engine, and why text-to-speech got a real trade-off instead.

Mahmudul Islam
How to Choose an On-Device AI Model for Mobile
Engineering3 min read

How to Choose an On-Device AI Model for Mobile

There's no single best on-device model. Here's the real lineup we ship, which ones we actually recommend, and why bigger isn't automatically better on a phone.

Mahmudul Islam
Migrating a 40-Agent Sales System from Google ADK 1.x to ADK 2.0 Workflows
Engineering7 min read

Migrating a 40-Agent Sales System from Google ADK 1.x to ADK 2.0 Workflows

How a multi-tenant sales agent system grew from a Google ADK hello-world into a 40-worker orchestrator, then got rebuilt on ADK 2.0 Workflow graphs: what broke, what held up, and what we'd tell any team making the same jump.

Moyenul Islam
On-Device RAG: How We Built Private Document Search
Engineering15 min read

On-Device RAG: How We Built Private Document Search

A technical breakdown of Nongor's on-device RAG architecture: hybrid dense and sparse retrieval, reciprocal rank fusion, cross-encoder reranking, citation validation, and running fully local with LM Studio.

Nasir Uddin
Why Nested AI Workflows Sometimes Fail to Resume
Engineering9 min read

Why Nested AI Workflows Sometimes Fail to Resume

Nested human-in-the-loop workflows fail intermittently when an interrupt matches the wrong sub-workflow, or when a resume reads state before the pause write lands. How ADK 2.0, LangGraph, LangChain, CrewAI, AutoGen, and n8n handle both halves.

Moyenul Islam
Why AI Agents Restart Instead of Resuming (And How to Fix It)
Engineering9 min read

Why AI Agents Restart Instead of Resuming (And How to Fix It)

A multi-agent coordinator that re-classifies every message will restart mid-flow workflows the moment a human pauses them. The same fix — an active-workflow marker checked before routing — across ADK 2.0, LangGraph, LangChain, CrewAI, AutoGen, and n8n.

Moyenul Islam
How a Static IP and a Cloudflare 521 Broke Our GCP Deploy
Engineering2 min read

How a Static IP and a Cloudflare 521 Broke Our GCP Deploy

We shipped a backend to a Compute Engine VM behind Cloudflare. The container came up fine. DNS and a 521 error did not. Two failures, both preventable, both worth knowing before your first deploy.

Moyenul Islam
Fixing an Infinite Sync Loop in Our Twenty CRM Integration
Engineering6 min read

Fixing an Infinite Sync Loop in Our Twenty CRM Integration

We wired bidirectional sync into self-hosted Twenty CRM. Our own writes kept echoing back as inbound changes. The fix wasn't a clever filter — it was storing our API key identity once and comparing against it on every webhook.

Moyenul Islam
Introducing Riverborn: The AI Systems Development Partner
Announcements7 min read

Introducing Riverborn: The AI Systems Development Partner

An introduction to Riverborn: our mission, the gap we exist to close, what we build, and how we approach production AI engineering.

Riverborn