Building software since 2015 — the latest systems

Ledgers, cities, a language, AI agents.I build the systems underneath.

01 — System

This machine is a map

Every deck below is a system I designed and built, or a part of how I build them. The upper decks are the latest work — a lender’s books, a city’s app, a language’s dictionary and editor, an AI sales engine, a real-estate business, a ride-hailing app, a product of my own. The lower decks are the machinery behind them: the stack, the record, the operator.

Scroll to descend through it, or touch any deck to go straight there.

Unit
Robert Berisha
Function
CTO, Syncore · software architect
In service
Since May 2015 — 10+ years
Base
Prishtina, Kosovo
Surfaces
Web · iOS · Android · macOS · Windows · Linux · browsers · Office
Core
C# / .NET · TypeScript · Angular · SQL

02.1 — Work · 2025 — present

Syncore Microfinance Suite

Lending, general ledger & central-bank reporting

The system of record for a regulated microfinance institution: every loan, every payment, every ledger line and every report the central bank asks for.

API endpoints
283
database tables
50
permissions
76

Role Architect & lead engineer, as CTO of Syncore — domain engine, migration, reporting, delivery

02.2 — Work · 2023 — present

SmartCity

White-label civic platform — mobile apps and CMS

A municipality’s own app — news, services, transport, emergency numbers, citizen reports — run entirely from a CMS, so a new city is configuration, not a new codebase.

tables in 2.0
109
API routes in 2.0
~358
permission codes
57

Role Sole engineer — backend, admin, mobile apps, store releases

02.3 — Work · 2020 — present

Shkrimori

The Albanian language as software

Albanian written well, everywhere people write: a national dictionary of 120,000+ unique words, an editor that checks spelling, grammar and style, AI rewriting, a voice that reads Albanian aloud, and a keyboard that types ë and ç anywhere.

unique words in the dictionary
120k+
platforms, one account
11
services
7

Role Lead engineer — I built every client: web, desktop, mobile, browser extensions and Office add-ins

02.4 — Work · 2026 — present

Sales Autopilot

Self-hosted AI outbound engine

An engine that researches each prospect’s website, writes to them from a real mailbox, carries the reply conversation within limits you set — and hands qualified opportunities to a person.

lines of TypeScript
111k
tests
800+
HTTP routes
161

Role Architect & engineer — system design, specification and review; built with parallel AI coding agents

02.5 — Work · 2026

Domino

Real-estate platform — listings, CRM and AI search

A real-estate business in one system: a listings site in three languages, the CRM the agents work in — and a search you can simply talk to.

API endpoints
~190
data models
40
languages
3

Role Architect & lead engineer — the whole architecture and most of the features

Built with Vorbulla

02.6 — Work · 2026

Voom

Ride-hailing — the rider and driver app

The Voom mobile app, designed and built screen by screen for riders and drivers — with calls between them that ring like a phone call, without either side seeing the other’s number.

screens designed & built
77
roles, one app
2
stores, live
2

Role Mobile UI/UX & engineering — the whole app experience, and in-ride calling end to end

Built with Inspired Tech

02.7 — Work · 2025 — present

themelui

A premium Angular admin template — designed, built and sold on my own

Four dashboards, six apps and forty-plus pages in Angular 22, signals throughout — a product I build alone at Syncore, with licensing automated at the edge.

dashboards
4
apps
6
components
136

Role Sole author — product, design, engineering, licensing and the site

03 — Technology

The drive

Not a wall of logos — the parts I actually run in production, and what each one does for me. Select a component to see where it works.

Intelligence

Data

Services

Interfaces

Delivery

Select a component to see what it does and where it runs.

04 — Experience

Runtime

Ten years, since May 2015. The inner rings are the eras before this record; the outer five are the latest systems — one arc per system, height by commits that month, read from the repositories.

  1. 2015–20
    Albasoft CMSA custom CMS on ASP.NET, and the websites built on it.
  2. 2020–24
    Gjuha Shqipe foundationsInternal systems behind Kulla e shqipes: Leksikografia, Morfologjia, Fjalësi, Korrektori, Faqosësi.
  3. 2023
    SmartCityA city platform’s API, admin, identity and apps — solo.
  4. 2025
    Syncore Microfinance · themeluiA regulated lender’s whole system; a product of my own.
  5. 2026
    Shkrimori · Domino · Voom · AutopilotEleven platforms, an AI-searched catalogue, a ride app, an AI engine.
  • Albasoft CMS · 201520
  • Gjuha Shqipe foundations · 202024
  • Shkrimori
  • SmartCity
  • Syncore
  • Products & sites
  • Voom
  • Autopilot

05 — About

Operator

I’m Robert. I’ve been building software since May 2015, and I’m CTO at Syncore. I design the systems other people’s work depends on — a lender’s ledger, a municipality’s app, the tools a nation uses to write its own language — and I build most of them myself, from the database schema to the pixels.

