Data-intensive systems · founder-led

Keep what works.Fix what doesn't.Build what's missing.

Solve complex operational problems without turning them into complex IT projects.

years in software
40+
years in software
uptime in production
99.998%
uptime in production
direct engineering
1:1
direct engineering
datrmine — execution plan
PROJECT / OPERATIONAL CHANGE
  1. 01existing systemsKEEP
  2. 02missing capabilityBUILD
  3. 03broken workflowFIX
  4. 04edge casesHANDLE
  5. 05unnecessary overheadSKIP
  6. 06productionLIVE
STATUSREADY FOR PRODUCTION
Before building

What looks like a project

  • Looks like: A database projectOften turns out to be: One missing data flowHistorical crew data ↓
  • Looks like: A new enterprise platformOften turns out to be: A bridge between existing systemsTowage crewing ↓
  • Looks like: Months of specificationOften turns out to be: One missing workflowVoice agent ↓
  • Looks like: A replacement projectOften turns out to be: Something worth leaving aloneExisting phone system ↓

„The project is often bigger than the problem.“

Products

Built for operations, proven in production

Software shaped by real operational work — starting with towage crewing.

Towage Crewing & Competency

Not just where a tug is, but whether it can go.

For towage operators: crew, qualifications and certificates at a glance, so you know instantly whether a tug is ready for the job. Built around the departments' existing systems.

Platform details (coming soon)
In production Europe-wide at FAIRPLAY TOWAGE GROUP
  • Readiness on the map

    Every tug in context, directly on the harbour map: positions, crews on board and open warnings in one view.

  • Competency in one click

    From the vessel straight to the crew member: certificates, validity dates, scanned originals, experience, history and availability.

  • From plan to deck, in sync

    Planners assign, masters confirm, crew sees their next rotation — all on the same live data.

fleet · port of hamburglive
loading map…
30.07.26 – 18.09.26
Crew · rank
CW31
CW32
CW33
CW34
CW35
CW36
A. MercerMaster
J. ValeMaster
S. MarinChief Engineer
L. NovakChief Engineer
T. ReedDeckhand
K. BrandtShip's Mechanic
OnboardTime offVacationTrainingSick leave
6 days onboard
Member
J. Vale (Master)
Period
13.08 – 18.08
Vessel
ELBE-07
Exact
13.08.26 06:00 – 18.08.26 18:00
Reminder
not sent
Remarks
Relief required — master reported sick.
Cancel
Reminder
Remove
Save

Click an assignment in the plan · all data anonymised

AI Voice Agent

Keep your phone system. Automate the work behind the call.

No new telephony, no new CRM. The agent joins your existing PBX, works through your own APIs and hands anything that needs a human to your ticket system.

3 meetings from first conversation to production.Existing telephony stayed in place.

In production at PCA
  • Joins your phone system

    Registers as an IP phone on your PBX. All SIP-based systems work. The dialled extension decides the tenant.

  • Workflows are configuration, not code

    Services, rules and API calls defined in JSON, with linting and built-in help. Any company with an API can plug in.

  • Done, or queued for a human

    Tasks are executed on the call or land in your ticket system. Once staff confirm, a webhook lets the agent finish the job.

call · ext 210live
  • Voice agentOnlineOpenAI Realtime · voice Cedar
  • TelephonyRegisteredIP phone on the existing PBX
  • Customer APIConfiguredper tenant, freely mapped
  • TicketsConnectedreview and confirm via webhook

