Skip to content
Carlo Miguel Dy
← Back to the specimen catalogue

Acc. XIV · Chartula reticulata — branded document engine, cultivated 2026

Resibo — AI quote, invoice, and receipt maker

Technical founder · Product engineer · 2026 · Independent studio

An AI document generator for Philippine micro-businesses that turns a rough Taglish description into a branded quote, invoice, or acknowledgment receipt.

Chartula reticulata — branded document engine, cultivated 2026

Field notes

The context

Micro-businesses in the Philippines write quotes and receipts by hand or in loose chat messages, with no consistent branding, no payment tracking, and no reusable customer record. Resibo takes a rough Taglish description and drafts a branded document, then tracks the payment against it.

Cultivation

What I built

  • Built AI drafting from Taglish input through a Groq/Cloudflare/OpenRouter fallback chain, generating quotes, invoices, and acknowledgment receipts.
  • Built image and PDF export with seller branding, plus payment tracking that supports partial payments.
  • Built the customer directory, auto-accumulated from generated documents rather than entered separately.
  • Built the offline-first PWA sync queue with conflict resolution, and tier-based feature gating enforced server-side against subscription state.
  • Built the 14-day trial with manual payment verification through Mission Control, and the admin console for tenant lifecycle, payment ops, and audit logging.
  • Wrote 343 test files across Vitest and Playwright covering the core drafting loop, offline sync, subscription lifecycle, admin actions, and the landing page.

Root system

How it works

A Turborepo with three independently deployed Vercel apps: @resibo/landing (Next.js), @resibo/app (a Vite PWA), and @resibo/mission-control (a Vite admin app), sharing @resibo/schemas (Zod), a /ui package holding both the design system and the document renderer, /i18n, and /config. The Supabase backend spans 13 migrations — enums, RLS policies, stored procedures, Edge Functions (llm-proxy for drafting, approve-payment for subscription ops), pg_cron for lifecycle reconciliation, and audit triggers. Auth is two-tier: customers via email/Google, admins via a super-admin flag, with every write validated server-side by RLS policies checking tenant status and paid_until.

Harvest

Outcomes

  • MVP shipped; all three surfaces — landing, app, Mission Control — are live.
  • No users or revenue tracked to date.
  • Payment verification is manual with a human review SLA; there is no payment gateway.
  • LLM inference runs on free-tier providers at MVP scale, which caps throughput until that changes.

Herbarium

The work itself

Mobile dashboard headed 'Good evening, Nessa Santos' showing a 'Due to collect this week ₱16,340.00' card with an Overdue/Due/Paid progress bar, and a 'To collect' list with two customer rows, Marga Corp Events ₱2,350.00 and Ate Baby ₱4,500.00, each with a 'Generate follow-up' link.
Fig. 1The dashboard reads collections at a glance — what's overdue, what's due, and a one-tap follow-up per customer.
Documents list screen with filter chips for All, Quote, Invoice, Resibo and Unpaid, a 'New document' button, and 8 documents each showing a number, customer, amount, and a status badge — Paid, Sent, Partially paid or Draft.
Fig. 2One list for quotes, invoices and resibo alike, filterable by type or payment status.
New document form on the Invoice tab with customer 'Aling Rosa' entered, a Taglish order typed into the 'Type the order' textarea, and an enabled 'Draft with AI' button below it.
Fig. 3The tenant types the order in their own words — Taglish included — before handing it to the AI draft button.
New invoice form scrolled through two line items, Chicken Adobo kaldero x2 and Leche Flan tray x3, with quantity and price fields, and a running total of ₱2,910.00 shown both above the Save button and inside a live receipt preview.
Fig. 4Line items total live into a receipt preview, so the tenant sees exactly what the customer will get.
Invoice detail page for INV-0002 marked 'Paid', showing a receipt-style card for Barangay Hall Fiesta Committee with three line items, a ₱3,460.00 total, a diagonal PAID stamp graphic, and 'Share to Messenger' and 'PDF' buttons below it.
Fig. 5A paid invoice renders as a stamped receipt, shareable straight to Messenger or exported as a PDF.
A 'Record payment' modal dialog over a dimmed invoice detail page, with fields for Amount, Payment method set to GCash, Reference number, Date paid, and Note, plus Cancel and Save payment buttons.
Fig. 6Recording a GCash payment captures the reference number alongside the amount and date — the paper trail micro-businesses rarely get.
Pressed leaf — what it taught
A fallback chain across three LLM providers turned out to matter more than picking the 'best' one — free-tier rate limits and outages are the actual failure mode at this scale, not model quality. Deriving the customer directory from documents rather than a separate CRUD flow removed an entire onboarding step users would have skipped.