TL;DR: Notify reads an Excel file from Cloudflare R2, groups expenses, and emails reminders the day before they’re due. It’s lightweight, serverless, and inexpensive — powered by Cloudflare Workers and Resend.
View More
Missed payments are a common, low-friction source of stress. Between debit orders, subscriptions, and ad-hoc payments, it’s easy to forget one. The goal for Notify was to build a system that required no database, no maintenance, and relied on something most people already use — an Excel spreadsheet.
expenses.xlsx securely and privately.
expenses.xlsx from R2.The output below shows how Notify summarizes expenses from the Excel file and what would be sent via email for items due tomorrow.
📌 Past 3 days:
📅 Day 1 - Total: R350.00
• Internet Subscription - R200.00 (Subscription) | Paid: ✅
• Electricity Bill - R150.00 (Utility) | Paid: ❌
📌 Next 3 days:
📅 Day 2 - Total: R400.00
• Water Bill - R200.00 (Utility) | Paid: ❌
• Groceries - R200.00 (Shopping) | Paid: ❌
📧 Email (tomorrow's reminders):
Reminder: Expenses Due Tomorrow
• Electricity Bill - R150.00 (Utility) | Paid: ❌
• Water Bill - R200.00 (Utility) | Paid: ❌
We plan to extend Notify to pull data from Google Sheets, sync automatically to R2, and even send notifications through Slack or WhatsApp. The goal is to make it a truly multi-channel, zero-maintenance expense tracker.
Conclusion: Notify is a reminder that simplicity often beats complexity. A spreadsheet, a Worker, and an email API — that’s all it takes to automate one more part of your daily life.
TL;DR: Authenticated Jobs collects verified job postings from employers, aggregates them nightly, and publishes them on a user-friendly platform. Users can browse and apply to jobs, generating traffic that supports monetization through Google AdSense and funds further development.
View MoreUnemployment remains a pressing issue, while job seekers struggle to find up-to-date and verified job listings. Many sites provide outdated or unverified posts, creating frustration. Authenticated Jobs aims to aggregate verified listings and deliver them in a streamlined, actionable format.
This is how a typical job listing appears on the platform:
Job Title: Frontend Developer
Company: Tech Solutions Ltd
Location: Johannesburg, South Africa
Description: Build and maintain web applications using modern JavaScript frameworks.
Requirements:
- 2+ years experience with React or Vue
- Experience with REST APIs and version control
- Strong problem-solving skills
Apply here: https://jobs.yoursite.com/job/12345
export default {
async scheduled(event, env, ctx) {
console.log("🕒 [CRON] Fetching new jobs:", new Date().toISOString());
ctx.waitUntil(fetchAndAggregateJobs(env));
}
};
async function fetchAndAggregateJobs(env) {
const jobsBucket = env.JOBS_BUCKET;
const newJobs = await fetchNewJobsFromEmployers();
const existingJobsObject = await jobsBucket.get("jobs.json");
let existingJobs = existingJobsObject ? JSON.parse(await existingJobsObject.text()) : [];
const combinedJobs = [...existingJobs, ...newJobs];
await jobsBucket.put("jobs.json", JSON.stringify(combinedJobs));
console.log(`✅ Aggregated ${newJobs.length} new jobs, total: ${combinedJobs.length}`);
return combinedJobs;
}
Conclusion: Authenticated Jobs solves a real-world problem—connecting job seekers with verified opportunities—while driving traffic that can fund further development. Simple, useful, and monetizable.