A digital portfolio · OPE

Ope Buhali

I build software, automate boring things, and occasionally figure out what went wrong.

Systems, automation, and things I've built.

Scroll to begin
02About

I work on problems that don't have obvious solutions.

I graduated from Zhejiang University of Technology with a degree in Software Engineering. Most of my work is building software, automating repetitive tasks, and debugging things that break.

I built a product matching system using CLIP and FAISS to catch duplicate SKUs before they mess up the catalog. I automated receipt processing for the finance team so they don't have to type everything by hand. I built an OCR system that reads shipping receipts from different couriers without needing a format for each one. Right now I'm experimenting with local AI models and building tools I actually want to use.

When I'm not coding, I play the piano. It's the one thing that clears my head when everything else feels like too much.

OPEAbout Me
03Work

Things I've built along the way.

Record
IT & RND
Awan Media Indonesia

I build systems for real problems. Automate repetitive work, connect scattered processes, and debug things when they break.

01 December 2025 - Present
04Projects
Problem

The catalog kept filling up with duplicate products. Same item, different photo, new SKU. It made everything harder to manage.

Approach

I used CLIP to embed product images and FAISS to search for similar ones across the catalog. Added OCR for spec sheets so text could also be matched. When a new product comes in, the system flags potential duplicates for admin review before creating a SKU.

Result

Duplicates get caught early instead of cluttering the catalog later. The system stays out of the way until it finds something worth checking.

System architecture and data flow
System architecture and data flow
Technology
PythonCLIPFAISSOCRimage similarityproduct catalogmachine learning
Problem

Finance staff had to read transfer receipts from images, type everything into Google Sheets, then match it all against bank mutations at month end. Doing this for hundreds of receipts every month was exhausting.

Approach

Split it into two n8n workflows. The first takes uploads, hashes each file, stores it in Google Drive, and queues it in Google Sheets. The second runs on a schedule and reads each receipt with Tesseract first, then OpenSpace OCR with per-bank parsers. An AI agent is the last resort for blurry receipts, and its results are flagged for manual review.

Result

A task that used to take hours now finishes in minutes. No more daily overtime just to keep up with receipts. Some blurry images still need manual review, but the repetitive typing is gone.

Two n8n workflows: intake and processing
Two n8n workflows: intake and processing
Technology
n8nOCRhashingGoogle SheetsGoogle Driveautomationvalidation
Problem

We get thousands of shipping receipts daily. Each courier uses a different format. Reading and matching them all by hand is exhausting.

Approach

Built with n8n on a 'you build, you use' approach: one template per courier, added only when needed. Text comes from the PDF, with Tesseract as fallback for scans. A template scorer picks the courier by keywords and receipt-number patterns, and the highest score decides the route. Each route has its own isolated parser that handles slash, dash and pipe item formats, with AI as fallback for anything unknown.

Result

Over 35,000 receipts processed so far with zero read errors. Users don't pick a courier. Everything goes through one input and the system figures out the route.

One input, template scoring, isolated parser per courier
One input, template scoring, isolated parser per courier
Technology
OCRimage processingautomationstructured data extractionn8n
05Skills
01 / 04

Engineering

JavaScript / TypeScript · React / Next.js · Python · Node.js

What I use and what I build.

Tools, techniques, and things I've picked up along the way.

06Notes
06 / Notes

Record

Ideas, thoughts, and lessons from the process.

A place for things I want to remember.

Field notesN.01
draft

Automation is easy until something goes wrong

Most workflows look simple on the happy path. The real work starts when the input is different, the OCR fails, or someone does something I did not expect.

Filed in the journal
OPE / 0601 / 05
07Contact

Correspondence

Let's talk.

If you have something to build, discuss, or need help with a problem.