article

Building Quill: AI-Powered Accounting for Cyprus

13 Mar 2026 | 11 min read

Quill Accounting dashboard showing account balance, VAT balance, revenue and expenses chart, and upcoming accounting dates for Cyprus

TLDR;

We spent over two years building Quill, an AI-powered accounting platform specifically for Cyprus. The idea was simple: automate the painful parts of accounting — document intake, OCR, categorization — and let accountants focus on what actually matters. The product was nearly finished, but well-funded competitors flooded the market and we had to make some hard decisions.

Why Accounting in Cyprus?

If you've ever run a business in Cyprus, you know the pain. Accounting here is a unique blend of local regulations, EU VAT rules, VIES validations, and a handful of Cyprus-specific quirks that no generic accounting tool handles well. Most businesses rely on their accountant to sort through piles of invoices, receipts, and bank statements manually. The accountants themselves are often buried in spreadsheets and emails, forwarding PDFs back and forth.

When we started Zentered in Cyprus, we experienced this first-hand. Every month, we'd collect invoices, scan receipts, email them to our accountant, wait for questions, reply, and repeat. It felt like a problem that should have been solved years ago, but the tools available either didn't support Cyprus at all or were designed for much larger markets and didn't care about the local specifics.

So we decided to build Quill.

The Team

Quill was a co-founded venture. Marios Simou handled the technology and programming side, helping build out the platform's core features — he has since founded Correctify, which uses AI to help restaurants create and publish menus quickly and affordably. Nikolas Konstantinou covered operations, brought insider knowledge of Cyprus regulations and business culture, and opened doors with accountants through his local network — he now runs RebaseCyprus, helping entrepreneurs and expats move, live, and do business in Cyprus hassle-free.

What We Built

Quill was designed as a complete accounting intake and management platform. The core idea: businesses upload their documents — invoices, receipts, bank statements — and AI takes care of the rest.

The Dashboard

Quill dashboard showing account balance, bank connection prompt, VAT balance, monthly revenue and expenses summary, recently uploaded files, and upcoming Cyprus accounting dates and deadlines
The Quill dashboard with financial overview and Cyprus-specific accounting calendar

The dashboard gave business owners a clear overview: account balance, VAT balance, out of pocket expenses, and a revenue vs. expenses chart. On the right side, we built an accounting calendar with all the Cyprus-specific dates — tax deadlines, public holidays, PAYE payment dates, defence contribution deadlines. This alone was something no other tool offered, and accountants loved it during our early conversations.

Document Intake and AI Processing

Quill file management interface showing processing and review section for uploaded documents with drag-and-drop upload supporting CSV, JPG and PDF files up to 10MB
Document upload and AI processing pipeline

This was the heart of Quill. Users could upload documents via the web interface, drag-and-drop, or simply forward an email to their dedicated Quill inbox. The pipeline looked like this:

  1. Document uploaded to Google Cloud Storage
  2. EventArc triggers the processing function
  3. Google Document AI runs OCR and data extraction
  4. AI categorizes the document (invoice, receipt, expense, etc.)
  5. A matching function attempts to reconcile the document with bank transactions
  6. The result appears in the dashboard for human review

We spent a lot of time on step 4 and 5 — getting AI to reliably categorize documents and match them to the right transactions. It worked well for straightforward cases (utility bills, regular supplier invoices), but edge cases were endless: handwritten receipts, invoices in Greek, documents with multiple VAT rates, credit notes that reference older invoices.

Invoices and Expenses

Quill invoices management page with table columns for date, status, invoice number, sender/payee, recipient/payer and total, with filters for invoice type and currency
Invoice management with multi-currency support
Quill expenses management page with table columns for date, status, invoice number, sender/payee, recipient/payer and total, with upload and currency filter options
Expense tracking with the same document upload workflow

Invoices and expenses shared a similar interface but had different workflows behind the scenes. We handled VAT calculations for standard, reduced, and zero rates. EU cross-border transactions needed VIES validation to verify VAT numbers, and we built the reverse charge logic for B2B services. Multi-currency support was essential since many Cyprus businesses deal in both EUR and GBP (legacy from the British influence and ongoing trade with the UK).

Open Banking

Quill Open Banking setup page showing GoCardless integration with demo mode for retrieving bank transactions, with bank selection dropdown for Airwalex
Bank account connection via GoCardless Open Banking

We integrated GoCardless Open Banking to automatically pull bank transactions. Four times a day, a Cloud Scheduler triggered our functions to fetch new transactions across all connected accounts. The goal was to have transactions flow in automatically and get matched to uploaded invoices and receipts — reducing the manual reconciliation work that accountants spend hours on.

Accountant-First Design

Quill settings page showing user profile, email address, and accounting firm configuration where users can link their accountant for document submissions and collaboration
Settings for connecting businesses with their accounting firms

Early on we realized that the real users weren't just business owners — they were the accountants managing dozens of clients. So we built the platform around them. Accountants could sign up, add their firm, and manage all their clients from a single dashboard. Clients could link their business to their accountant's firm, and submissions would flow directly to the accountant with email notifications. We added email-based intake so accountants could tell their clients "just forward your invoices to this email address" — no app download, no login required for the client.

The Tech Stack

For those interested in the technical side:

  • Frontend: SolidJS with TypeScript — we chose SolidJS early on because of its performance characteristics and fine-grained reactivity. I wrote about our experience with Fastify DX and SolidJS earlier.
  • API: GraphQL with Fastify, using Prisma as the database mapper
  • Database: PostgreSQL on Google Cloud SQL
  • AI/OCR: Google Document AI for document processing and data extraction
  • Banking: GoCardless Open Banking API for transaction fetching
  • Infrastructure: Terraform for everything — Google Cloud Run, Cloud Functions, Cloud Storage, Cloud Scheduler, PubSub, EventArc
  • Functions: Google Cloud Functions for the async processing pipeline (document processing, AI results handling, transaction fetching, document-transaction matching)

