Overview
From January to May 2025 I worked as a Senior Software Engineer on a freelance contract with Vatiero, building a SaaS platform for invoicing, billing, reconciliation, and accounting. My role was to lay out the architecture and drive development of the core product modules so the system could support real financial workflows—not just CRUD, but sync with banks, ingest external data, and keep books consistent.
The stack was Next.js (front end), Nest.js (backend), TypeScript, PostgreSQL, Prisma, and Shadcn for UI. I worked closely with a designer and with junior developers, establishing standards and mentoring so the codebase stayed maintainable as the product evolved.
What we built
Core product modules
The platform was organized around invoicing, billing, reconciliation, and accounting—each as distinct but connected areas. I was responsible for the architecture of these modules: how they shared data, how they stayed consistent, and how new features could be added without turning the codebase into a tangle. That meant clear boundaries, shared primitives (e.g. transactions, ledgers), and APIs that the front end could consume predictably.
Third-party financial APIs: GoCardless
A big part of making the product useful was real-time transaction data. We integrated GoCardless so the platform could sync with bank accounts and payment flows. That’s not just “call an API and display results”—it’s webhooks, idempotency, error handling, and mapping external models into our domain. I designed and implemented the integration so that transaction syncing and downstream workflow automation (e.g. matching payments to invoices) could rely on reliable, up-to-date data.
Inbox: parsing inbound email
We added an inbox feature that intercepts and parses inbound emails and turns them into structured data inside the system. Invoices, statements, or notifications arriving by email could be ingested, parsed, and linked to the right entities (invoices, contacts, etc.) so users didn’t have to re-enter everything by hand. That involved email ingestion (e.g. IMAP or a dedicated address), parsing logic, and safe handling of attachments and failures.
Collaboration and quality
I worked closely with the designer so that what we built matched the intended UX—functionality and interface stayed aligned. On the engineering side, I set coding standards, ran code reviews, and mentored junior developers so that quality and consistency held up as the team and product grew.
Technical and leadership scope
- Architecture — Module boundaries, data model, and APIs for a multi-tenant finance SaaS.
- Integrations — GoCardless for real-time transaction syncing; design patterns for adding more providers later.
- Inbox pipeline — Inbound email → parse → normalize → link to domain entities.
- Standards and mentoring — Reviews, patterns, and guidance so the team could ship with confidence.
Outcome
The product is not in active use at the moment—the project was shelved after my contract ended. What I can speak to is the work itself: we got the architecture and core modules to a solid place, integrated real financial data and email ingestion, and left a codebase that was coherent and maintainable. If you’re building something in this space—SaaS finance, integrations, or email-to-structured-data pipelines—this is the kind of depth I bring.
