Latest post·I built a chatbot that refuses to make things up
hello, I'm —

Bikash Lama

Eight years turning ideas into reliable, scalable products — for teams and clients alike. Full-stack on Rails, Python, and Vue.js, with AWS infrastructure automated through Terraform. Lately: shipping production AI tools alongside leading delivery teams.

8+
years building
4
companies
東京
based in Tokyo
ClaudeOpenAI APIRAGLLM harnessCursorPythonGoJavaScriptRuby on RailsVue.jsAWSTerraformLambdaAngularJSWebRTCWebSocketPubSubRPCRESTJWTSQLCI/CDGitDockerCloudWatchStripeAgileAI / LLMs
grab & spin me!
everything I build with ↻
SCROLL

I'm a full-stack engineer and project lead in Tokyo, shipping with Ruby on Rails, Python & Vue.js on AWS infrastructure I automate with Terraform. Lately I've been leaning into AI-augmented development — Claude and Cursor in the daily loop, plus production tools built on Claude's API so a small team ships like a big one.

— eight years in. The fun part is still ahead.

What I work with

Languages
PythonGoJavaScriptRubySQL
Frameworks
Ruby on RailsVue.jsVuexAngularJS
Cloud & Infra
AWSTerraformLambdaCloudWatch
Realtime & APIs
WebSocketPubSub / RPCRESTJWT
Practices
CI/CDGitTeamCityAgile
AI
ClaudeOpenAI APICursorRAGLLM harnessPrompt Eng.pgvector

Things I've built

Client SaaS · 2 years · ongoingLead Engineer · Cloco

Restaurant Management SaaS

Grew a small MVP into a multi-tenant SaaS over two years of continuous delivery — now integrated into an ecosystem where the same restaurant is discoverable and reservable across collaborating partner platforms.

WHAT I BUILT
  • Google reservation flow + cross-platform listing — one restaurant is bookable from any partner in the ecosystem.
  • AI-in-the-loop optimization: used Claude and Cursor to surface API bottlenecks and tighten hot-path UI renders.
  • Multi-OEM architecture deployed via Terraform with a dev → staging → production CI/CD gate.
THE CHALLENGE

Reservations don't just hit our DB — they coordinate across partner systems, so consistency and latency are everyone's problem at once.

IMPACT

Two-year client retention; scope grew from MVP to multi-OEM ecosystem product, with team standards keeping quality and delivery in lockstep as headcount scaled.

AI ToolingRuby on RailsVue.jsAWSTerraform
Internal tool · 2026Lead Engineer · Cloco

AI document translator (JP → EN)

An internal tool that translates any Japanese document — Excel, Word, drawio diagrams — to English via Claude on the fly.

WHAT I BUILT
  • Format-preserving extraction across xlsx, docx, drawio — formulas, styles, and shape positions stay intact; only the human-readable text is replaced.
  • Translation cache keyed on normalized source text + target language: identical strings are never paid for twice.
  • Tiered model routing — bulk and low-complexity content goes through cheaper models; technical or mixed-domain text routes to the larger one.
THE CHALLENGE

Two engineering problems at once. (1) Translate only the human-readable text — Excel formulas, Word styles, and drawio layouts must survive untouched, so we built format-aware parsers that round-trip cleanly back to the source structure. (2) Keep the Claude bill bounded under heavy use — made cost a routing decision: every chunk hits the cache first, then routes to the cheapest model that can handle it.

IMPACT

In daily use across the team for spec docs, customer materials, and architecture diagrams; outputs preserve the original template so they're ready to send, and per-document cost stays bounded thanks to cache hits + model tiering.

AI ToolingClaude APICaching
In-house product · 2020—2022Full-stack Engineer · SPINSHELL

Live commerce & consultation platform

A WebRTC-based real-time consultation product that lets customers talk live to agents across sectors — banking advisory, telemedicine, retail product demos. COVID pushed demand sharply, forcing a hard-deadline reengineering of the thin MVP into a production-grade architecture without slowing the delivery cadence.

WHAT I BUILT
  • Real-time video consultation over WebRTC + Twilio, shipped across banking advisors, online clinics, and apparel retail under one product surface.
  • Re-engineered the MVP skeleton from the ground up as customer load grew — moved from 'demo works' to '100% uptime SLA' shape.
  • Observability pipeline tuned for live-call triage: structured logs make it possible to chase a dropped call back to the exact request that failed.
THE CHALLENGE

A real-time call is the worst place to lose a request mid-flight. Designed a version-retention deploy strategy so every release leaves the previous build live for an interval — in-flight calls finish on the version they started on, no dropped sessions.

IMPACT

Sustained near-100% availability across multi-sector clients over a 2-year run, with zero-downtime releases that never interrupted active sessions.

PythonTwilioWebRTCVue.jsAWS
AI experiments

Things I've built · AI experiments

Personal projects — hands-on learning, not client work. Deep-dives on the blog.

Personal project · 2026Solo build · learning

Internal AI assistant — RAG with citation verification

A chatbot for internal document Q&A. The LLM writes the answer; my code checks every citation before the user sees it. Ungrounded answers get replaced with a refusal server-side.

