Cheguvera Bogale Open to new roles in Warsaw

I build software real businesses run on, and I stay to support it.

Five years in enterprise and telecom support taught me how software fails in front of customers. Now I build it: AI-assisted, tested, deployed and handed over to people who use it every day.

DispatchQA, the call review pipeline I built for a freight brokerage Runs entirely on the client's own server

Call recorded

Pulled from Zoom Phone by webhook, hourly poll or nightly catch-up.

Transcribed

Whisper runs locally. Hold music and voicemails are filtered out, then the audio is deleted.

Scored

A local model drafts scores against a six-point freight rubric and an 11-item checklist.

Reviewer decides

A manager confirms or corrects each score. Every correction is kept and audited.

Work

Three products in production. Figures come from each repository: commits, tests and endpoints as they stand today.

DispatchQA

Client project, June to November 2026

127
commits
~450
backend tests
57
API endpoints
8
services in Docker Compose

A freight dispatch team makes far more calls than any manager can review. DispatchQA reviews them first, so the manager only has to judge.

What it does

  • Scores each call on six criteria plus an 11-item checklist, alongside the transcript
  • Gives reviewers a workflow to agree with or correct the AI, with locked, audited reviews
  • Shows a dispatcher leaderboard, agent profiles and AI-versus-reviewer agreement
  • Emails managers a scheduled PDF report

Why it is built this way

  • Call audio and transcripts never leave the client's server, so transcription and scoring run on local models
  • Three user roles with mandatory two-step verification and a security log
  • A scorer evaluation harness measures agreement with human reviewers before any model or prompt change ships

Built with Next.js, TypeScript, FastAPI, PostgreSQL, faster-whisper, Ollama, Docker, nginx, GitHub Actions

Engineering decisions and trade-offs
A fair-share queue on CPU-only hardware
The server cannot score every call, so calls are shared round-robin across dispatchers, least-served first. Every dispatcher gets coverage, and calls not reached within 48 hours are marked as such rather than silently dropped.
Deterministic, auditable scores
The model runs at temperature 0 with its output shape enforced at generation time. Python computes the totals rather than trusting the model's arithmetic, and every score records which model, prompt and settings produced it.
The API never runs the models
A single worker process owns all heavy work and is protected by database locks, so the dashboard stays responsive while calls are processed.
Capped retries
A failed analysis is retried at most three times, an hour apart, and each call rolls back on its own. One outage cannot exhaust the whole queue.

Ahadu Events

My own product, July 2026 onwards

310
commits
~540
backend tests
62
API endpoints
24
invitation themes
ahaduevents.com

It began as the digital invitation for a family wedding with more than 300 guests. Now it serves paying customers for weddings, birthdays, memorials and corporate events.

My role

  • Founded the product and took it from concept to production, serving paying customers
  • Designed and built the web platform and an event check-in app end to end
  • Owned product design, UI/UX, development, testing and deployment
  • Shaped features around real events, based on feedback from hosts and guests

What guests and hosts get

  • A personal link for every guest, with RSVP, a wishes board and a QR entrance pass
  • Amharic or English wording, with times on the Ethiopian clock for Amharic
  • CSV guest import, WhatsApp reminders and a host dashboard of RSVPs and views

Built with Next.js, React, TypeScript, NestJS, Prisma, PostgreSQL, GitHub Actions, Cloudflare Turnstile

Engineering decisions and trade-offs
Themes never change after publishing
Each invitation is pinned to a theme version, so guests always see what was sent. Custom colours are checked for WCAG AA contrast before they are accepted.
Deleting files carefully
Media is removed only after confirming no invitation still uses it, and the nightly cleanup stops itself if the database looks incomplete. A stray file costs disk space; a wrongly deleted one costs a customer their event page.
Missing fields never erase data
Only an explicit empty value clears a field, and every child record is looked up by both its own ID and its invitation's ID. This closed a real cross-account write bug.
Safe releases on shared hosting
A version tag runs the tests, checks database migrations against the schema and packages checksummed release files, with documented backup and restore scripts.

Addis Spa Work

Client website, November 2026

1 week
from first commit to delivery
43
Playwright tests
39
recorded design decisions
addisspawork.com

An Addis Ababa supplier and installer of saunas, steam rooms and Jacuzzis was nowhere in search results. The new site presents it as a supplier, not a spa, and turns mobile visitors into WhatsApp and phone enquiries.

What I delivered

  • A fast static site with near-zero JavaScript and modern image formats
  • WhatsApp, call and email actions everywhere, with a sticky contact bar on phones
  • Search and AI-search groundwork: structured data, sitemap, llms.txt and IndexNow

How the design stayed faithful

  • Approved design screenshots are committed and every section is pixel-compared against them
  • Automated accessibility, SEO and banned-wording checks
  • The Amharic wordmark ships as an SVG, so English pages never load Ethiopic fonts

Built with Astro, TypeScript, Playwright, axe

42 Warsaw

A peer-to-peer software engineering school, enrolled since September 2025. Projects are defended in peer code reviews, and each milestone ends with a timed exam.

A-Maze-ing

Maze generation and solving in Python, using graph traversal and pathfinding.

Call Me Maybe

An AI project in Python on getting language models to call functions reliably.

Core projects

libft, ft_printf, get_next_line, push_swap and Born2beRoot in C and Linux, plus the Python piscine.

Hackathon

Smart Tracker: Pulse Insight at Play Polska × 42 Warsaw. Fourth place and the strategic positioning award.

See the LinkedIn post

How I work

I use AI coding tools, and I own the result. Claude Code writes much of the code; I scope the work, review and test what it produces, and decide what ships.

I start from the workflow. What the dispatcher, host or shop owner does every day decides what gets built first.

I verify instead of trusting. Every project above has automated tests, and DispatchQA measures its own AI against human reviewers before changes ship.

I support what I ship. Years of handling escalations mean I document, monitor and stay reachable after launch.

Toolbox

Tools I have shipped production work with.

Web

Next.js, React, TypeScript, Astro, HTML and CSS

Backend and data

Python, FastAPI, NestJS, PostgreSQL, Prisma, SQLAlchemy

Infrastructure

Linux, Docker Compose, nginx, GitHub Actions, Cloudflare, cPanel

AI

Local models with Ollama, Whisper transcription, Claude Code, Cursor

Telecom

VoIP and SIP, IVR call flows, TCP/IP troubleshooting, Zoom Phone API

Languages

English and Amharic fluently, Polish at intermediate level

Experience

  1. 2024 to now

    Technical Support Engineer

    Vonage, part of Ericsson, Warsaw

    • First and second line VoIP and UCaaS support for business customers, from small firms to large enterprises
    • SIP calling issues, IVR call flows, network troubleshooting and billable account changes
    • Handle escalated cases, triage the ticket queue and escalate large-scale impairments
  2. 2025 to now

    Software Engineering

    42 Warsaw

  3. 2023

    Bachelor's in Business Management

    Vistula University, Warsaw

  4. 2022 to 2023

    Customer Operations Specialist

    Block, Inc. (Square), remote

    • Owned seller issues through to resolution across chat and email
    • Escalated feature requests and recommended Square products to sellers

Let's work together.

I'm open to solutions, implementation and AI-focused engineering roles, and to selected client projects.