Skip to content

Custom operations systems · Punta Cana

One system for your whole operation

Your spreadsheets, your WhatsApp chat and the apps that don’t talk to each other, replaced by one system built around how you already work: bookings, billing, payroll, deliveries. One module at a time, with your own data, without stopping the business.

Get in touchSee the work

The problem

It works, until it doesn’t.

Almost every business I know runs the same way: bookings in one program, accounting in another, payroll in a spreadsheet only one person understands, and WhatsApp holding it all together.

It works until that person gets sick, or until someone asks how much you’re owed and nobody has the number. I build one system that does what all of them did, with the rules your business already carries in its head.

Work

Systems already running real businesses

Four projects in Punta Cana, each with its real status. The screens use sample data: none of these businesses’ numbers are published.

Infinity Ocean · catamaran tours

From five systems and a WhatsApp chat to one platform.

Payroll in production The spreadsheet stays the official record until two pay periods close with zero difference. Bookings and receivables: ready, with the data loaded. E-invoicing: pending.

Before
Five tools that didn’t talk to each other, and a WhatsApp chat.
Today
One platform, one module at a time: bookings, mobile check-in, dock boarding, billing, payroll, inventory and accounting.
  • The system proposes, a person authorizes: invoices and reconciliations arrive prepared, and someone approves them.
  • It never invents an absence: anything unclear is flagged as a “possible absence”, and a person decides.
  • Billing follows who actually boarded: closing the departure at the dock locks in what gets billed.
  • 4,784cell-by-cell comparisons against the payroll spreadsheet, all exact
  • 851automated tests
  • ~3weeks to build, one developer, AI-assisted

Built with: Next.js · React · TypeScript · Postgres · Drizzle · Vitest

Screens from the Infinity Ocean platform, recreated with fictitious dataScreens from the Infinity Ocean platform, recreated with fictitious data
Screens recreated with fictitious data

Morning Roll · breakfast subscription

Every delivered wrap bills itself. Every peso is counted once.

In production It’s the system the business runs on. Still to come: WhatsApp notifications and an “I’ve paid” button for subscribers.

Before
Orders came in over WhatsApp, and who owed what lived in the owner’s head.
Today
The owner opens the app and knows what to make, where to deliver and who to collect from. Every subscriber gets their own page, with a link and a PIN.
  • Delivering is billing: one button marks the delivery and bills it.
  • The balance is added up, never stored: entries are recorded and never erased.
  • A double tap or a dropped signal never charges twice.
  • 328automated tests, several against a real database
  • 3days from WhatsApp and memory to a full system

Built with: Next.js · React · Supabase (Postgres with row-level security) · Vitest

Screens from the Morning Roll app on a phone, recreated with fictitious dataScreens from the Morning Roll app on a phone, recreated with fictitious data
Screens recreated with fictitious data

Pleasant Tours · excursions

Direct online sales: travelers book and pay on their own, in their language.

In production Since September 2026, taking real payments through PayPal.

Before
No online sales channel of their own.
Today
Their own site in Spanish and English, with every booking landing straight in the team’s inbox and the operations panel.
  • The seat is held while the guest pays, not just promised.
  • A payment without a seat doesn’t get buried: it shows up under Issues until someone resolves it.
  • The booking lives in a link, not an account: guests reopen it whenever they like.

Built with: Next.js · TypeScript · Postgres (Supabase) · PayPal · Resend · Vercel

Visit gopleasanttours.com ↗

gopleasanttours.com home page on a desktop

The Club Barbershop · appointments

A barbershop with its own booking system: a bilingual site, booking by barber and a team panel.

In development Not live yet. The screens are design mockups under review with the owner.

Before
Appointments live on a rented booking platform.
Today
The shop’s own system, with a schedule for each barber, a team panel and every account in the owner’s name.
  • Customers book from their phone in 5 steps, with no account and the price in plain sight.
  • Two customers can’t book the same chair at the same time: the database won’t allow it, not just the screen.
  • I’m building it on the Pleasant Tours core, already in production.
  • 1,334automated tests, as of Sep 26, 2026

Built with: Next.js · TypeScript · Postgres (Supabase) · Drizzle · Resend · Vitest

Mockup of The Club Barbershop site on a phone
Design mockup under review

How I work

Your old system stays the official one until the new one gives you the exact same numbers.

  1. Diagnostic

    2–3 days, or 7–10 with a proposal

    A map of everything you use today and where your time and money are leaking.

  2. Phased proposal

    In the 7–10 day diagnostic

    Modules ranked by pain, each with a fixed price. You can stop after any phase.

  3. Build on your real data

    4 to 8 weeks per module

    I import your history first — that’s where the surprises are. Halfway through, you see a demo running on your data.

  4. Parallel run

    Two full cycles

    The system’s numbers checked against your spreadsheet, line by line, until there’s zero difference.

  5. Go-live

    1 to 2 weeks

    Two training sessions, a manual, and the old system switched off module by module, never all at once. Then 30 days of close follow-up.

  6. Monthly support

    For as long as it runs

    Hosting, daily backups, small changes, and one person who answers.

Pricing

It starts with a diagnostic

Quick diagnostic

2 to 3 days. A map of your operation and where it hurts.

RD$10,000 + ITBIS

Diagnostic with proposal

7 to 10 days, including a phased proposal with a fixed price per module.

RD$35,000 + ITBIS

RD$25,000 if a client referred you.

Either diagnostic is fully credited toward the project if you sign within 30 days. The build is quoted in writing, with a fixed price per module. ITBIS is the Dominican VAT.

FAQ

What almost everyone asks

How much does it cost?

It depends on what we’re replacing. The diagnostic has a fixed price, from RD$10,000 + ITBIS, and leaves you with a firm written quote. One complete process, end to end, usually runs between RD$250,000 and RD$450,000 + ITBIS.

How long does it take?

4 to 8 weeks per module. A platform with several modules is built in phases, and I’ll tell you that at the diagnostic, not at the end.

My spreadsheet works. Why change?

It works because someone makes it work. I’m not asking you to throw it out: we run both side by side for two cycles, and the system has to give exactly the same numbers. Then you no longer depend on one person or one computer.

What if we stop working together?

Your data is yours: one database per client and a full Excel or CSV export whenever you ask. Everything runs on standard providers like Postgres, Supabase or Vercel that any developer knows.

Does it work with the DGII?

E-invoices are issued through a provider authorized by the DGII (the Dominican tax agency), connected to your billing. I don’t promise DGII or TSS compliance before it’s actually working.

Who’s behind this?

One person in Punta Cana who designs, builds and answers. I use AI tools to build faster, and automated tests so that “faster” never means “let’s see what happens”.

Contact

Does your operation look like one of these?

Tell me what you use today and what eats up most of your time. I reply the same business day.

Or email me directly: ggjspartners@gmail.com

Optional. For example: tours, restaurant, barbershop.