The architecture was event-driven by design. Upload a document, and a chain of Cloud Functions handles the rest through EventArc notifications and PubSub messages. This kept the main API lightweight and responsive while heavy processing happened asynchronously.

Building on Google Cloud

Building on Google Cloud was a genuinely great experience. Spinning up Cloud Functions, connecting them through PubSub and EventArc, scheduling jobs with Cloud Scheduler — it all just worked. The developer experience for event-driven workloads is hard to beat. Need a new processing step? Write a function, deploy it, wire it up to an event. Done.

We were also fortunate to get accepted into the Google for Startups Cloud Program early on, which gave us $200,000 in cloud credits. For a bootstrapped team, that was massive — it meant we could build and iterate without worrying about infrastructure costs for nearly two years. Document AI, Cloud SQL, Cloud Run, storage, networking — all covered. If you're building on GCP and haven't looked into their startup program, seriously consider applying.

What Happened

The product was nearly finished. We had the core flows working, we'd talked to accountants, iterated on their feedback, and were getting ready for a wider launch. But a combination of factors caught up with us.

First, we got lost in features. Every conversation with an accountant surfaced new requirements — VIES edge cases, multi-entity support, specific report formats. Instead of launching early with a focused MVP, we kept building. The dashboard needed one more widget, the document pipeline needed one more validation step, the settings page needed one more option. Classic scope creep, and we fell right into it.

Second, time. Everyone on the team had day jobs. Quill was a side project we worked on during evenings and weekends. That's fine for building a prototype, but getting a regulated financial product to production quality with limited hours per week is a different story. Progress was steady but slow, and in a market that was heating up, slow meant falling behind.

Third — and this is something that's easy to forget now — back in 2023 and 2024, we didn't have the AI-powered development tools we have today. There was no AI pair programmer helping us scaffold Cloud Functions, no LLM generating Terraform configs, no agent writing and debugging Prisma schemas. Every line of code, every infrastructure change, every deployment pipeline was manual. The same features that took us weeks to build in 2023 could probably be shipped in days today. The irony of building an AI product without AI tools to help you build it is not lost on me.

And then, seemingly overnight, the market got crowded. Well-funded competitors — backed by serious VC money — entered the accounting automation space. They could afford large sales teams, aggressive pricing, and rapid feature development that we simply couldn't match as a small, bootstrapped team. Some of them were building similar AI-powered solutions but with ten times the headcount and marketing budget.

We had to be honest with ourselves. The product was good, the tech was solid, and the accountants we talked to genuinely liked what we built. But competing in a market where others can outspend you 10:1 on customer acquisition — while you're building part-time without the AI tooling that would come just a year or two later — is a different kind of challenge than building a good product. Especially in a relatively small market like Cyprus.

What We Learned

Talk to your users early and often. The best features in Quill — the accounting calendar, the email intake, the accountant-firm structure — all came from conversations with actual accountants. The things we assumed would matter most (fancy AI categorization) were nice-to-have compared to practical workflow improvements.

Small markets are a double-edged sword. Cyprus was great for building something focused and tailored. The regulations are specific enough that a generic tool doesn't cut it. But the market is also small enough that it's hard to build a sustainable business on it alone, and when well-funded players enter, you're competing for a limited pool of customers.

Event-driven architectures are worth the investment. The processing pipeline was one of the best architectural decisions we made. Adding new processing steps (like the transaction matching) was straightforward because each function was independent and communicated through events. If I were building something similar again, I'd use the same approach.

AI is powerful but messy. Document AI worked impressively well on clean, structured invoices. But the real world is full of scanned receipts at odd angles, documents mixing languages, and creative interpretations of what an "invoice" should look like. The last 20% of accuracy took 80% of the effort, and that gap is where competitors with bigger teams have a real advantage.

Launch early, even when it feels too early. We kept adding features instead of getting the product in front of paying users. Every "just one more thing" pushed the launch further out. In hindsight, launching with document upload and basic categorization — without the Open Banking integration, without multi-entity support — would have been enough to validate the business and start generating revenue while we built the rest.

The tools you build with matter as much as the tools you build. We started Quill in a world without AI-assisted development. Today, I could probably rebuild the entire Cloud Functions pipeline in a fraction of the time with the help of an AI coding assistant. If you're starting a side project now, you have an unfair advantage over where we were two years ago. Use it.

Build for the user, not the technology. The accountants didn't care that we used SolidJS or that our architecture was event-driven. They cared that their clients could forward an email and the right invoice showed up in their dashboard. Every technical decision should serve a user outcome.

Looking Back

Quill was one of those projects where the building was genuinely fun, the problem was real, and the solution worked. Sometimes that's not enough, and that's okay. The code, the architecture patterns, and especially the lessons from talking to accountants — all of that feeds into how we approach problems at Zentered today.

If you're building something for a small, regulated market, I hope this gives you a realistic picture of both the opportunity and the challenges. And if you're an accountant in Cyprus still drowning in spreadsheets — I feel you.

Reach out on Bluesky if you want to chat about any of this.

Patrick Heneise

Chief Problem Solver and Founder at Zentered

I'm a Software Enginer focusing on web applications and cloud native solutions. In 1990 I started playing on x386 PCs and crafted my first “website” around 1996. Since then I've worked with dozens of programming languages, frameworks, databases and things long forgotten. I have over 20 years professional experience in software solutions and have helped many people accomplish their projects.

pattern/design file