Featured Work AZ Consulting CRM Internal platform · Under NDA

AZ Consulting GmbH CRM — NextGen

Developed as a solo developer project for AZ Consulting GmbH. The system is used internally by 4 end users (3 employees and 1 manager) for daily operations.

A role-aware CRM aligned with how AZ Consulting works — across MPU assessments, Verfahrensbeistand mandates, and sworn translations. It replaced an outdated ASP.NET / SQL Server system with a React & Node.js SPA over roughly three weeks, including a structured migration of existing clients, cases, and documents (1,000+ records, 20,000+ files, ~19 GB). Cutover was rehearsed on test data before go-live.

Role Junior Full-Stack Developer (solo-built project)
Timeline ~3 weeks build · in use since 2026
Status Internal · 4 users (3 staff + 1 manager)
1,000+ client records Seamlessly migrated
20,000+ documents Re-linked across 19 GB
3 practices MPU · VB & Gericht · Übersetzungen
at cutover No loss reported (reconciled)
3 AM daily Automated backup · UI-reported
~3 weeks Concept → handover
01
Context

A consultancy that had outgrown its tools

AZ Consulting GmbH serves three demanding practices under one roof — MPU assessments, Verfahrensbeistand work (child advocacy and family-court representation, including Jugendamt coordination), and sworn translations. Each practice has its own workflows, its own documents, its own deadlines. The team needed a platform that respected those differences instead of forcing a single generic shape onto all three.

The legacy system had served the consultancy for years, but daily work had outgrown it. Searching for a client took clicks where a single typed query should have done it. Court dates lived apart from case files. Translator assignments lived in spreadsheets. Audit trails were either missing or so noisy they were practically useless. The mandate was clear: build a CRM around how the team actually works — and bring every existing client, case, and document along with it.

  • One platform serving three very different practices, side by side
  • A transition path that wouldn't disrupt active client cases
  • Search and filters that match how staff actually look for things
  • Backups so reliable that nobody on the team has to think about them
  • A clean audit trail per workflow — not a tangled global event log
02
Foundation

A seamless transition, on day one

The new CRM had to launch with every existing client, every case, every document already in place — no parallel systems, no "we'll catch up next week." That was non-negotiable. The migration was treated as a first-class feature: planned and verified end-to-end before the team ever logged in.

  1. W1

    Mapping the way the team actually works

    Before any code was written, we sat with the people who use the system every day — understanding how MPU files flow, what makes a court case different from a translation job, and where the legacy system was tripping the team up. The new data model was designed around those real workflows, not around the database we were leaving behind.

  2. W2

    Building the platform, moving the data

    Module by module, the new platform came together: client records, case files, documents, calendar, search. In parallel, the migration pipeline was rehearsed and re-rehearsed against test copies of the old database — until every record count matched, every document re-linked, and every euro of financial history reconciled to the cent.

  3. W3

    A quiet cutover, a clean Monday morning

    The cutover ran over a weekend. By Monday morning, more than 1,000 client records and 20,000+ documents (around 19 GB) were already in place — with the legacy system kept available read-only for a week as a safety net. Nobody needed it. The team simply logged in and worked — only faster, and on a foundation built to last.

03
Practice

MPU Management, structured around the case

Medical-psychological assessments are paperwork-heavy and deadline-sensitive. Every case carries weeks of correspondence, expert reports, scheduling, and dependencies between documents. The MPU module brings all of that under a single client view so nothing slips through the cracks.

Case timeline per client

Every meeting, document, deadline, and status update for an MPU case lives on a single timeline — no reconstructing context from email threads, no flipping between systems to see what happened last.

Document workflows that match reality

From intake through the final assessment, the document set required for each MPU stage is tracked automatically. Missing files surface as gentle prompts — before they ever become a problem.

Deadlines you can trust

Submission deadlines, follow-up reminders, and any linked court dates feed directly into the smart calendar — one place to look, no parallel reminder system to maintain.

Confidentiality, by default

MPU records are sensitive by nature. Access is scoped per role, and every document is served through an authenticated proxy — direct file URLs are never exposed to the browser.

1 One place for the case, the documents, the dates, and the audit trail — instead of four.

04
Practice

VB & Gericht — every mandate, every hearing, every party

Verfahrensbeistand work is built on careful coordination — between the child whose interests are represented, the parents on each side, the Jugendamt (Youth Welfare Office), and the family court. The VB & Gericht module gives the team a single, structured view of every active mandate and everyone involved in it.

Every party connected to the mandate

Each mandate carries its full constellation — child, both parents, Jugendamt contacts, court file references — as first-class records on the case. Nothing has to be reconstructed from scattered notes.

Hearings and case file, side by side

Family-court hearings, conciliation appointments, and home visits are linked directly to the mandate. Open one and the other is right there — documents, parties, prior history, ready for the hearing.

Jugendamt correspondence, kept tidy

Incoming and outgoing communication with the Jugendamt is captured against the mandate it belongs to — no scrolling through inboxes to reconstruct who said what, and when.

Report deadlines that don't slip

Verfahrensbeistand report deadlines feed straight into the smart calendar, with the underlying case file one click away when writing the report. Reschedules update everywhere — no orphan dates left behind.

