TL;DR
35+ features, AI contract processing, WhatsApp integration, and a document system that actually understands your files
Every project in this series has been a step up in complexity. Each one taught me something new and pushed me further than I thought possible. It’s the most complex thing I’ve built — and honestly, the most complex thing I ever imagined building.
35+ features, AI contract processing, WhatsApp integration, and a document system that actually understands your files
Every project in this series has been a step up in complexity. Retool dashboards. Replit apps. AI-powered content tools. IoT with smart meters. Each one taught me something new and pushed me further than I thought possible.
Marina Master is the summit. It’s the most complex thing I’ve built — and honestly, the most complex thing I ever imagined building. It’s not a tool. It’s not an app. It’s a full enterprise management system with 35+ features, multi-tenant architecture, AI-powered document processing, real-time communication, and a production deployment pipeline with staging environments.
A year ago, if you’d told me I’d build this, I would have laughed. A non-developer building enterprise software? Come on.
And yet, here we are.
From Logbook to Management System
Marina Master started life as the „Maritime Logbuch“ I mentioned in Part 2 — a simple digital logbook for boat owners. Voice input, AI-structured entries, crew management. A nice little Replit project.
But here’s what happens when you build something for a domain you’re embedded in: you see the real problems. The logbook was cute. The actual pain was everything else.
Marina operators — the people who run harbors and marinas — are drowning in administrative work. Tenant management, berth assignments, contract handling, billing, maintenance scheduling, communication with boat owners, seasonal planning, waiting lists, insurance tracking, check-in/check-out processes…
Most of them manage all of this with a combination of Excel, paper folders, email, WhatsApp messages, and memory. Some use generic property management software that doesn’t understand the specific needs of a marina. None of them have anything purpose-built.
So I built it.
The Feature Set: 35+ and Growing
I won’t list every feature — that would be a product brochure, not an article. But here’s what gives Marina Master its depth:
Core Operations
- Berth Management: Visual harbor map with berth status, dimensions, pricing, and availability
- Tenant Management: Full profiles with boat details, documents, contract history, and communication log
- Contract Management: Create, track, renew, and archive contracts with automated reminders
- Billing & Invoicing: Flexible billing cycles, automatic invoice generation, payment tracking
- Waiting List: Manage prospective tenants with priority ranking and automatic notifications
- Check-in/Check-out: Streamlined arrival and departure workflows
- Seasonal Management: Handle summer/winter berth assignments and transitions
AI-Powered Features
- Contract Processing (Claude): Upload a PDF contract — in German or English — and Claude extracts tenant name, berth number, start date, end date, monthly rate, special conditions, and more. The extracted data goes into a review queue where the operator can verify and approve.
- Smart Search: Natural language search across all entities. „Show me all boats over 12 meters with expired contracts“ actually works.
- Automated Communications: AI-generated emails and messages based on context — contract renewals, payment reminders, seasonal transitions.
Communication
- WhatsApp Integration: This one deserves its own section. Marina Master connects to a self-hosted WhatsApp Bridge (not the Meta Business API — that’s important for privacy and cost reasons). Operators can send messages to tenants directly from the system. Tenants can respond, and conversations are logged in the tenant’s profile.
- Email System: Template-based emails with merge fields, automated scheduling, and delivery tracking.
- Notification Center: In-app notifications for operators with configurable alerts.
Multi-Marina Support
The system is multi-tenant from the ground up. One installation can manage multiple marinas, each with their own berths, tenants, contracts, and settings. Operators can switch between marinas. Analytics aggregate across all locations.
Technical Infrastructure
- Dev/Prod Pipeline: Separate development and production environments with automated deployment. Push to
devbranch → auto-deploy to staging. Merge tomain→ deploy to production. - Role-Based Access Control: Admin, operator, and tenant roles with granular permissions.
- API: Full REST API for integrations.
- Automated Documentation Screenshots: Playwright scripts that automatically capture screenshots for documentation in both German and English.
- Bilingual Interface: Full German and English support throughout.
The AI Contract Processing Deep-Dive
This feature is worth zooming into because it represents something genuinely new: AI as a core business process component, not just a novelty.
Here’s the flow:
1. Operator uploads a contract PDF. Could be a scanned paper contract from 2015 or a freshly created digital document.
2. The system sends the PDF to Claude (Anthropic’s API) with a carefully crafted prompt that understands marina contract structures. Claude extracts structured data: parties, berth details, financial terms, dates, special conditions.
3. Extracted data enters a review queue. The operator sees what Claude found, corrects any mistakes, and approves. Approval creates or updates the tenant and contract records automatically.
4. Confidence scoring. Each extracted field has a confidence indicator. Low-confidence fields are highlighted for manual review. High-confidence fields can be auto-approved if the operator trusts the system.
This isn’t OCR. OCR reads text. This is comprehension. Claude understands that „Der Liegeplatz B-17 wird ab dem 01.04.2024 für monatlich €350,00 zzgl. MwSt. überlassen“ means berth B-17, starting April 1st 2024, at €350/month plus VAT. It understands context, abbreviations, legal German, and the relationship between clauses.
For a marina with hundreds of legacy contracts in paper folders, this is hours of manual data entry — eliminated.
The WhatsApp Decision
WhatsApp integration was a deliberate choice, and the implementation path was equally deliberate.
Most marina tenants in Germany communicate via WhatsApp. That’s just reality. Email goes unread. Phone calls go to voicemail. WhatsApp messages get read within minutes.
But the Meta Business API is expensive, restrictive, and requires business verification that’s overkill for a marina. So I went with a self-hosted WhatsApp Bridge — an open-source solution that connects to WhatsApp Web and exposes an API.
Is this technically against WhatsApp’s terms of service? Probably, in a strict reading. Is it what every small business in Germany actually does? Yes. And the alternative — not having WhatsApp integration and making the product less useful — wasn’t acceptable.
This is a product decision, not a technical one. And it’s the kind of decision that comes naturally when the builder is also the product person.
Paperless-ngx: When Your Documents Get Smarter
While Marina Master was growing, I was solving a parallel problem: document management. Not just for marinas — for everything.
Paperless-ngx is an open-source document management system. It’s excellent for scanning, tagging, and organizing documents. But its search is keyword-based. You have to know what you’re looking for. And if you have thousands of documents — invoices, contracts, letters, receipts — keyword search falls short.
So I built a RAG (Retrieval-Augmented Generation) integration on top of it.
What the RAG Layer Does
- Semantic Search: Instead of keyword matching, documents are embedded as vectors using OpenAI’s text-embedding-3-small model and stored in Qdrant (a vector database). When you search „invoices from the electrician last summer,“ the system understands meaning, not just words.
- AI Chat Interface: Ask questions about your documents in natural language. „How much did I spend on boat maintenance in 2024?“ The system searches semantically, finds relevant documents, and generates an answer with source citations.
- Temporal Analytics: Visualize when documents were created over time. See patterns — like how your correspondence with the tax office spikes every March.
- Topic Clustering: K-means clustering groups your documents by topic automatically. You discover relationships you didn’t know existed.
- Document Similarity Graph: A force-directed graph showing how documents relate to each other. An invoice links to the corresponding quote, which links to the original inquiry.
The Architecture
The RAG layer runs as a separate service stack alongside Paperless-ngx:
- RAG API: FastAPI (Python) handling embeddings, search, and chat
- Chat Frontend: React + TypeScript
- Vector Database: Qdrant
- Sync Service: Automatically ingests new documents from Paperless-ngx every 5 minutes
Everything runs in Docker. The setup is designed to be non-invasive — Paperless-ngx doesn’t know the RAG layer exists. It’s a purely additive enhancement.
Why This Matters
Document management is one of those problems that everyone has and nobody solves well. We all have folders full of PDFs we’ll never find again. Paperless-ngx solves the storage and organization part. The RAG layer solves the „actually finding and understanding your documents“ part.
And for the marina context specifically: imagine a marina operator with 200 tenant contracts, 5 years of invoices, maintenance records, insurance certificates, and regulatory correspondence. Being able to ask „which tenants have insurance expiring in the next 60 days?“ and getting an immediate, accurate answer — that’s not a feature. That’s a transformation.
What Enterprise-Grade Actually Means
I use the phrase „enterprise-grade“ deliberately, and I want to explain what I mean by it — because coming from someone who can’t write a for-loop, it sounds presumptuous.
I’ve spent 25 years in enterprise software. At arvato/Bertelsmann, I managed systems processing millions of transactions. At CRIF, I shape products used by banks across Europe. I know what enterprise means:
- Multi-tenant: One installation serves multiple customers with data isolation. ✓
- Role-based access: Granular permissions, not just admin/user. ✓
- Audit logging: Know who did what and when. ✓
- API-first: Everything the UI can do, the API can do. ✓
- Deployment pipeline: Staging → production with automated testing. ✓
- Bilingual: Full internationalization, not just translated labels. ✓
- Data integrity: Referential constraints, validation, transaction safety. ✓
Is the code as polished as a system built by a team of 10 over two years? No. Are the product decisions enterprise-grade? Absolutely. And in my experience, product decisions matter more than code quality for long-term success.
The Honest Assessment
Marina Master is my proudest achievement as a vibe-coder. It’s also the project that most clearly shows me what I don’t know.
The codebase is large. Some modules were written months ago when I understood less. Refactoring is needed. Performance optimization is needed. Some of the early architectural decisions — made when I didn’t know better — create friction for new features.
This is the trade-off of building fast. You ship value quickly, but you accumulate debt. And unlike financial debt, technical debt compounds silently until something breaks.
I’m managing this with a mix of discipline and help. Claude Code helps me refactor systematically. The CLAUDE.md file in the repo keeps architectural knowledge consistent. And I’m honest with myself about when a feature needs professional review before going to production.
But here’s the thing: Marina Master exists. It works. It manages real marinas with real tenants. The alternative — waiting until I could afford a development team or learning to code traditionally — would mean it doesn’t exist. And the marina operators I’ve talked to would still be managing berths with Excel.
Sometimes „good enough, shipped“ beats „perfect, never started.“
This is Part 6 of a 7-part series about my journey from zero coding experience to building production applications with AI. In Part 7 — the final installment — I’ll look back at 2.5 years of vibe-coding and share the honest lessons: what worked, what didn’t, and what I’d tell someone starting this journey today.
Try what I’ve built:
- 🧞 [CalendarGenie](https://calendargenie.replit.app) — Turn any screenshot into calendar events
- ✍️ [Post-er](https://post-er.replit.app) — AI-powered content creation
- ⚡ [Energy Backbone](https://energy-backbone.bigdataheaven-software.de) — Smart energy management with IoT
- ⚓ [Marina Master](https://marina-master.bigdataheaven-software.de) — AI-powered marina management