Skip to content
View Satyam087's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report Satyam087

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Satyam087/README.md
I build things people actually use. AI engineer and full-stack developer, Pune.

Portfolio Evaluation lab Notify delivery

I build agents and RAG systems, ship the full stack around them (Java, Node, React, React Native), and evaluate LLM workflows for a living. Second-year B.Tech CSE (AI) at Vedam School of Technology, Pune. Every number on this page links to the query, run file or commit that produced it.

Now

Full Stack Developer Intern at Third Shade Media; LLM Evaluation Expert at Deccan AI Experts; Co-founder at CampusCritique.

Measured

98.1% delivery success of 1,346 jobs (Notify). Dice 0.35 vs 0.06 baseline (OilTrace). 56 of 56 on a published RAG benchmark (Ask this site).

Notify, live from production: delivery success, events, retries, median latency, health at check time. Refreshed daily by a GitHub Action from satyamkumarsingh.com/api/ledger.

How Notify works

The system behind the 98.1%. A product posts an event and gets a 202; everything after that is Notify's problem.

flowchart LR
  A["POST /api/v1/events<br/>API key, idempotency key"] --> B["notification_events<br/>RECEIVED to QUEUED, commit"]
  B -- afterCommit --> C["RabbitMQ<br/>notify.events"]
  B -. "QUEUED for over 120 s" .-> S["Recovery sweep<br/>every 60 s"]
  S -.-> C
  C --> D["Consumer<br/>tenant rules, one job per channel<br/>template rendered, idempotent"]
  D --> E["Delivery worker<br/>every 5 s, batch 50, row lock"]
  E --> F["In-app"]
  E --> G["Email, Resend"]
  E --> H["Push, Firebase and VAPID"]
  E -- "retryable: again in 60 s, max 3" --> E
  E -- "non-retryable" --> X["/jobs/failed"]
Loading
The six decisions, one line each
  • Commit, then publish, then sweep. The event row is the outbox; a stale QUEUED row is the signal to republish. No distributed transaction.
  • Idempotent at every hop. Idempotency key at ingest; existsByEventIdAndChannel plus a unique constraint at fan-out; row lock at claim.
  • Claim and finalise one job at a time, each in its own transaction, so one failure cannot roll back deliveries that already happened.
  • Failures are classified by the handler (DeliveryException(message, retryable)); the worker retries exactly what can change on a retry.
  • Off by default. Email and push stay disabled until credentials exist; misconfiguration fails startup, not delivery at 2am.
  • Templates in Postgres per tenant, versioned by Flyway migration, with a render-test endpoint.

Source: Satyam087/notify · write-up: What 1,346 notification jobs taught me about async delivery

What broke, and what changed because of it
Where What Then
Notify 25 of 1,346 jobs failed, all email and push Failure classification, three attempts with backoff, a public failed-jobs view and a live delivery rate
OilTrace Early runs collapsed to predicting nothing (Dice 0.00, precision 1.00) Focal loss on the wrong pixels, 685 trap scenes moved into validation, a sealed test set never used for a decision
CampusCritique 15 June: a one-line guard routed every payment webhook to the refund handler, and returned 200 Verify, key, guard, then act; side effects moved out of the request; the write-up
Humraah 40 findings in a product that looked finished Auth rebuilt, media made private, 35 fixed, 5 accepted as non-blocking, then store review

Repositories worth opening

notify AltaHack, KisanMind
BookCompanion, PageNotes webRTC

Elsewhere: OilTrace (the detector, service and dashboard, every training run's history committed) · AskMyNotes (first place, Noesis Hackathon; I co-built the retrieval). The portfolio itself is a private repo; how it works is public.

Writing

- [What 1,346 notification jobs taught me about async delivery](https://satyamkumarsingh.com/writing/1346-notification-jobs)- [I built a RAG system for my own portfolio, then published its evaluation](https://satyamkumarsingh.com/writing/rag-for-my-own-portfolio)- [The webhook that routed every payment to the refund handler](https://satyamkumarsingh.com/writing/webhook-refund-handler)- [v0.9: Notify gets its second tenant: this site](https://satyamkumarsingh.com/contact#ledger)- [v0.8: Humraah reaches App Store and Play review](https://satyamkumarsingh.com/work/humraah)

This list updates itself from the site's RSS feed once a day (GitHub Action).

How I work

  • Evals before claims. A number I would not publish is a number I should not quote. The search box on my site ships with its benchmark; the notification service ships with a public delivery rate.
  • Audits and plans before code. Twenty-plus written audits on Humraah before the store submission; a "context brain" for a four-person repo with AI agents in it.
  • Gates, not apologies. Margo Rubber's build fails on an unverified fact; 13 broken links and 4 silent 404s never reached a customer.
  • Failures go next to the wins. The 25 failed jobs, the two training runs that collapsed, the one-line webhook bug: all on the record, with what changed because of them.
  • AI-native, with judgement. Claude Code and Codex daily; the decisions, the tests and the numbers are mine.

Stack

Python, Java, TypeScript, JavaScript, Spring, Node.js, Express, FastAPI, React, Next.js, Astro, Tailwind, PostgreSQL, MongoDB, Supabase, RabbitMQ, PyTorch, Docker, Vercel, Cloudflare, Firebase, Git, Linux, Bash

Plus the AI layer the icons don't have: LangGraph, LangChain, RAG with calibrated thresholds, embeddings and vector search (bge-m3, Gemini, ChromaDB), LLM evaluation (recall@k, MRR, adversarial sets), Gemini, OpenAI and Groq APIs, Sarvam and Whisper for voice.

Ask me about
  • Why a queue between ingest and delivery, and why commit-then-publish beats publish-then-commit.
  • How to calibrate a RAG similarity threshold with numbers instead of a guess, and why the threshold belongs to the embedding model.
  • What a payment webhook has to survive: duplicates, reordering, refunds through the same pipe, a gateway that never retries a 200.
  • Why focal loss when Dice loss collapses to the empty mask, and why look-alikes belong inside the validation set.
  • Taking a React Native app through App Store and Play review: IAP on both stores, UGC compliance, reviewer accounts.
  • One backend, three clients: keeping a notification policy in one place across in-app, push, email and WhatsApp.

Activity

Profile details

Contribution graph

The cards and the graph are regenerated by GitHub Actions in this repository, weekly. Most of September 2026 is in a private repository (this portfolio).


Open to remote AI engineering, full-stack and SDE roles: internship, contract or full-time. Pune, IST (UTC+5:30), US and EU overlap.
Say hello (delivered by Notify, traced live) · LinkedIn · vscimatic999@gmail.com
Currently watching Bleach: Thousand-Year Blood War, reading Blue Lock. LeetCode 1515 · CodeChef 2★ 1425.

Pinned Loading

  1. notify notify Public

    Java

  2. AlgoRise AlgoRise Public

    JavaScript 3

  3. AltaHack AltaHack Public

    TypeScript 1 1

  4. AskMyNotes-AlgoRise AskMyNotes-AlgoRise Public

    Forked from VKS0104/AskMyNotes-AlgoRise

    JavaScript

  5. webRTC webRTC Public

    TypeScript