karlbuena.com

§0 Summary

Build less manually. Get more done.

Full-stack software development and business automation for businesses worldwide. I help businesses automate repetitive workflows, connect the software they already use, and build practical internal tools — without the cost of hiring an in-house developer.

Book a conversation (opens in new tab)Email KarlRead the case files

Author
Karl Jose Buena
Role
Full-stack software engineer
Focus
Business automation, integrations and practical AI
Based in
Philippines (UTC+8)
Works with
Clients worldwide, remotely
Availability
Available now for new projects
Updated
2026-10-07

One project. Client names shared with permission.

§1 Selected work

§2 Agentic systems

An agent is software with a probabilistic step in the middle, and most of the work is everything around that step. In CareerOS, a job-hunting agent I'm building, that means interrupts the agent cannot skip, a CV it cannot embellish, and a record of everything it did. The model proposes; code and I decide.

How the job-hunting agent is designed to stop at every decision that is mineA worker runs three LangGraph workflows: a scheduled discovery graph, an application graph started by Apply and a number, and a status-update graph. The discovery graph reads jobs from several sources, normalises and scores them, and uses a model only where judgement is needed. Every state change and checkpoint is stored in Postgres, and approved CVs are stored in Google Drive with the file id, revision and checksum pinned. At each consequential step the worker stops and waits for me: to review a tailored CV, to answer a question it cannot answer truthfully, and to approve the final application. Only after a recorded approval does it submit the employer's form. The foundations, meaning the database, sign-in and status rules, are built; the graphs are designed and not yet built.discoverstateJob sourcesadaptersWorkerLangGraphPostgresstate, logHUMANYouJob formPlaywrightDriveCV pins
How the job-hunting agent is designed to stop at every decision that is mineA worker runs three LangGraph workflows: a scheduled discovery graph, an application graph started by Apply and a number, and a status-update graph. The discovery graph reads jobs from several sources, normalises and scores them, and uses a model only where judgement is needed. Every state change and checkpoint is stored in Postgres, and approved CVs are stored in Google Drive with the file id, revision and checksum pinned. At each consequential step the worker stops and waits for me: to review a tailored CV, to answer a question it cannot answer truthfully, and to approve the final application. Only after a recorded approval does it submit the employer's form. The foundations, meaning the database, sign-in and status rules, are built; the graphs are designed and not yet built.discoverstateJob sourcesadaptersWorkerLangGraphPostgresstate, logHUMANYouJob formPlaywrightDriveCV pins
Fig. 1The red path is where the agent stops for me: it can find jobs and draft a CV on its own, but it cannot submit until I approve.
  1. Quality over volume. Designed, not built. Jobs from several sources (Adzuna, Remotive, Arbeitnow and JSearch behind a flag) are normalised and deduplicated, and cheap deterministic filters reject clear mismatches before any model is called. A job that has not changed is never evaluated twice, and each score comes with a breakdown I can read.

  2. A model only where judgement is needed. The worker skeleton runs in dev; the graphs are designed. Scoring, deduplication and budgets are plain code. Models handle triage, tailoring and classification at the cheapest tier that works, behind one decision interface, and a budget is checked before every call.

  3. Real state, resumable. Built and deployed in dev. Workflow state, checkpoints and an append-only event log live in one Postgres, and the application's database role cannot update or delete the event tables. Every change writes its event in the same transaction, so the activity view and the notifications can only show work that happened.

  4. Interrupts, not prompts. Designed, not built. Reviewing a tailored CV, answering a question the agent cannot answer truthfully, and the final review are all interrupts, answered from Telegram or the web. The run waits, survives a restart, and resumes when I answer.

  5. One check guards submission. Designed, not built. The submit step raises unless a final approval and an approved CV version are on record. Before that, a validator blocks any CV claim with no matching fact in my profile. A CAPTCHA, an identity check, a video request or an assessment stops the run for me to handle, and none is bypassed.

  6. The approved CV is the CV that is sent. Designed, not built. Drive holds the documents. The file id, revision id and checksum of the approved CV are pinned to the application. If Drive fails, the run stops instead of continuing on a cached copy.

Read the case file

Remote · Philippines, UTC+8

§3 Working together

You don't necessarily need another full-time developer. You may just need the right system built around the way your business already works.

