Book a call

Montreal

I build and fix the software small businesses run on.

Boni on Mount Royal, with downtown Montreal behind him

I'm Boni, a full-stack developer in Montreal. Since 2016 I've built web apps, websites and online shops for clients in the US, Europe, Asia and Australia, without breaking the bank.

I usually reply within a day, in English or French.

"Bahati did such a fantastic job, on a not so straight forward job. He worked with such dedication to the project and communicated wonderfully throughout."
An online shop, on a WooCommerce product designer, 2017

What I do

"We run the business on spreadsheets."Web applications

I build a tool that replaces the spreadsheet, like a CRM, invoicing or a booking form. I've done it for an auto repair shop, a banking client and a team that was paying for Monday.com.

"Our site is slow, or we can't change it ourselves."Websites and online shops

I use WordPress and WooCommerce when you want to edit things yourself, and a plain, fast site when you don't. Either way I test it with Google's own speed check.

"We don't show up on Google for what we sell."Programmatic SEO

I generate pages that can rank on Google, one for each product, location or search your customers make. They are built from your own data and follow Google's guidelines: useful content, fast loading, clear links between pages. If a page wouldn't help anyone, I don't publish it.

"Our developer left."Taking over existing software

I read the code, get it onto a server you control, fix what's broken and write down how it works.

"Our hosting bill keeps going up."Hosting and migrations

I move apps and databases to cheaper servers or to Cloudflare, set up backups, and cancel the services you pay for and don't use.

"We think we've been hacked."Security incidents

I stop the attack, find out what was taken, help you tell the people affected and fix what let the attacker in.

"We want to use AI but don't know where to start."AI features

I start with one job, like a bot that answers customers from your own documents or a script that reads and scores text. It stays small enough that you can check it works.

"We lose sales because custom orders go through email."Product configurators

I add features to your shop that bring in more orders. With a configurator, customers add their text or logo, see the product and the price, and pay without emailing you.

"It works. We want it to keep working."Ongoing care

Updates, backups, monitoring and small changes every month.

How a project worksFive steps, from the first call to handover
  1. We talk. You tell me what the business does and where it gets stuck. I ask a lot of questions. If a better spreadsheet would do the job, I'll tell you that.
  2. I send a short plan. What I'll build, what I won't, how long it should take and the price: $75 an hour, or a fixed number when the job is clear.
  3. You see it working early. The first version runs on your real data, and we change it from there.
  4. Launch. The code, hosting and accounts are in your name, with notes another developer can follow.
  5. After launch. I can stay on for updates and small changes each month, or hand it to your team.

Not sure which of these you need? Describe the problem and I'll tell you.

Skills and tools

Mostly TypeScript and Python. If your project already runs on something else, I'll usually stick with it. Some of my code is on GitHub.

Languages
TypeScript, JavaScript, Python, Elixir, SQL, Go, C
Front end
HTML, CSS, React, Next.js, Vue, Astro, Tailwind CSS, Bootstrap, MUI, Responsive design
Back end
Node.js, Django, FastAPI, Flask, REST APIs, Webhooks, Stripe API
Data
PostgreSQL, MySQL, SQLite, Redis, Supabase, Web scraping and data pipelines
AI
OpenAI API, LangChain, Vector embeddings, Retrieval (RAG), MCP servers
Business tools
Custom CRMs, Banking CRM, Invoicing, Excel and Monday.com migrations, Jotform
Shops and CMS
WordPress, WooCommerce, Custom WordPress plugins, Fancy Product Designer
Hosting
Bare-metal servers, Cloudflare, Coolify, DigitalOcean, Linux
DevOps
Docker, Ansible, Bash, cron and systemd, GitHub Actions, GitLab CI
Migrations and cost
Server and database moves, Hosting cost reduction, Caching and CDN setup
Security
Incident response, Field encryption, Backup and retention cleanup, Monthly security checks
Testing
Cypress, Puppeteer, Unit tests, Manual QA
Measurement and SEO
Google Analytics, PostHog, Core Web Vitals, Google Ads conversion tracking, Technical SEO, Programmatic SEO
Design
Figma, Photoshop, draw.io
Ways of working
Git, Jira, Slack, Agile, Scrum
Also
Browser extensions, Product configurators
Spoken
English, French, Mandarin (conversational)

Using something that isn't listed? Ask me about it.

Previous work

An auto repair shop that ran on ExcelStill running four years on, about 300 repair orders a month