parallel calls · 0 / 203 tenants · routed by extension

    0 / 11 steps
    schema valid
    1{2  "Goal": "Identify the affected child as the customer and provide the customer number for subsequent services. Parents are callers, not customers.",3  "Prerequisites": [],4  "Communication": {5    "Instructions": "Greet the caller first. If knownPhone=true, ask for the child's first name; otherwise ask for contract number and date of birth.",6    "Rules": [7      "Only use details the caller has given or that are already in context.",8      "Never invent customer data.",9      "On multiple matches, never pick one yourself.",10      "Run no other service before the customer is identified."11    ]12  },13  "Inputs": [14    {15      "Name": "contractId",16      "Type": "integer",17      "Required": false,18      "Description": "Contract number of the child."19    },20    {21      "Name": "birthDate",22      "Type": "date",23      "Format": "yyyy-MM-dd",24      "Required": false,25      "Description": "Date of birth of the child, not the parent."26    },27    {28      "Name": "firstName",29      "Type": "string",30      "Required": false,31      "Description": "First name of the affected child."32    }33  ],34  "Api": {35    "Config": "API",36    "Endpoints": [37      {38        "Id": "customer_lookup",39        "Method": "POST",40        "Path": "/customers/lookup",41        "Parameters": [42          {43            "Name": "contractId",44            "Input": "contractId"45          },46          {47            "Name": "birthDate",48            "Input": "birthDate"49          },50          {51            "Name": "firstName",52            "Input": "firstName"53          }54        ]55      }56    ]57  },58  "Evaluation": [59    {60      "Result": "UniqueMatch",61      "Condition": "Exactly one customer is returned."62    },63    {64      "Result": "MultipleMatches",65      "Condition": "Several possible customers are returned."66    },67    {68      "Result": "NoMatch",69      "Condition": "No customer is returned."70    },71    {72      "Result": "TechnicalError",73      "Condition": "The API call fails."74    }75  ],76  "ContextUpdates": [77    {78      "Name": "CustomerNumber",79      "Source": "customer_lookup.Response.customerId",80      "Required": true81    }82  ]83}
    • Goal is set
    • Every input has a name and type
    • Endpoint ids are unique
    • Parameters map to known inputs
    • TechnicalError is handled
    • Context sources reference endpoints

    Pick a call or a service · all data anonymised

    AI where it pays off, inside your own systems

    Not every problem fits a product. Custom AI and automation, integrated with your existing schemas, designed for reliability and built to be maintained long term.

    Experience

    Built to last

    FAST has been in production since 1995 for broadcasters, publishers and media marketers: more than 1.2 billion advertising placements across every major medium, complex ad-hoc reports in about 1.4 seconds, and Tableau dashboards embedded right in the application. That track record is why we can build serious operational software today.

    In continuous production
    Since 1995
    Advertising placements captured
    1.2 billion
    Typical complex ad-hoc report
    ~1.4 s
    TV spot · Northlight Audio · Night Session60 s · 6 channels
    Spend per TV channel for this spot
    LastChannelk€
    Total4,180
    28.06.26RTL1,240
    28.06.26ProSieben1,010
    27.06.26Sat.1780
    28.06.26VOX520
    26.06.26Kabel Eins340
    27.06.26n-tv290
    1. Frame 1 of the spot0:00
    2. Frame 2 of the spot0:07
    3. Frame 3 of the spot0:14
    4. Frame 4 of the spot0:22
    5. Frame 5 of the spot0:31
    6. Frame 6 of the spot0:39
    7. Frame 7 of the spot0:47
    8. Frame 8 of the spot0:55
    Brand and figures shown are illustrative.
    • Print
    • TV
    • Online
    • Streaming
    • Cinema
    • Out-of-home
    • Direct mail

    Selected organizations over the years

    • ARD
    • RTL
    • Sat.1
    • Axel Springer
    • Burda
    • G+J
    • DER SPIEGEL
    • S.Z.
    • Handelsblatt
    • IQM
    • Visoon
    • Bauer Verlag
    • MPS
    • B&M
    • Lotto24
    • WPV
    • Roche
    • pilot
    • Initiative Media
    • rs media
    • WEFRA
    • GFI
    • Biermann
    • Avoxa
    • Financial Times
    • mds
    • Medical Tribune
    • Urban+Vogel
    • FRoSTA

    Integrates with

    • Tableau, embedded
    • Excel
    • PowerPoint
    • Qlik
    • Alteryx
    • HubSpot
    • Salesforce
    • REST

    Ask the Database

    Piloted with users

    Questions in plain language, answers straight from the data. The AI only sees the database structure and writes the query; the query itself runs locally. Records never leave your system.

    • Natural language
    • Schema only
    • Runs locally

    Core capabilities

    • Schema and database design
    • Data classification and enrichment
    • AI integration on top of real data
    • Long-term system maintenance
    Approach

    Founder-led, from the first conversation to production

    datrmine is led by Ralph Ulrich. You work directly with the person who designs and builds the system, with no account managers or handoffs in between.

    40+ years change the way you look at complexity. Technologies come and go; none of them is the goal.

    • Replace only for a reason.

      Reliable systems stay in place unless there is a reason to replace them.

    • Integrate around reality.

      Architecture follows the operation, not the other way around.

    • Handle the edge cases.

      That is where operational reality becomes visible.

    In practice

    Expected
    Centralisation project with an enterprise platform and external consultants.

    Delivered in weeks

    One central data layer for tug data across technology, dispatch, crewing and offshore. Every department kept its tools.

    Expected
    Database and reporting project to import historical crew experience.

    Delivered same day

    In about 40 minutes the data was inspected, special cases handled and the report adapted.

    Contact

    Describe the problem. We'll tell you how small it can be.

    A direct conversation with Ralph Ulrich, the engineer who will build it. No sales process.

    practice
    datrmine
    led by
    Ralph Ulrich
    focus
    B2B · data · AI
    reach
    International