Rafshan Tashin

Side projects

Things I build outside client work

Small tools I built to solve a problem I actually had, not to pad a portfolio. Each one ships with a live demo, the source, or both.

Python · GitHub Actions · Automation · SEO

Remote Job Board

Most remote job boards return the same problem for anyone hiring from outside the US or Europe: a wall of listings that look open but aren’t, once you read the fine print. Rather than keep filtering that by hand every morning, I built something to do it for me.

  1. 1. Every morning it pulls fresh listings from six free remote-job boards.
  2. 2. Each listing is scored against my profile — the role, the job description, and the skills it names — as a percentage match.
  3. 3. Anything region-locked against where I’m based, or already closed, gets dropped before I ever see it.
  4. 4. What’s left is grouped by day and published automatically, no manual step in between.

The public demo runs on a handful of invented sample listings rather than my real results, since those would show which real companies I’m matched with. Same code, same scoring — just different input.

Remote Job Board dashboard showing scored listings grouped by date

Capacitor · Android · JavaScript · localStorage

Tally — Daily Expense Ledger

Every expense app I tried wanted a login, a subscription, or a connection to my bank before it would let me log a bus fare. I wanted something that opens in under a second, works with no account, and never leaves my phone unless I explicitly tell it to.

  1. 1. Expenses, budgets, income, and quick-add shortcuts are logged against categories and stored locally on the device — nothing leaves the phone by default.
  2. 2. A daily spending limit flags the days it was crossed, with a drill-down into what was actually spent that day.
  3. 3. The monthly report tracks income against spend, breaks it down by category against a budget, and charts a daily trend.
  4. 4. Backups export as CSV or a full JSON snapshot, and can optionally sync to a private GitHub repo of your own — the app refuses to push to anything it detects as public.

The numbers in the screenshot are sample data seeded for the shot, not real spending — the app itself, unmodified.

Tally app home screen showing today's spend, weekly and monthly totals, and a log of sample expenses

Next.js · GitHub Actions · Gemini · Structured data · SEO

Daily Tech Blog and News

A blog is one of the best ways to keep a site growing, and one of the first things to stall when work gets busy. I wanted the Blog & News section of this site to keep going on its own, without ever publishing something I would not stand behind.

  1. 1. On a schedule, it pulls the latest stories from about 20 tech sites and Hacker News, then ranks them by how many outlets cover each one and how fresh it is.
  2. 2. It reads the full source article, then a free Gemini model drafts the piece: a blog post on Sundays, Tuesdays and Fridays, and a short news summary on the other four days. Blog posts follow my SEO template, with one primary keyword, two tables, a conclusion with a call to action, and an FAQ.
  3. 3. Code, not the model, decides what gets published. Every number, product name, quote and table cell is checked against the source article, copied passages are rejected, and a draft that fails twice is skipped. A quiet day beats a wrong post.
  4. 4. Posts that pass are saved to the repo and the site rebuilds itself. Each one ships with a meta title, meta description, canonical URL, Open Graph tags, and BlogPosting, FAQPage and BreadcrumbList schema. It also reuses the source article’s preview image and links back to it.

It runs on GitHub Actions and free-tier APIs, so it costs nothing to run. The repository is private, so there is no source link, but the live section shows exactly what it publishes.

Blog index of this site showing an automatically published post about PS2 games running in the browser, with its source image