{"slug": "happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday", "title": "HappyGF: I Built an AI Assistant to Make Sure Contractors Get Paid on Friday", "summary": "A developer built HappyGF, an AI-powered accounts payable assistant that extracts vendor, property and amount details from incoming invoice emails, renames PDFs to an accountant's required convention, tracks processing state and flags duplicate submissions. The application is written in Java on The Pipeline Framework and pairs Gemma, for multimodal invoice understanding, with the Jev-compatible decision model Tev1 running locally through Ollama, keeping business rules and authorization under application control. It is already in production use at the developer's girlfriend's business, with an open-source edition being prepared for other companies.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle](https://dev.to/challenges/hacktoberfest-week2-2026-10-12).*\n\nEvery Friday, the accountant processes payments to the contractors and suppliers who keep my girlfriend's business running. For that to happen, invoices need to be received, reviewed, approved, correctly named, and forwarded to the accountant before the deadline.\n\nIt sounds straightforward, until you consider how many invoices arrive by email, often from different contractors, in different formats, with different naming conventions—or none at all.\n\nThe accountant requires PDF filenames containing the vendor, property, and invoice amount, following a specific convention. My girlfriend was spending far too much time opening attachments, checking details, renaming files, and forwarding them. Worse, mistakes or delays could mean someone didn't get paid that Friday.\n\nThat's how **HappyGF**, an AI-powered accounts payable assistant, came about.\n\nThe application helps her process incoming vendor invoices, extract the relevant information, prepare correctly named PDFs, and get approved invoices ready for the accountant.\n\nIt also remembers what has already been processed. Recently, a contractor accidentally submitted the same invoice twice. HappyGF recognized the duplicate instead of treating it as another invoice to process. A small detail, perhaps, but an important one when dealing with payments.\n\nThis isn't an experiment looking for a use case. She's already using the application for real work, and I'm now preparing an open-source edition for other businesses dealing with similar accounts payable workflows.\n\n**Video:** [https://youtu.be/Ttzg6bqgyA8](https://youtu.be/Ttzg6bqgyA8)\n\nThe demonstration uses fictional vendors, properties, and invoices to show the workflow from incoming email to an accountant-ready PDF.\n\n**GitHub:** [https://github.com/MokapotLabs/invoice-assistant](https://github.com/MokapotLabs/invoice-assistant)\n\nThe open-source edition includes the application, configuration, tests, and instructions for running it.\n\nHappyGF is written in Java using [The Pipeline Framework (TPF)](https://pipelineframework.org/), an open-source framework I've been developing over the past few years.\n\nThe AI workflow uses two open-weight models with different responsibilities: **Gemma** for understanding invoices and **Tev1**, a Jev-compatible decision model running through Ollama, for structured decision-making.\n\nGemma handles text and visual interpretation. This matters because invoices aren't standardized data structures. Important information can appear in different locations and formats, and sometimes the meaning depends on the document's layout.\n\nTev1 takes a different approach. Rather than generating explanations or extracting document contents, it evaluates predefined questions against supplied information and returns structured decisions. It runs locally through Ollama's Jev-compatible API, allowing the application to use a specialized decision model alongside a general-purpose multimodal model.\n\nOnce the invoice information has been extracted, the application applies the required filename convention, tracks processing state, detects duplicates, and supports the approval workflow. Business rules and authorization remain under application control rather than being delegated entirely to AI.\n\nThe application uses a Microsoft Graph connector for Outlook.\n\nDuring development, I used Ollama for local model inference and automated integration testing.\n\nTPF handles the typed execution pipelines, external integrations, persistence, and reliability concerns, allowing the application code to concentrate on the accounts payable process.\n\nAccounts payable involves sensitive business information: vendor identities, properties, invoice amounts, and financial correspondence. There are good reasons why a business might not want to send all that information to a proprietary AI service.\n\nOpen-weight models provide an alternative. **Gemma and Tev1 can both run locally through Ollama**, allowing document interpretation and structured AI decisions to happen on hardware controlled by the business, subject to the capabilities of that hardware.\n\nUsing two different models also illustrates another advantage of open innovation: there's no reason every AI task should require the same large language model. A multimodal model can interpret an invoice, while a smaller decision model handles appropriately defined classification or assessment tasks.\n\nThis flexibility matters for both cost and maintainability. A business can choose between local and hosted inference, experiment with different models, and adapt the system to its particular document formats and accounting procedures without rebuilding the entire application.\n\nThe application itself is open source, as is TPF. That means the workflow and the rules surrounding AI decisions are inspectable and can be modified without relying on a closed application vendor.\n\nFor a small business, that flexibility can matter just as much as the AI functionality.\n\nMy girlfriend has been using HappyGF for her actual accounts payable work.\n\nShe's responsible for ensuring that invoices reach the accountant in time for the weekly payment run, and the application was built around the problems she encountered doing that.\n\nOne recent incident illustrates its value particularly well: a contractor submitted an invoice twice. HappyGF identified the duplicate, avoiding another round of manual checking and reducing the risk of processing the same invoice again.\n\nHer experience has driven the application's development, including decisions about which integrations are worth keeping.\n\nShe hasn't paid me for the application, but she uses it for real work. I'm interested in discovering whether other managers and accounts payable teams face similar problems and would find an open-source alternative useful.", "url": "https://wpnews.pro/news/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday", "canonical_source": "https://dev.to/mbarcia/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday-o14", "published_at": "2026-10-19 05:09:25+00:00", "updated_at": "2026-10-19 05:18:02.497679+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-agents", "ai-tools", "large-language-models", "developer-tools"], "entities": ["HappyGF", "The Pipeline Framework", "Gemma", "Tev1", "Ollama", "Jev", "Microsoft Graph", "MokapotLabs"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday", "markdown": "https://wpnews.pro/news/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday.md", "text": "https://wpnews.pro/news/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday.txt", "jsonld": "https://wpnews.pro/news/happygf-i-built-an-ai-assistant-to-make-sure-contractors-get-paid-on-friday.jsonld"}}