I like the whole stack because the interesting problems never stay in one layer: an interest formula that has to match the central bank to six decimals, a search that has to stay instant however many listings there are, an app that becomes a different city when you change its hostname.

Most days are C# and TypeScript: .NET services, Angular front-ends, SQL, with React Native, Electron and Docker around them. A growing part of the work is AI — systems where models do real work inside hard limits, and coding agents I direct to build them.

Now
CTO at Syncore
Since
May 2015 — 10+ years
Based in
Prishtina, Kosovo
Writes
C# · TypeScript · SQL

06 — Contact

Open a channel

If you are building something that has to be right — money, public services, language, AI that people must be able to trust — I’d like to hear about it.

Send a signalhello@roberisha.com

Prishtina, Kosovo · CET

Robert BerishaSoftware architect

00SurfaceDepth 000.0

Boot 0% · Loading

Subsystem 02.4 · 2026 — present

Sales Autopilot

Self-hosted AI outbound engine

An engine that researches each prospect’s website, writes to them from a real mailbox, carries the reply conversation within limits you set — and hands qualified opportunities to a person.

Role
Architect & engineer — system design, specification and review; built with parallel AI coding agents
Status
In active development — running end to end
Platforms
Web (self-hosted)

01What it is

Operators import leads, describe the companies they sell for — voice, offerings with price floors, boundaries, knowledge — and draw a strategy as a graph of twenty-three node types. An execution engine runs every lead through that graph.

It crawls and analyses the lead’s site, qualifies them, picks a contact, drafts a message (a person approves the first touch by default), sends it over SMTP, reads replies over IMAP, classifies what each reply means, continues the conversation and escalates to a human when it should.

02The problem

Personalised outreach is manual work: research, writing, follow-ups, reply triage. Most automation just blasts templates, loses the thread, or keeps mailing people who asked to stop.

The design rule here is that the model proposes and the code disposes. Stop requests, bounces, sending caps, approvals and budgets are enforced in code — never left to a prompt.

03What I built

  • The system and its contracts, split into milestones and parallel tracks that AI coding agents build under my direction — every milestone reviewed, integrated and verified.
  • A crash-safe scheduler on Postgres alone, a never-send-twice outbox, and a signal system that lets a reply interrupt a multi-day wait.
  • An LLM layer with seven roles, provider fallback, structured outputs and budgets; a visual strategy editor; and an MCP server that exposes the whole system to AI clients through scoped keys.

04Architecture

Dashboardstrategy editorMCP clients54 toolsNestJS API161 routesRun executor1 s tick · leasesMail workeroutbox · warm-upInboundIMAP · classifierPostgreSQL 17SKIP LOCKEDModel providersAnthropic · OpenAIMailboxesSMTP · IMAPsignals
No broker, no Redis: every queue is a Postgres table claimed with SKIP LOCKED.

05Technology

Interface
Next.js 16React 19React FlowTanStack QueryZustand
Services
NestJS 11Prisma 7AI SDKMCP SDKnodemailerimapflow
Data
PostgreSQL 17
AI
AnthropicOpenAIOpenRouter · Ollamadeterministic mock provider
Delivery
Docker ComposeCaddy

06Engineering notes

  1. 01

    A scheduler that survives a crash

    One SQL statement claims due runs with FOR UPDATE SKIP LOCKED. Runs hold a sixty-second lease renewed every twenty seconds, and each step commits only if the worker still holds the lock token — a worker that lost its lease writes nothing.

  2. 02

    Never send twice

    The Message-ID exists before the first attempt and sending is never retried. Right before SMTP, the worker re-checks the run, the campaign, the lead, the suppression list and the caps. A send with an uncertain outcome is recorded as unknown — and left alone.

  3. 03

    The model proposes; the code disposes

    Bounces, auto-replies and stop requests are detected in code, in English, German and Albanian, before any model sees the message. “Goal reached” only counts above a confidence threshold, and pressure on a boundary hands the thread to a person.

  4. 04

    Deliverability by design

    Sending windows follow the prospect’s timezone. New mailboxes warm up from ten a day, adding five daily up to thirty, with jittered gaps. Three hard bounces in the last fifty sends pause the mailbox automatically.

  5. 05

    AI on a budget

    Every call has a timeout, jittered retries and a fallback model. Budgets are checked per batch, campaign and company before each call; oversized prompts are trimmed by priority but never lose their boundaries; scraped pages and inbound mail are fenced off as untrusted input.

  6. 06

    Agents that can edit safely

    The copilot and MCP clients change strategies only through diff proposals checked against the version they were based on. A propose-only key is always a dry run, and applying a proposal is a single undo step.

07Results

111k
lines of TypeScript
800+
tests
161
HTTP routes
54
MCP tools
23
strategy node types
7
AI roles with fallbacks
  • Runs the whole loop end to end — research, outreach, reply handling and hand-off to a person.
  • Every rule that matters — stop requests, caps, approvals, budgets — enforced in code and covered by tests.
  • In active development, with more of the system growing around it.