The shop kept its jobs in Excel and retyped them into an old database. The manager wanted one thing first: to look up a car by its plate from his phone. He had it in six days.

The shop app: a job list on a computer and a plate search on a phone
The current version of the app, shown with demo data.
"you are the best best best i have ever found"
The shop's manager, on WhatsApp, 2025
A marketplace that slowed down when it got busyEvery page now loads under heavy traffic

MySlabs lists more than 200,000 graded sports cards. When I tested the old hosting under heavy traffic, most visitors never got their page.

I moved the site to new hosting. In the same test, every page loaded, in about a second.

The MySlabs marketplace home page
An online shop that lost its Google trafficQuote requests went from about 3 a week to 7 or 8

Google changed its search results and added AI answers, and the shop's traffic dropped. I moved the ad budget to the searches that bring buyers and rebuilt the quote form.

The rebuilt two-step quote request form
The rebuilt quote form.
A company that needed its customer data securedCustomer data encrypted, with a security check every month

After a security incident, I helped the company tell its customers what had happened and answered their questions.

Then I encrypted the sensitive customer data, cut how long data and backups are kept, and set up a security check that runs every month.

Who I've worked with

  • MySlabs

    The auction engine and seller tools for a sports-card marketplace that has processed over $80 million.

  • Global Admissions and China Admissions

    I lead a small development team building the platforms that help international students find and apply to universities.

  • Upwork

    68 jobs and 3,763 hours since 2016, for clients in the US, Europe, Asia and Australia.

Other client projectsClients aren't named here because they didn't sign up to be on my website.
Web apps
  • CRM for a banking client, similar to IRIS CRM
  • CRM that took an auto repair shop off Excel
  • CRM that replaced Monday.com
  • Invoicing app
  • Service request form that shows customers the technicians near themThird-party API
AI
  • Support bot that answers customers from a company's own documentsOpenAI, LangChain, vector embeddings
  • Script that scores text through the OpenAI APIPython, OpenAI
Takeovers
  • Moved a Python web app to a new server and tuned itPython, Redis, PyTorch, DigitalOcean
  • Updates to a tool that turns WhatsApp chat exports into web pages
Shops
  • Product designer for an online shopWooCommerce, Fancy Product Designer
  • Website and trunk configurator for a maker of custom horse tack trunksWordPress
  • Product customization tool
Small tools
  • Chrome and Firefox extension that downloads Substack videos
  • Higher-or-lower quiz game for a conference
  • Jotform forms connected to a client website

What clients say

"I have been working with Bahati for over 6 months now. Excellent communication, great work. Completes all jobs well."
A client in Melbourne, on ongoing website work, 2017
"Bahati did an outstanding job, building a WP website and customizing an application for that site."
A small manufacturer, on their website and a custom web application
"Bahati did such a fantastic job, on a not so straight forward job. He worked with such dedication to the project and communicated wonderfully throughout."
An online shop, on a WooCommerce product designer, 2017
"Very good work and communication!"
A client, on research and a presentation for their app, 2023

Have a project like one of these? Ask me a question.

Research

I study usability in open-source software at the HCD Lab, Polytechnique Montréal.

I work the same way for clients. I watch real people use what I build before I call it done. Before that, in China, I tested how Fortune 500 companies' products worked for Chinese users and proposed fixes.

2024 to now
Polytechnique Montréal, HCD LabPhD in human-computer interaction, on the fast track from the master's
2021 to 2022
Shanghai Jiao Tong UniversityOne year of a master's in control science and engineering
2016 to 2020
Zhejiang University of Science and TechnologyBEng, software engineering

Want to talk about your own project? Ask me a question.

Ask me a question.

A few lines are enough: what the business does, what isn't working and when you need it fixed.

orbook a call

This opens your email app with the message ready to send. You can also email me directly.

I usually reply within a day. I'll say how I'd approach it, or tell you if I'm not the right person for the job.

Before you write

What will it cost?

$75 an hour. If the job is clear enough, I'll give you a fixed price on the first call instead.

Do you take small jobs?

Yes. Plenty of my work has been a few hours: one fix, one form, one server move.

We already have a site or an app. Do you start over?

Rarely. I'd rather fix what you have. If a rebuild would cost you less, I'll say so.

I'm not technical. Is that a problem?

No. Describe the problem the way you'd tell a colleague and I'll ask the rest.

Who owns what you build?

You do. The code, the hosting and the accounts are in your name.

Where are you, and when can we talk?

Montreal, on Eastern Time. You can book a call from this page, in English or French.