query

Who is Rama Raihan?

Full-stack developer in Salatiga, Indonesia. Lately I build AI apps. This page answers the question above the way a RAG app would.

  1. tokens

    The tokenizer of qwen3-embedding:0.6b cuts the question into 7 tokens. Neither of my names is in its vocabulary, so each one comes out in two pieces.

    1. Who15191
    2. ·is374
    3. ·R431
    4. ama3029
    5. ·Rai86434
    6. han9917
    7. ?30
  2. embed

    Then the model itself, running on my laptop through Ollama, turns those tokens into 1,024 numbers. Here are the first 12.

    [-0.0218, 0.0974, 0.0020, -0.0023, -0.0283, -0.0546, -0.0767, 0.0256, 0.0455, 0.0271, 0.0104, 0.0440, … 1,012 more]

  3. retrieve

    Those numbers get compared with 45 short notes I wrote about myself and my work. The five closest come back.

top 5 of 45 · cosine similarity

  1. 1about.mdsimilarity 0.514

    I'm Rama Raihan, a full-stack developer from Salatiga, a small city in the hills of Central Java, Indonesia. I build and run web apps in Laravel and Next.js.

  2. 2ralaexsimilarity 0.439

    ralaex is the household finance app my wife and I log our spending in. Budgets with alerts, receipt photos, charts and exports.

  3. 3now.mdsimilarity 0.431

    Lately I've been building AI apps: RAG, agents, chatbots and workflow automation.

  4. 4stack/midtranssimilarity 0.408

    Midtrans handles checkout and payments on the Indonesian projects.

  5. 5work.mdsimilarity 0.371

    I work from Salatiga on UTC+7, and I'm happy to work remotely with a team anywhere.

tools

What I work with

Client work runs on the web stack. My recent projects use the AI tools.

  • AI and LLMs:

    • OpenAI
    • Gemini
    • Claude
    • Ollama
    • LangChain
    • LangGraph
    • LlamaIndex
    • Vercel AI SDK
    • Prism
    • MCP

    RAG, agents with tool calling, chatbots and workflow automation. Ollama when it should run locally and cost nothing.

  • Frontend:

    • Next.js
    • React
    • TypeScript
    • Tailwind CSS
    • Vite

    Most of my apps run on Next.js. I write everything in TypeScript now.

  • Backend:

    • Laravel
    • PHP
    • Node.js
    • Python
    • FastAPI
    • Hono
    • Midtrans

    Laravel for APIs, queues and auth. Python and FastAPI on the AI side. Midtrans for payments on Indonesian projects.

  • Data:

    • PostgreSQL
    • pgvector
    • MySQL
    • MongoDB
    • Drizzle

    Postgres is my default, and pgvector keeps the embeddings in the same database as everything else.

  • Shipping:

    • Docker
    • GitHub Actions
    • Coolify
    • Git
    • PHPUnit

    Docker so the app behaves the same on my laptop as on the server. Coolify deploys it to my own VPS.

work

Eight AI apps I built

Most run on a local model through Ollama by default, so you can try them without an API key.

RAG

docs-rag-assistant

Chat with your own PDFs and docs. Every answer cites the page it came from.

  1. upload pdf
  2. chunk + embed
  3. pgvector search
  4. answer with page cite
  • Python
  • FastAPI
  • LlamaIndex
  • pgvector
Read the code for docs-rag-assistant

Agent

research-agent

A LangGraph agent that plans the research, waits for you to approve the plan, then searches the web and writes a cited report.

  1. plan
  2. you approve
  3. web search
  4. cited report
  • Python
  • LangGraph
  • Postgres
Read the code for research-agent

Chatbot

shop-support-bot

Support chatbot for a small coffee bean shop. It answers FAQ and checks orders through tool calls, on the web and in Telegram.

  1. web or telegram
  2. faq search / order lookup
  3. answer
  • Next.js
  • Vercel AI SDK
  • Drizzle
  • pgvector
