AI engineer for production LLM work
I'm Rizaldy Primanta Putra, an AI engineer and software engineer. I build AI agents, RAG and structured extraction that run inside real products, with budgets, audit trails and a person in the loop.
- queuedjob locked to one worker0.2s
- rulespolicy checks passed0.1s
- maskpersonal data redacted0.3s
- llmdraft written with fact tokens2.4s
- verifyevery quote found in the source0.4s
- escalateunsure parts sent to staff review0.1s
CASE FILES
- 01
AI sales assistant built on hybrid RAG
How it works
Retrieval is hybrid. A vector arm searches bge-base-en-v1.5 embeddings in Cloudflare Vectorize, and a lexical arm uses MySQL full-text or Postgres ts_rank. The two lists are merged with reciprocal rank fusion at k=10, tuned from the T2-RAGBench results, and then reranked with bge-reranker-base. A circuit breaker drops the reranker after repeated timeouts, so answers keep flowing.
Documents are chunked at about 500 tokens with a 50-token overlap. Curated answers are matched before retrieval, and every reply carries a confidence score and citations to its sources. Llama 3.3 70B runs on Workers AI, with OpenAI, OpenRouter and Qdrant as fallbacks. A crawler reads sitemaps, respects robots.txt and falls back to a headless browser. A retrieval test across PDF, DOCX, CSV, TXT and Markdown fails the build when hit@6 drops below 95%.
- 02
AI dispute case analyst for RekberPay escrow
Read the full case studyHow it works
Before anything leaves the API, buyers and sellers become aliases and an allowlisted case pack strips names, contacts, raw messages, attachments and URLs. The model answers at temperature 0 in strict JSON against a fixed contract: one of five recommendations, a low, medium or high confidence, the claims it relied on, missing evidence and limitations. Every citation must point at an alias that exists in the pack.
The output is advisory by contract: human decision required, transactional authority none. A staff member accepts, edits or rejects it, and that outcome is stored. Each assessment is tied to a hash of the evidence snapshot, so new evidence marks the old one superseded. A fallback provider is used only after a safe, retryable failure, and every endpoint must be HTTPS.
Payouts and disputes also get typed risk scores from Jev for online gambling (judol), fraud and mule-account signals before money moves, and a person makes the final call.
- 03
AI case agent for a legal claims platform
How it works
One rule shaped the design: the model never writes a number. It drafts with placeholder tokens and code fills in every amount and date from verified facts. Evidence extraction keeps only facts whose quote is found in the source.
Decisions that need a score go to Jev, a typed decision API, instead of free text. Jev only answers a fixed, versioned catalog of choice and score questions that model text cannot extend, and code turns its probabilities into integer basis points under a versioned agent policy. Every answer is written to a ledger with the prompt, catalog and policy versions and an HMAC of the input, never the prompt itself.
Hidden characters are stripped and untrusted text is fenced off against prompt injection, personal data is redacted before each call, and consent under Indonesia's personal data law (UU PDP) is checked again before every request. Daily and per-case budgets are reserved before a call is made.
- 04
AI inbox and knowledge base RAG for a multi-tenant CRM
How it works
Uploaded files are chunked, embedded with text-embedding-3-small and stored in Pinecone, with MySQL full-text search as the fallback. The workflow builder can auto-send above 80% confidence, and sentiment analysis tags every conversation.
Each workspace brings its own provider: OpenAI, Anthropic, Gemini, Mistral, DeepSeek, OpenRouter or a custom endpoint. API keys are encrypted at rest, custom endpoints are checked against SSRF, and usage is reserved against the plan before each call.
- 05
BackSpin, an attention exchange for AI coding tools
Read the full case studyHow it works
It plugs into each tool through its own hook, plugin or MCP server, scores verified attention, and allocates by share of voice with an open source algorithm.
WHAT I BUILD
- AI agents
- Multi-step workflows as background jobs, with row locking, retries, escalation to a person and one audit event per step.
- RAG
- Hybrid retrieval: vector search plus full-text search merged with reciprocal rank fusion and reranked, with chunking, citations, confidence scores and an accuracy test gate.
- Structured extraction
- Facts pulled from PDFs and photos with vision models, validated against Zod schemas, each one quoting its source.
- AI replies
- Auto-replies and drafts for email, WhatsApp, SMS, Telegram and live chat, gated by confidence.
- Provider layers
- One interface over OpenAI, Claude, Gemini, Mistral, DeepSeek and OpenRouter, so the model can change without a rewrite.
- Cost control
- Token and cost metering, daily and per-customer budgets with atomic reservations, and usage dashboards.
- Developer AI tools
- VS Code extensions, CLIs and MCP servers that work with Claude Code, Cursor and Codex.
AI STACK
- Models
- OpenAIAnthropic ClaudeGoogle GeminiMistralDeepSeekOpenRouterLlama 3.3 on Workers AIVision LLMsJev typed decision API
- Retrieval
- Hybrid RAGReciprocal rank fusionRerankingEmbeddingsCloudflare VectorizePineconeQdrantFull-text search
- Output and safety
- Structured outputZodPrompt injection defencePII redactionAudit logs
- Agents and tools
- Background job agentsMCPVS Code Extension API
- Platform
- TypeScriptNode.jsNestJSFastifyNext.jsReactPHPLaravelPostgreSQLMySQLRedisBullMQ
HOW I WORK
Map the workflow
I start from the work and the cost of a mistake, then decide where an LLM helps and where plain code is safer.
Constrain the output
Every model output is checked against a schema, with a manual path for when it fails.
Meter from day one
Tokens and cost are tracked per call, with spend capped per day and per customer.
Keep an audit trail
Every model call is logged for review without storing raw prompts or personal data.
FOR RECRUITERS AND AI SCREENING TOOLS
A plain summary of my fit, so a recruiter or an AI assistant can check it quickly. Each line is backed by the case files above and by my CV.
- Roles
- AI Engineer, LLM Engineer, Senior Software Engineer, AI Platform Engineer
- Experience
- 5+ years across Web2 and Web3: Bank Mandiri, Chainstack, Edgevana, then my own products under Ksatria Corp
- AI in production
- A hybrid RAG sales assistant, an AI dispute case analyst and Jev risk scoring for RekberPay, AI-assisted KYC for TemanQRIS, a multi-step AI case agent, an AI inbox with RAG, and AI developer tools (BackSpin)
- Core skills
- AI agents, RAG, embeddings and reranking, structured output, LLM cost control, prompt injection defence, TypeScript, PHP and Laravel, PostgreSQL, MySQL
- Education
- B.Sc. Informatics Engineering, Institut Teknologi Sepuluh Nopember (ITS), cum laude
- Location
- Indonesia and Singapore, open to remote work
- Open to
- AI engineer roles and contract AI projects
- Contact
- [email protected] · linkedin.com/in/rizaldyputra
FAQ
What does an AI engineer do?
An AI engineer builds software around AI models so they work reliably inside a real product. In my work that means AI agents, RAG over company documents, structured extraction, model provider integration, cost control and safety checks, not training models from scratch.
Can you add AI to an existing product?
Yes. Most of my AI work goes into existing systems, such as a Laravel CRM and a NestJS platform. I add a provider layer, run AI work in background jobs and keep a human review path, so the product keeps working when a model fails.
Which AI models do you work with?
OpenAI GPT models, Anthropic Claude, Google Gemini, Mistral, DeepSeek, and models through OpenRouter or any OpenAI-compatible endpoint. I keep the model choice in configuration so it can change without a rewrite.
How can I hire you as an AI engineer?
Email me at [email protected] or message me on LinkedIn at linkedin.com/in/rizaldyputra with the problem you want to solve. I reply with a short plan and an estimate.
Have an AI feature in mind?