Project / Single
PetCareUp: Out-of-Hours Vet Finder
- Client
- Own venture, co-founded with Milena Zepp-Suwara
- Date
- 2026
- Tools
- HTML, CSS, JavaScript, Cloudflare Pages, Workers and D1, Resend, Python, Excel, Claude API, PL + EN + UK + RO
1 / 8
Overview
PetCareUp is a free service for Polish, Romanian and Ukrainian pet owners in Northamptonshire. It answers the question people usually ask at night and under stress: who will see my pet right now, and what will it cost. Each of the 49 practice cards shows opening hours, the out-of-hours service, the price of a visit by day, at night and at the weekend, whether they see non registered pets and whether anyone on the staff speaks Polish. The site runs in four languages, installs on a phone like an app, and every piece of data carries its source and date: the practice's official website, its email reply or a call by the moderator. Around the vet finder sit costs and insurance, travel, puppies and kittens, walks, services, medicines, lost pets, a gallery and a forum. The service is registered with the ICO and has its own Online Safety Act risk assessment.
Scope
I owned the whole technical layer, the copy and the design, from the first needs research (recorded conversations with the community) to the live site: architecture, interface, translations, the Cloudflare backend, the database, email, security and GDPR compliance. I built the moderators' panel, where my co-founder logs calls with practices, replies from the company inbox and approves posts, and the tab for calling a vet in English, with a sentence builder, playback in two speeds and a translation into three languages for people who struggle with an English phone call under stress. There is no CMS: all practice data lives in one Excel file, and six automations take care of the rest.
Automations
Six processes run without manual work. The moderators make the calls and the decisions, the system does everything around them.
- 01
A spreadsheet instead of a CMS
Practice data and translations in four languages live in one Excel file. A Python script builds the page from it, GitHub stores every version and Cloudflare Pages publishes it in about two minutes.
- 02
Sync every five minutes
A background job on the computer builds and pushes a changed spreadsheet on its own and pulls changes made in the cloud. On a conflict it stops and sends a notification instead of guessing.
- 03
The panel feeds the spreadsheet
Calls logged by the moderator in the panel land in the D1 database and come back to the spreadsheet as dated green rows in a dedicated tab, next to the list of questions still to ask.
- 04
Moderation by Claude
Reviews, forum posts, gallery photos and lost pet notices are checked by Claude Opus against the house rules. Clear posts go live at once, doubtful ones wait in the panel with a reason, and the moderators get an email either way.
- 05
A shared inbox with ready emails
Mail to the contact address is caught by an Email Worker and shown as threads in the panel, replies go out through Resend. Every practice has a ready email with its own data and every question to confirm.
- 06
Housekeeping and reports
Every hour the site retires lost pet notices after 60 days and flags data for a new call after 90. A Monday report arrives by email, statistics run without cookies, bots and moderators are filtered out, and sign in works with an emailed code.

