Net NinjasBook a call
All services

The consultancy of Jeff Kloythanomsup, Amsterdam

AI consulting and engineering for EU startups and small businesses

I do AI consulting and AI engineering for EU teams. I put language models to work on the problems that matter, and I ship them to production.

I used to think the model was the hard part of AI work. After building a marketplace on one, I realised it's the easy part. The real work is choosing which problem deserves a model at all. Then comes getting your own data in front of it, keeping it inside guardrails, and keeping European customer data where it belongs. The question I ask first isn't what's possible but what matters to your users and your runway.

That marketplace is ThriveUp Care, which I founded and ran. Its matching runs on a retrieval pipeline over vector embeddings with Claude and OpenAI-compatible APIs. I wrapped it in a Next.js application with 200+ endpoints and a React Native app. I provisioned the AWS infrastructure underneath in Terraform. I'm also a Claude Certified Architect at the Professional level.

Reference architecture

How the pieces connect

An illustrative flow, not a diagram of a client environment.

  1. 1

    Product interface

    Existing apps, APIs, and user permissions.

  2. 2

    Access and policy

    Authentication, PII rules, and request validation.

  3. 3

    Context retrieval

    Approved data sources and scoped search.

  4. 4

    Model gateway

    Model routing, quotas, and retry controls.

  5. 5

    Quality checks

    Evaluations, citations, and human review.

  6. 6

    Operate safely

    Tracing, feedback, and continuous updates.

The work starts with the dependencies and ends with a system the team can operate.

What's included

Retrieval over your own documents and data

I chunk, embed, and index your content. The model then answers from what you know, with citations back to the source.

Vector search and embedding pipelines in production

Not a notebook. I build a pipeline that re-embeds when data changes, on a vector store sized for your traffic.

Claude or OpenAI-compatible APIs, chosen per use case

Your code talks to one interface, so swapping models is a configuration change. Each task gets the model that earns it. Hosting in an EU region becomes a deployment choice, not a rewrite.

Agents that take real actions, with guardrails

Agents call tools in your systems with scoped permissions. A human approves the steps that matter. Every action the agent takes lands in a log.

Evaluation, so you know when it works

I build a test set from real cases and score it on every change. Quality becomes a number instead of a feeling.

The app and API around the model, not only the prompt

Authentication, billing, rate limits, observability, and the interface. That's the feature your users see and pay for. A prompt in a text box isn't a product.

Where I've done it

Every item here comes from my CV. View CV.

  1. ThriveUp Care, Founder & CEO, 2025 to 2026

    Built AI-powered companion-to-user matching on Claude and OpenAI-compatible SDKs, with a RAG pipeline over vector embeddings in Upstash Vector.

  2. ThriveUp Care, Founder & CEO, 2025 to 2026

    Shipped the product around it: a Next.js 16, React 19, and TypeScript web application with 200+ API endpoints and an Expo / React Native mobile app, versions 1.0 through 1.37 across roughly 3,000 commits, instrumented with Sentry and PostHog.

  3. ThriveUp Care, Founder & CEO, 2025 to 2026

    Provisioned its dev, staging, and production AWS environments in Terraform (ECS, Lambda, AppSync real-time GraphQL), backed by PostgreSQL, Upstash Redis, Clerk authentication, and Stripe Connect payments.

  4. Senior Delivery Engineer, managed cloud provider, 2020 to 2021

    Converted a major airline's legacy Python fare-management codebase into AWS Glue jobs powering real-time fare prediction, cutting processing time by 90%.

  5. Anthropic, 2026

    Claude Certified Architect, Professional.

Tools I reach for

Claude API, OpenAI-compatible SDKs and APIs, RAG pipelines, Vector embeddings (Upstash Vector), PostgreSQL, Redis, TypeScript, Python, Next.js / React, React Native, Node.js, AWS Lambda, ECS, and AppSync, Sentry, PostHog.

Common questions

Which language models do you build on?
Claude and OpenAI-compatible APIs, behind one interface in your code. That makes swapping models a configuration change. I'm a Claude Certified Architect at the Professional level.
Can our customer data stay in the EU?
Yes. In the designs I ship, hosting in an EU region is a deployment choice. Retrieval pipelines run over your own data, in your own accounts.
What is retrieval-augmented generation, and do we need it?
RAG puts your own documents and data in front of the model at question time, with citations back to the source. The model answers from what you know, not only from its training data. Whether a team needs it comes down to one variable: do the answers depend on its own content? If a well-written prompt already does the job, RAG adds cost without much gain. So it depends.
How do we know the AI feature works before it goes live?
I build an evaluation set from real cases and score it on every change. Quality becomes a number before anyone outside the team sees the feature.

Let's talk.

A 30-minute call, no pitch. We look at your current setup, your stage, and the thing that's bothering you about it. I give a straight opinion on what to change, what to leave alone, and whether the problem is the one it looks like. What's the one thing in your stack you'd fix tomorrow?