WHAT I BUILT
  • Streamed answers get replaced with a refusal if a parser can't tie every [N] citation to a real retrieved chunk.
  • Refusal short-circuits before the LLM even runs when retrieval returns nothing above threshold — no tokens spent, no hallucinated citations.
  • Per-user daily token caps enforced in application code. Every OpenAI call writes cost to a `usage_events` table for the admin dashboard.
THE CHALLENGE

Naive RAG lets the LLM narrate whatever it wants and hopes the citations are real. I wanted the opposite: the citation list is a set my code owns, the LLM can't manipulate it, and refusal is structural — not a prompt-cooperated 'please say I don't know'.

IMPACT

Deployed on Vercel + Neon at ai-assistant.bikashlama.com. Cost is bounded per user per day; refusals happen before an LLM call whenever retrieval fails; the LLM has no way to lie about its sources without being caught server-side.

Next.js 15OpenAI APIpgvectorPostgresTypeScript
Read the write-up →
Personal project · 2026Solo build · learning

LLM harness pattern — eight rules for keeping AI honest

A Python script that drives a real browser via plain-English instructions. First draft was 80 lines and lied about everything. Rebuilding it produced a reusable pattern I now apply to every piece of LLM-touching code.

WHAT I BUILT
  • Every tool call is validated by code; success is proven by re-reading state, not by the LLM's claim.
  • Cost and iteration ceilings live in the harness — the LLM can't loop indefinitely on a broken action.
  • Refusals short-circuit in code, not by prompt persuasion. Same pattern powers the RAG assistant's citation check.
THE CHALLENGE

The first working demo felt magical and quietly betrayed me the next day. It claimed successes it hadn't done, upvoted the wrong story, burned 30 calls looping on variations of the same bad action, and once replied in Nepali because I typed transliterated Nepali. Every failure pointed at the same question: how much can I trust the LLM's report of what it did?

IMPACT

Eight design rules that now govern every LLM-touching piece of code I write, including the RAG assistant above. Written up as a reusable pattern in the blog post.

PythonClaude APIBrowser automationLLM harness
Read the write-up →

Where I've worked

Senior Software Engineer · Project Lead

Nov 2022 — Present
Cloco Inc.Tokyo, Japan · Hybrid
  • Full-stack engineering on the Restaurant Management SaaS — Ruby on Rails backend, Vue.js + Vuex frontend, AWS infrastructure — owning features end-to-end from data model and API design through UI implementation, testing, and deploy.
  • Coordinated a 20-person team (engineers + QA) on the multi-tenant client SaaS — owning sprint cadence, release planning, feature scope, and the cross-partner integrations (Google reservation flow, cross-platform listing) that make the ecosystem work.
  • Drove team-wide AI-augmented development — integrated Claude and Cursor into the daily workflow and codified a shared code skeleton and conventions, so velocity grows without compromising review rigor or post-incident traceability.
  • Built an internal AI document translator (Claude API) that turns Japanese xlsx / docx / drawio files into English while preserving formulas, styles, and shape layouts — cache + tiered model routing keep cost bounded under heavy use.
  • Standardized multi-tenant SaaS deploys with Terraform — dev, staging, and production go through the same modules; cutovers are debuggable and reversible.
AI ToolingClaude APIRuby on RailsPythonVue.jsAWSTerraformLeadership

Full Stack Engineer

Sep 2020 — Oct 2022
SPINSHELL INC.Tokyo, Japan
  • Led the rebuild of an in-house live commerce & consultation platform (WebRTC + Twilio) from MVP to production-grade as COVID drove demand sharply across banking, telemedicine, and apparel retail.
  • Designed a version-retention deploy strategy that lets releases ship without dropping in-flight video calls — sustained near-100% availability across multi-sector clients over a 2-year run.
  • Built observability tuned for live-call triage; integrated Stripe/PayPal payment flows and Twilio/WebRTC video infrastructure, powering 10k+ monthly transactions across the product.
  • Designed PubSub/RPC messaging and JWT-secured public REST APIs for partner integrations.
PythonVue.jsAWS LambdaWebRTCTwilioStripeREST

Dispatch Web Engineer

Sep 2019 — Sep 2020
PERSOL Technology Staff Co., Ltd.Tokyo, Japan
  • Dispatched to Rakuten's e-commerce team on a short engagement — built Python pipelines that mined trending Twitter terms and surfaced them as market signals.
  • Output fed product and SEO decisions: which categories were heating up, which keywords to target, which themes the site should lean into.
PythonData AnalysisSQL

Junior Software Developer

2017 — 2019
GBD · E-multitechNepal
  • Two years on an e-commerce product as a junior engineer — shipped bug fixes and feature work under the team lead's direction, learning the day-to-day rhythm of keeping a live product moving.
JavaScriptWebE-commerce

Writing & notes

Education

B

Bachelor In Information Management

Tribhuvan University
2013 — 2017
Information Management
+2

High School

Moonlight Higher Secondary School
2011-2013

Let's build something good together.

Got a question, a project, or just want to swap notes on building with AI? Drop me a line — I read every message.

© 2026 Bikash Lama · Tokyo, JapanBikash