Read the code for shop-support-bot

Gateway

llm-gateway

One OpenAI-compatible endpoint in front of OpenAI, Gemini, Anthropic and Ollama, with fallback, retries, rate limits and cost logs.

  1. request
  2. rate limit
  3. provider
  4. retry / fallback
  5. cost log
  • TypeScript
  • Hono
  • Postgres
Read the code for llm-gateway

Extraction

invoice-flow

Laravel app that pulls invoice data out with an LLM, checks the math, and holds it for review and approval before export.

  1. upload
  2. llm extract
  3. math check
  4. review + approve
  5. export / webhook
  • Laravel 12
  • Prism
  • Queues
  • Postgres
Read the code for invoice-flow

Text to SQL

text-to-sql-chat

Ask a sales database questions in English or Bahasa Indonesia, with guardrails on the generated SQL. Also ships an MCP server.

  1. question
  2. generate sql
  3. guardrails
  4. run + answer
  • Python
  • LangChain
  • Streamlit
  • MCP
Read the code for text-to-sql-chat

Automation

issue-triage-action

GitHub Action that labels new issues, flags likely duplicates (TF-IDF) and leaves one comment. Defaults to Gemini's free tier, and any OpenAI-compatible endpoint works too, Ollama included.

  1. new issue
  2. labels
  3. duplicate check
  4. comment
  • TypeScript
  • GitHub Actions
  • Gemini
  • zod
Read the code for issue-triage-action

Local models

local-ai-coding-setup

My fully local AI coding setup on a laptop with a 6 GB RTX 3060: a coding agent in the terminal and autocomplete in VS Code. No subscription and no API bill.

  1. llama-server + ollama
  2. moe experts split gpu / ram
  3. pi agent behind a permission gate
  • llama.cpp
  • Ollama
  • Pi
  • PowerShell
Read the code for local-ai-coding-setup

Everything else, including the commits, is on GitHub.

github.com/ramaraihan12

Other things I've built

  • project-clipper

    Python pipeline I run for my own channel. It turns a long video into vertical 9:16 clips: faster-whisper transcribes, Gemini picks the highlights, OpenCV tracks faces for the crop and ffmpeg burns in subtitles. The code is private for now.

    • Python
    • faster-whisper
    • Gemini
    • OpenCV
    • ffmpeg
  • ralaex on GitHub

    Household finance PWA my wife and I log our spending in from our phones. Budgets with alerts, receipt photos, charts, and PDF and Excel export.

    • Next.js
    • TypeScript
    • Supabase
    • Recharts
  • chaBubbleTwitch on GitHub

    Free Twitch chat overlay for OBS that shows chat as bubbles, with emotes and username colors. Connects to Twitch IRC anonymously, so no login or token.

    • HTML
    • JavaScript
    • tmi.js

Most of my client work lives in private repos, so it isn't listed here.

answer · from the 5 notes above

The answer

Rama Raihan in a black tuxedo and bow tieRama Raihan in a black tuxedo and bow tie, standing in a garden

Rama Raihan is a full-stack developer from Salatiga, Central Java. He builds and runs web apps in Laravel and Next.js1. Lately he's been building AI apps: RAG, agents, chatbots and workflow automation3. He has built Midtrans payments into Indonesian projects4, and he made the finance app he and his wife track their spending in2. He works on UTC+7 and is happy to join a remote team anywhere5.

  1. 1about.md0.514
  2. 2ralaex0.439
  3. 3now.md0.431
  4. 4stack/midtrans0.408
  5. 5work.md0.371

The tokens, numbers and scores up top are real, from a model on my laptop. This answer isn't generated. I wrote it from those five notes. All 45 notes

follow-up

Ask me something else

Want to talk about a project, AI or plain web? Email is the best way to reach me.

ramaraihan97@gmail.com
Email meGitHub

Salatiga, UTC+7