{"slug": "i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money", "title": "I Built an AI Money Agent That's Structurally Incapable of Touching the Money", "summary": "Yaseen Khatib, a senior full-stack AI engineer, built Sable, a local-first personal finance agent that stores all data on-device in SQLite and uses OpenAI function calling only to generate proposals rather than execute transactions. The agent's model output renders as a Review & Confirm card, so a hallucination can at worst produce a dismissible card and never a wrong ledger entry. Khatib argues the propose/confirm boundary and local-context pattern apply directly to enterprise agent deployments handling sensitive data like healthcare records and internal financials.", "body_md": "[ EXECUTIVE TEARDOWN // TL;DR ]\n\nPersonal-finance apps ask for the most sensitive data a person owns and then ship it to someone else's cloud. AI finance apps go further: they hand that data to a language model and let probabilistic text decide what happens to real money. I built Sable to reject both premises at the architecture level — a local-first AI financial agent where all data lives on-device in SQLite, and where the model can *propose* but is structurally incapable of *committing*.\n\nSable is a React Native app with no cloud backend. Every debt, every payment, every balance lives in on-device SQLite — full stop. When the AI layer needs context (\"how is my spending pacing this month?\"), it queries the local database. What crosses the network to the model is a distilled, minimal context — never the ledger. Most products bolt privacy on as a policy. Sable has it as a topology: there is no server to breach because there is no server.\n\nThe agent uses OpenAI function calling — but every function call is a **dry run**. When the model decides \"log a ₹5,000 payment against the car loan,\" that intent renders as a Review & Confirm card in the UI. The model's output is a proposal object; the database mutation only executes when a human taps confirm. An LLM hallucination in Sable can produce, at worst, a card you dismiss. It can never produce a wrong number in your ledger.\n\nThe question that should govern every agentic product: *what is the blast radius of the model's worst output?* In Sable the answer is \"one dismissible card\" — by architecture, not by prompt engineering.\n\nEvery enterprise deploying agents faces Sable's problem in costume: healthcare records, legal documents, internal financials — data that wants AI leverage but cannot tolerate AI authority. The propose/confirm boundary and the local-context pattern transfer directly: give the model read access to distilled context, render its intents as reviewable artifacts, and reserve the commit for a human or a deterministic policy. I built the reference implementation into a product I use every day — the full breakdown is [on Sable's product page](https://yaseenkhatib.streamerosai.com/products/sable/).\n\nYK\n\nYaseen Khatib · MERN + AI Architect\n\nShips autonomous AI products solo — five in the last twelve months. [More about Yaseen →](https://yaseenkhatib.streamerosai.com/about/)\n\nI'm Yaseen Khatib — a Senior Full-Stack AI Engineer (MERN + TypeScript) who ships production AI systems solo. Open to senior and lead roles, remote or on-site.\n\n[Get in touch →](https://yaseenkhatib.streamerosai.com/#contact)[See what I've shipped](https://yaseenkhatib.streamerosai.com/products/)\n\n*Originally published at [yaseenkhatib.streamerosai.com/blog/sable-ai-agent-never-touches-money/](https://yaseenkhatib.streamerosai.com/blog/sable-ai-agent-never-touches-money/).*", "url": "https://wpnews.pro/news/i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money", "canonical_source": "https://dev.to/yaseenyk04/i-built-an-ai-money-agent-thats-structurally-incapable-of-touching-the-money-5h0j", "published_at": "2026-09-12 08:46:14+00:00", "updated_at": "2026-09-12 09:01:23.609218+00:00", "lang": "en", "topics": ["ai-agents", "ai-products", "ai-tools", "artificial-intelligence"], "entities": ["Yaseen Khatib", "Sable", "OpenAI", "SQLite", "React Native"], "alternates": {"html": "https://wpnews.pro/news/i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money", "markdown": "https://wpnews.pro/news/i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money.md", "text": "https://wpnews.pro/news/i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money.txt", "jsonld": "https://wpnews.pro/news/i-built-an-ai-money-agent-that-s-structurally-incapable-of-touching-the-money.jsonld"}}