Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • I earn from 23 different places — a few Stripe products, an Amazon affiliate link, some scrapers on a marketplace, an iOS app that makes $6.99/mo, the occasional PDF sale. The smallest earned $0.01 last month. Together it's most of my income, and until recently I had no idea what the daily number was.

    Every dashboard I tried is built for the opposite shape: one Stripe account, analysed deeply, from ~$129/mo. And when I actually went looking, roughly half my sources publish no earnings API at all — Amazon Associates has no public earnings endpoint (PA-API returns product data; the S3 feed is discretionary and small publishers don't qualify), and most ad networks are the same. So integration-only tools are structurally blind to that money. You can't integrate with an API that doesn't exist.

    So it does two unglamorous things: pulls Stripe automatically (net of fees, one source per product), and lets you type a monthly total in ~10 seconds for everything else. Same charts, same averages, same goals.

    The part I use most is the MCP server. I didn't build a mobile app because I noticed I never wanted to look at a chart — I wanted to ask a question. "How much did I make this month across everything?" is conversational, not visual. Four tools: get_income_summary, get_sources, get_month, log_monthly_income.

    The interesting technical bit was auth. The hosted app uses Supabase magic links, which give you a JWT that expires in an hour — fine for a browser, useless for a CLI that can't refresh a browser session. So the MCP only worked against self-hosted instances for a while. Fixing it meant personal API tokens: hash stored not plaintext, shown once, prefix + last-used visible so you can audit them, and a token can't mint or revoke other tokens (otherwise one leak becomes self-renewing access). A token does bypass 2FA — that's what it is, the machine's replacement for a second factor — so the mitigation is that they're named, revocable and visible rather than pretending otherwise.

    MIT, self-hostable on Supabase + Vercel in ~5 min. There's a hosted version because I got tired of maintaining my own deploy.

    Happy to answer anything about the long-tail aggregation problem — it's messier than it looks, and I'd genuinely like to hear how others track the sources with no API.

  • Does it use AI or specialized parsers? Is it necessary to give the tool the passwords of the sites?