05
Practice

Sworn translations, from request to delivery

Translation work has its own ecosystem: external sworn translators, language pairs, certified documents, billing per page. The Übersetzungen module is built around that reality, instead of squeezing it into a generic case shape.

Translator directory

Every sworn translator the consultancy works with — with language pairs, availability, and historical assignments — is at hand. Assignment takes seconds, not a search through old emails.

Per-document tracking

Each document follows its own path: incoming, assigned, translated, certified, delivered. Status is visible at a glance from any case it belongs to.

Fully independent module

Translations are managed as standalone records with their own dedicated appointments and client data. This strict separation from MPU and Court cases ensures precise organization and clutter-free workflows.

Clean billing data, by design

Pages, language pair, certification status, and translator fee live with the document itself — making invoicing straightforward and every line item fully auditable.

06
Scheduling

A calendar that understands the case

A calendar full of appointments is only useful if you can tell what each entry is for. The smart calendar treats every appointment as a piece of a workflow, not a standalone event — every entry carries the client and the case it belongs to as first-class context.

Appointments linked to records

Every entry can carry a client and a case as first-class context. One click on a calendar entry and you're inside the right file — without hunting for it.

Per-module views

Filter the calendar to MPU sessions, court dates, or translator deliveries — or see everything at once. Whichever view fits the moment.

Reschedule once, update everywhere

Moving an appointment moves the case-level reminder with it. No stale dates left behind in the system, no manual cleanup later.

Visible workload, fewer surprises

At-a-glance density per day and per practice helps the team spot collisions before they happen — and plan capacity for the weeks ahead.

07
Findability & Accountability

Find anything, prove what happened

A CRM is only as good as how fast you can find a record — and how clearly you can see what was changed and by whom. Both were treated as core features, not afterthoughts bolted on at the end.

  • Global search across clients, cases, documents, calendar entries, and translator records — ranked by relevance, with the right module label attached to every hit.
  • Contextual filters per module — every table has its own granular filter set, built around how that specific practice actually works. No generic search-box-and-hope.
  • Saved views for the queries the team uses every day — open MPU files, this-week court dates, undelivered translations — kept ready, so nobody rebuilds them from scratch each morning.
  • Module-scoped audit trails: instead of one giant system-wide log, every action is tracked inside the module it belongs to — so you can see who touched a specific MPU case last week without wading through unrelated events.
  • Append-only audit log — entries are not edited in place; each change records user, IP, and what changed.
  • Role-aware access across the board — Administrator and Mitarbeiter tiers, enforced server-side on every API route and every download.
08
Technical implementation

Selected technical details

Alongside the practice modules: data modeling, document handling, and DSGVO-oriented file access for sensitive client data.

Linked follow-up cases (Folgeakte)

Implemented a self-referential relation (parentCaseId via Prisma) for linked follow-up dossiers. Repeat clients are grouped in the UI with a +N pill to reduce duplicate rows.

Paginated document loading

Used server-side pagination and bounded eager loading for 20,000+ files (~19 GB legacy data), keeping list views responsive during migration and daily use.

Document access via proxy (DSGVO-oriented)

Sensitive documents are served through authenticated proxy middleware so direct Linux file paths are not exposed in public URLs.

09
Platform

Additional platform modules

Besides case files: an overview for management, billing helpers, internal messaging, and document upload with compression for client files.

Management overview

Live financial tracking (revenue, outstanding balances), daily appointments, and cross-department KPIs at a single glance for management.

Financial Ledger & Dynamic PDFs

Track partial payments across all modules and generate branded client dossiers, payment ledgers, or PDF invoices instantly.

Secure Team Chat

Built-in, authenticated internal messaging with image support to replace scattered WhatsApp groups and ensure GDPR compliance.

Intelligent Document Vault

Drag-and-drop multi-file uploads with instant auto-compression, rapid previews, and bank-grade security for sensitive client data.

10
Reliability

Backups you don't have to think about

Client data is the consultancy's most important asset. The backup system was designed so the team never has to wonder whether they're protected — and so the administrator has a one-click option whenever extra peace of mind is called for.

Automated daily backup at 3 AM

A scheduled job runs every night at 03:00, captures a fresh database snapshot, and reports its status straight back into the platform UI — a visible "last successful backup" stamp on every refresh. The team knows the safety net is in place without ever having to check a server.

Manual download, on demand

Administrators can pull a complete, current database export at any time, straight from the UI. Useful before sensitive changes, for end-of-period archives, or simply for added client peace of mind.

Automated Dual-Layer Backups

Smart dual-layer Strato HiDrive sync: Aktuell maintains a daily 1:1 mirror of the live system to prevent bloat, while Archiv acts as an append-only historical vault retaining all deleted or modified files for ultimate data recovery.

Verified, not assumed

Restore drills are scripted and run automatically. A backup isn't trusted until it's been rebuilt successfully into a clean environment and verified end-to-end.

21 Since handover, the four internal users (3 employees + 1 manager) work in one system instead of juggling spreadsheets and the legacy tool.

Have a role in mind?

Open to IT-Support, Junior Full-Stack Developer, and IT roles in Cologne / NRW or remote.