Building with AI
n8n automation workflows, AI-assisted pipelines, and mobile-first web apps — built and shipped end-to-end.
Below are three n8n workflows I built to automate recurring parts of my life — content posting, expense capture, and job hunting — followed by two mobile-first web apps. All five are open-source on GitHub.
Each of these runs unattended on a schedule or trigger, chains together AI nodes (OpenAI/Gemini) with Google Sheets, Gmail, and external APIs, and handles its own error paths and retries.
A workflow that runs every morning at 8AM, picks the next 5 unposted rows from a content-queue spreadsheet, generates an image and caption for each with AI, and publishes straight to Instagram — with a 3-hour delay between posts so it looks and reads as manually posted, not bot-spammed.
- Trigger & queue. A daily 8AM schedule reads all pending rows from the content sheet, filters out anything already posted, and picks the next 5 for the day.
- Per-post AI pipeline. For each post in the loop: an image is generated with AI, uploaded to ImgBB for a public URL, a caption is generated separately, then an Instagram media container is created via the Graph API.
- Publish & verify. After a short wait for Instagram to process the container, the post is published and the workflow checks whether publishing actually succeeded.
- Success path. The row is marked "Posted" in the sheet, then the workflow waits 3 hours before moving to the next post — so all 5 land spaced out through the day.
- Failure path. If publishing fails, the row is marked "Failed" and I get a Telegram notification immediately instead of finding out days later.

Two linked flows: one listens to my inbox in real time and logs every bank alert email as a transaction automatically; the other runs every Sunday night to total up the week and email me a summary — so spending tracking happens without me opening an app.
- Real-time capture. A Gmail trigger fires on every new email; the body is parsed for a transaction amount. If none is found, the email is discarded.
- AI categorization. When an amount is present, an AI node reads the merchant name and classifies it into a spending category, which then gets normalized against a fixed category list before being appended as a new row in Google Sheets.
- Weekly digest. Every Sunday at 8PM, a separate schedule computes the last 7 days' date range, reads all transactions from the sheet, filters and sums them by category, and emails me a summary via Gmail.
Two linked workflows that turned job hunting into something that runs on autopilot: one applies to new listings with a personalized cover letter, the other checks in every couple of days on applications already sent and lets me know the moment a status changes.
- 1. Apply to new jobs (daily). Reads the job-listings sheet, filters to rows still marked "Not Applied," and processes them one by one — preparing a tailored cover letter and resume link for each, then routing the application to the correct platform (LinkedIn or Indeed) before recording the result and status back to the sheet and notifying me by email.
- 2. Track application status (every 2 days). Reads every job already marked "Applied," checks each one's current status on the platform, and — only when a status has actually changed — updates the sheet and sends me an email; unchanged applications are skipped silently.

Two earlier React/TypeScript apps — still in daily use, now the secondary projects on this page.
An elegant, dual-pane personal finance tracker for logging daily, weekly, and monthly expenses and savings. The standout feature is automatic transaction capture: it connects to Gmail (read-only OAuth) to detect DBS Bank alert emails, then uses the Gemini API to parse each alert into a structured transaction — amount, category, and description — so I don't have to manually enter every purchase.
- Log a daily expense or saving entry in seconds via the dual-pane add form
- Let bank SMS/email alerts auto-populate transactions via Gmail sync
- Gemini AI reads each bank alert and classifies category + amount automatically
- Check today / this-week / this-month / all-time totals at a glance
- Browse spending by category — Food, Transport, Bills, Rent, and more
- Track savings sources separately — Salary, Investments, Side Hustle, Refunds
- Switch between multiple country/currency formats and locales
- Export the full transaction history to Excel (.xlsx) for records
- Works fully offline with local persistence; syncs to Firebase when online
- Dark mode built in for low-light daily use
A mobile-first tracker for logging investment payments, managing multiple savings schemes, and monitoring portfolio growth over time — built to handle the mixed basket of instruments I actually use: recurring deposits, SSY, stocks, mutual funds, and chit funds, all in one place, with full offline persistence.
- Set up a "scheme" for each instrument — RD, SSY, Stocks, MF, Chit, or Custom
- Record the monthly SIP amount and the platform/provider for each scheme
- Log a monthly entry per scheme — amount invested vs. current value
- See return % calculated automatically per entry and per scheme
- Add notes and payment mode (bank transfer, UPI, auto-debit, etc.) per entry
- Review portfolio P&L across every scheme in one consolidated view
- Keep logging and reviewing fully offline — data persists locally on-device
- Sync across devices via Firebase when back online