Flexipy
Industries · Services · Products

Products · In production since 2025

Dev13 Systems

The operating system an agency runs on, with AI built into the data rather than bolted beside it. CRM through to cash — accounts, deals, proposals, contracts — then native projects with work items, cycles and worklogs, HRM and payroll records, a multi-currency finance module built on a service catalogue, plus LMS, recruitment, OKRs, a wiki and a client portal. Twenty-five specialist agents across sales, delivery, engineering, marketing, talent and internal ops work over the same organisation-scoped store, so an agent answers from the agency's own accounts, projects and documents instead of from a chat window that knows nothing about them.

What was technically hard

Twenty-five agents reading one knowledge base, none of them able to see across a tenant boundary. Retrieval is scoped at the query layer — the organisation is an argument to the search, not a filter applied to results afterwards — and the isolation is enforced again underneath by Postgres row-level security, because a filter you forget is a data leak and the second line has to hold when the first is wrong. Money made it harder still: every amount is a value object carrying its currency and the FX rate captured at transaction time, so a figure stays true to the day it was recorded rather than to today's rate.

How it's built

Django 5.2 and DRF on PostgreSQL 17 with pgvector, row-level security for tenant isolation, Celery for asynchronous work, React and TypeScript on the front end, deployed with Docker Compose behind Caddy. Agents run over MCP into Claude, and every run records its tool calls and lands a result that stays a draft until somebody posts it. Embeddings are generated with each organisation's own OpenAI key rather than a shared platform key, so no tenant's data passes through a credential another tenant also uses.

One decision we made, and why

Invoice and proposal lines snapshot the service name and rate at the moment they are issued. The obvious design points a line at the catalogue row and reads the rate through it, which is normal until someone edits the rate card and every historical invoice quietly changes with it. Snapshotting costs duplicated data and a slower answer to "what do we charge now"; it buys documents that still say what they said when the client signed them.

Building something in Dev Tech?

The same failure modes, and what we do about them in your domain.

What breaks in Dev Tech →
start-project.sh

$ tell us what you're building and where it's stuck

Book a 30-min discovery call

We reply within one business day.

Let's talk about your build

Pick a time, or leave a note and we'll reply within one business day.

Stanislav Rybonka · Founder & Principal Engineer

Pick a time →
or write to us