What I'm hired for

  • Custom software

    Build the application or internal tool your business actually needs.

    • Dashboards and admin tools
    • Customer portals
    • Reporting systems
    • APIs and backend systems
  • Workflow automation

    Automate repetitive business processes.

    • Lead and enquiry processing
    • Client onboarding and document collection
    • Notifications and follow-ups
    • Scheduled business processes
  • Software integrations

    Connect the tools your team already uses.

    • CRM and accounting software
    • Email and forms
    • APIs and databases
    • SaaS platforms and cloud services
  • AI-assisted workflows

    Use AI where it creates practical value.

    • Document and email processing
    • Information extraction
    • Classification and routing
    • Internal knowledge assistants

Stack, by layer

Frontend
React, Angular, Svelte, TypeScript, JavaScript
Backend
Node.js, NestJS, Fastify, Python, PHP, REST APIs
Data
PostgreSQL, MongoDB, BigQuery, Redis, Airbyte, dbt
Cloud & infra
AWS, GCP, serverless, infrastructure as code
AI
AI integrations, AI-assisted workflows, agentic systems

How it runs

  1. 01Tell me what's slowing you downA short conversation about the current process. No technical knowledge required.
  2. 02Map the workflowFind where information is entered, copied, checked, emailed or processed by hand.
  3. 03Find the simplest solutionAutomation, integration, AI, custom software, or no change if automation isn't justified.
  4. 04Build and deployA practical solution built around the way the business already works.
  5. 05Remove unnecessary workLess repetitive work, without adding complexity.

§4 Experience

  1. 2026 — now

    Senior Fullstack Engineer · Brightvision (opens in new tab)

    Leading the backend migration of the company's CRM from MongoDB to PostgreSQL.

    Proposed the migration to the business after an initial assessment and a proof of concept.

    TypeScript · PostgreSQL · MongoDB · Prisma · Airbyte · dbt

  2. 2025–2026

    Senior Fullstack Engineer · ConnectOS

    Led development of user interfaces and back-end services.

    Helped define the team's engineering practices.

    TypeScript · SvelteKit · Node.js · PostgreSQL · Docker · Claude Code

  3. 2024–2025

    Fullstack Engineer · Galt Sudoers, Inc

    QA platform modernisation and AI features for TestRail and Xray for Jira.

    Upgraded TestRail's jQuery codebase to a secure version, and worked on AI test-case generation in Xray with LLM APIs.

    JavaScript · React · Node.js · Express · Jira REST API · LLM APIs

  4. 2024–2025

    Platform Engineer · Cover.Tech

    Platform and infrastructure for the teams building Proceso and Coverdata.

    CI/CD and infrastructure as code on GCP, data migration and dashboards, and services for file uploads and scheduled jobs.

    GCP · Pulumi · GitHub Actions · BigQuery · Airbyte · NestJS

  5. 2024

    Senior Full Stack Engineer · Solaire Resort and Casino

    Led front-end development of Casino Marketing's internal CRM.

    Worked with senior engineers and a solutions architect on the back-end service.

    Angular · NestJS · TypeScript · PostgreSQL · Hasura · Kubernetes

  6. 2022–2023

    Full Stack Engineer · ProSource

    Built product features in a cross-functional team, from user stories to production.

    Helped product management scope new product ideas.

    TypeScript · React · Next.js · AWS · Auth0 · Datadog

  7. 2020–2022

    Full Stack Engineer · Firstmac Financial Services

    Built and supported the company's loan application software.

    Led requirements and design work, and mentored other developers on the team.

    Node.js · Angular · MongoDB · AWS

  8. 2017–2020

    Full Stack Developer · Solaire Resort and Casino

    In-house applications and workflow automation for the business teams.

    Including Player360, a mobile-first app for casino marketing staff that replaced a costly tool, and the MySolaire app's valet and rewards features.

    Node.js · Angular · PostgreSQL · Kafka · AWS · Java

Full CV (PDF, 109 KB) (opens in new tab)

§5 About

Karl Jose Buena, head and shoulders, in a dark suit, white shirt and grey patterned tie, against a plain white background.
Karl, General Trias, 2026

I'm a full-stack software engineer based in the Philippines and the person behind karlbuena.com. I've worked across web applications, APIs, databases, cloud infrastructure, data pipelines, integrations and business systems.

More recently I've focused on AI-assisted development, business automation and agentic systems: finding practical ways to use software and AI to remove repetitive work and improve existing workflows.

Based in
Philippines (UTC+8)
Works
Remotely, with clients worldwide
Practice
Independent, one engineer

§6 Contact

Tell me what your team currently does. I'll help you figure out whether it can be automated, integrated or simplified — and what it would take to build it.

karljosebuena@gmail.com

EmailBook a conversation (opens in new tab)LinkedIn (opens in new tab)GitHub (opens in new tab)