Small social media resellers in the Philippines often run everything from Messenger and a spreadsheet. The thing that slips most? Following up on unpaid orders. Here's a tiny Node.js script that reads a CSV of pending orders and drafts polite reminder messages you can paste into chat. No database, no server.
The CSV
order_id,customer,service,amount_php,created_at,paid
1042,Ana,TikTok views 5k,250,2026-11-09,no
1043,Mark,FB page likes 1k,180,2026-11-10,yes
1044,Joy,IG followers 1k,320,2026-11-08,no
The script
import { readFileSync } from "node:fs";
const rows = readFileSync("orders.csv", "utf8").trim().split("\n").slice(1)
.map(l => l.split(","))
.map(([order_id, customer, service, amount_php, created_at, paid]) =>
({ order_id, customer, service, amount: Number(amount_php), created_at, paid }));
const daysAgo = d => Math.floor((Date.now() - new Date(d + "T00:00:00+08:00")) / 864e5);
const peso = n => "₱" + n.toLocaleString("en-PH");
for (const o of rows.filter(r => r.paid === "no")) {
const age = daysAgo(o.created_at);
const tone = age >= 3 ? "Just a gentle follow-up po" : "Hi po";
console.log(`${o.customer}: ${tone}! Your order #${o.order_id} (${o.service}) is ${peso(o.amount)}. ` +
`Let me know once sent so I can start it right away. Salamat!`);
}
Note the +08:00 offset. Philippine time is UTC+8, and getting this wrong makes "3 days ago" off by a day around midnight.
Why not auto-send?
Because platform messaging rules change and bulk automated DMs can get a page restricted. Drafting messages and sending them by hand keeps you safe and still saves 90% of the time.
Keep money in integers
If you start doing math on totals, store centavos as integers rather than floats. 250.00 becomes 25000. Fewer rounding surprises.
For the business side of running social media services for Filipino customers, this overview of SMM in the Philippines is a useful primer. BoostingPH is one PH panel with peso pricing if you need a supplier to plug into this workflow.
Top comments (0)