← Back to posts

Shipping at Inference Speed: Building KhmerJob.tech

• 6 min read
Engineering Career AI

I’ve been a software engineer for about six years now. I know how systems work, I understand architecture decisions, and I can debug my way out of most rabbit holes. So when I say I used AI to help build this project, I want to be clear: I was driving. AI was the co-pilot.

That distinction matters to me.

The Backstory

Before I was a software engineer, I was a university student in Cambodia trying to find work. I remember the frustration of navigating scattered job listings, outdated postings, and platforms that weren’t built with the local job market in mind. That experience stuck with me.

So when I decided to build my first fully shipped side project, the answer was obvious. I’d build something I actually understood from both sides—the job seeker’s side and the technical side. The result is khmerjob.tech, a job listing platform focused on the Cambodian job market.

It’s not my most ambitious idea. I have bigger things in mind, something global eventually. But I’ve seen too many developers get lost in the dream and never ship anything. I wanted to finish something real. Something live. Something people can actually use.

So I started there.

The Stack

  • Backend: Python with FastAPI.
  • Frontend: Next.js.

Job listings are currently being scraped from local Cambodian job sites, and I’m actively working on the next layer: allowing employers to post directly and job seekers to apply, all within the platform. Both sides of the marketplace. That’s the goal.

Nothing exotic about the stack. I chose what I knew would be solid, scalable, and easy to reason about. Six years in the industry teaches you that boring and reliable beats clever and fragile every time.

How I Used AI

Here’s the honest breakdown. I used Cursor (with the GitHub Student subscription) for the backend work, and Antigravity for the frontend. Both are AI-assisted coding environments, and together they covered a lot of ground.

What I found interesting is how they complemented each other. Cursor is excellent for backend logic. It understands context across files, follows your codebase patterns, and handles the kind of multi-step reasoning that backend work often demands. But it has usage limits, and if you’re building fast, you’ll hit them. Antigravity’s free tier filled that gap on the frontend side. When Cursor was throttling, I’d switch over and keep momentum.

The result? The project moved forward without stalling. And without spending a single dollar on tooling.

Every function, every API route, every scraping logic—I read it, questioned it, and when it was wrong (and sometimes it was), I knew why and fixed it. That’s the thing about having real engineering experience. You use AI the way a senior engineer uses Stack Overflow: as a reference, a starting point, a rubber duck that writes back.

The Infrastructure Play

This is the part I’m genuinely proud of from a resourcefulness standpoint.

Hosting is on DigitalOcean, through the GitHub Student Developer Pack. That’s real cloud infrastructure, droplets, proper deployment, a setup that can actually serve production traffic, at zero cost while I’m a student.

For the domain, I used the .tech domain benefit from the GitHub Student Pack. So khmerjob.tech isn’t just a project URL slapped together. It’s a professional domain that I own, that looks legitimate, and that cost me nothing.

And for deployment workflow, I set up GitHub Actions for CI/CD. Every push to main triggers an automated pipeline. Tests run, the build compiles, and the latest version lands on the server without me manually SSHing in and running commands. It sounds like a small thing, but it’s not. Once that was in place, shipping a fix or a new feature became a single git push. That velocity matters when you’re building solo.

  • Total infrastructure cost: $0.
  • Total tooling cost: $0.
  • Total shipped: One real, live, working product with an automated deployment pipeline.

That’s what the GitHub Student Developer Pack actually is if you know how to use it. Not just free stuff, it’s a runway. It’s the difference between having an idea and having a deployed product with a domain that you can show to anyone.

Why This Feels Different

I’ve built plenty of things in six years. Internal tools, features inside larger products, proof-of-concepts that never saw the light of day. But shipping a full product—scraper, backend API, frontend UI, hosting, domain, automated deployments, the whole thing—as a solo project from zero to live, with AI genuinely accelerating the process? That felt different.

AI compressed the timeline on the parts that would have slowed me down: boilerplate, repetitive patterns, looking up syntax I half-remembered. The harder parts—the architecture decisions, the scraping logic, the data modeling, the deployment configuration—those still needed a real engineer behind the wheel. AI just made the whole ride faster.

What’s Next

khmerjob.tech is live, but it’s not done. The employer posting and job seeker application flow is actively in progress. I want the platform to be genuinely useful, not just a scraper wrapper, but a real two-sided marketplace for the Cambodian job market.

And beyond that, yes, I do want to build something global. This is the first step. Prove I can ship. Prove I can build a product end to end. Then scale the ambition.

One completed thing beats ten half-finished ideas. Always.

You can check out the site at khmerjob.tech, and if you’re in Cambodia or hiring for roles there, keep an eye on it.

Built with FastAPI, Next.js, Cursor, Antigravity, GitHub Actions, DigitalOcean, and the GitHub Student Developer Pack.