↑ Live site. Click my photo there and Pao, my 3D AI assistant, pops out. Ask it anything about my work, or book a call with it.
What I do · Featured work · Meet Pao · How I work · Stack · Numbers · This repo
I'm Les John Paul Oliver, an AI Solutions Architect & Automation Engineer based in Urdaneta City, Pangasinan, Philippines, with 10 years of shipping production systems as a Software Engineer for an electric utility that serves 250,000+ member-consumers. I don't build LLMs. I take Claude and other models and wire them into the work a business already does: answering customers, chasing leads, closing the books, and writing the reports nobody wants to write.
|
📈 More revenue |
💸 Lower costs |
⏱️ Hours back |
Team of one. Every project below was scoped, designed, built, and shipped by me alone.
Every card opens a full case study: the problem, the architecture, and what changed. Screens use demo data, and sensitive details are blurred.
Pao answers questions about my work, checks my live calendar, and books calls. It runs on my own Claude API credits, so I built it to be hard to abuse and cheap to run (about $0.0002 per message with prompt caching).
flowchart LR
V([Visitor]) -->|message ≤ 500 chars| B{BotID +<br/>rate limits}
B -->|bot or over limit| X([Polite refusal])
B -->|ok| S{Daily budget<br/>reservation}
S -->|budget spent| X
S -->|ok| C[Claude Haiku<br/>grounded on portfolio data only]
C -->|tool use| T1[Cal.com<br/>slots and booking]
C -->|tool use| T2[Lead capture]
T2 --> N[Email + Telegram<br/>notification]
C --> R([Streamed answer<br/>+ tap-to-reply chips])
Guardrails: answers only from verified portfolio facts · ignores pasted code and prompt injection · history kept server-side in Redis · 40 messages/hour and 100/day per IP · 20 turns per conversation · atomic daily spend cap.
| Step | What happens | |
|---|---|---|
| 01 | Map the problem | A 30-minute call to find the workflow that costs you the most time or money. |
| 02 | Prototype fast | A working version early, so you see results before committing to the full build. |
| 03 | Ship & hand over | Production deployment, documentation, and support options once it's live. |
| consumers served by systems I built |
production systems shipped as architect |
attendees checked in across 5 venues |
Azure hybrid migration, sole architect |
| SQL Server data run as DBA |
case studies published |
staff on the ITSM platform, 12 offices |
in production, promoted 3× |
This repo is my GitHub profile and the source of lesjohnpauloliver.dev.
| Piece | How it's built |
|---|---|
| App | Next.js 16 (App Router, Turbopack), React 19, Tailwind 4 |
| Motion | GSAP scroll reveals and CSS-only "AI ops" scenes that play only while on screen and respect reduced motion |
| 3D Pao | Procedural Three.js model (8.7K triangles, ~11 KB gzip) on React Three Fiber, loaded only when you meet it |
| Case studies | 21 statically generated /work/[slug] pages with CreativeWork JSON-LD and a sitemap |
| Chat | Anthropic SDK with prompt caching, Upstash Redis, Vercel BotID, Cal.com v2, Resend, Telegram |
| Hosting | Vercel (Fluid Compute) with Web Analytics and Speed Insights |
Run it locally
git clone https://github.com/lesjohnpaul/lesjohnpaul.git
cd lesjohnpaul
npm install
vercel env pull .env.local # or create .env.local with the variables below
npm run dev # http://localhost:3000| Variable | Used for |
|---|---|
ANTHROPIC_API_KEY |
Pao chat (Claude) |
CHAT_DAILY_BUDGET_USD |
Daily spend cap for the chat |
KV_REST_API_URL, KV_REST_API_TOKEN |
Upstash Redis: rate limits, history, budget |
CAL_API_KEY, CAL_EVENT_TYPE_ID |
Live slots and booking |
RESEND_API_KEY, RESEND_FROM |
Contact form and lead emails |
TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID |
Instant lead alerts |
The site builds and renders without these. Only chat, booking, and email need them.
Have a process that eats your team's week? Tell Pao about it or email me.









