Skip to content
View SajalDevX's full-sized avatar

Highlights

  • Pro

Block or report SajalDevX

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
SajalDevX/README.md

Sajal Kumar Jana — Android & backend engineer

linkedin  ·  kakalijana1254@gmail.com  ·  prepairo on play store  ·  all pull requests

I build mobile apps and the backends they lean on — Flutter and Compose on the client, Spring Boot, Postgres and Kafka behind it. The part I like most is the unglamorous middle: making a real-time system survive a pod restart, making analytics events survive a phone reboot, making a benchmark an agent can't shortcut. Most of my open-source work is the same instinct pointed at other people's codebases.

now Benchmark task author — AfterQuery (Kepler) and Handshake (Dynamo, Seal). Containerized Terminal-Bench-style tasks, reference solutions, isolated verifiers, adversarial validation against no-op and shortcut paths.
prev Founding engineer — PrepAiro (Oct 2024 – Mar 2026). Flutter app to 150K+ / 20K+ installs; Centrifugo + Spring Boot real-time backend; Kafka clickstream pipeline processing 2M+ events a month; attribution microservice handling 1M+ clicks.
won 1st of 2,000+ teams, eRaksha Hackathon (IIT Delhi × CyberPeace Foundation), 2026 — with RAKSHAK. Demoed live at the Global AI Summit 2026, Bharat Mandapam.
school B.E. Information Technology, Army Institute of Technology, Pune — class of 2027.

Open source

Merged upstream

Project Pull request
traceopt-ai/traceml
TraceML · ML observability
#512 Spell out node scope in System diagnostic text
ruxailab/RUXAILAB
RUXAILAB · usability testing platform
#2395 fix(cooperators): style Admin role chip in cooperators table
mlflow/mlflow
MLflow · ML lifecycle platform
#26249 Accept lowercase like, ilike and in in search_logged_models filters
OneBusAway/maglev
OneBusAway Maglev · transit REST API (Go)
#1493 Return parent station in stops-for-location
OneBusAway/maglev
OneBusAway Maglev · transit REST API (Go)
#1490 Reject NaN and Inf in float query parameters
ohcnetwork/care
CARE · hospital & patient management (Django)
#3770 Fix token numbers being reused after a token is deleted
The-OpenROAD-Project/OpenROAD
OpenROAD · open-source RTL-to-GDS EDA
#11523 bazel: enable layering_check on the dft and dst tests
The-OpenROAD-Project/OpenROAD
OpenROAD · open-source RTL-to-GDS EDA
#11410 odb: keep LEF SPACING on OBS POLYGON geometry
ankidroid/Anki-Android
AnkiDroid · spaced-repetition Android app
#21374 fix(filtered-deck): preserve error message for InvalidSearchException
TeamAmaze/AmazeFileManager
Amaze File Manager · Android
#4669 Notify user when renaming a file/folder to its original name

In review

44 open pull requests across 34 projects — click to expand

arxlang/arx · Arx · compiler front-end (LLVM)

  • #119 fix(irx): lower unary minus and plus
  • #120 fix(aix): lower ¬ to IRx's ! operator
  • #121 fix(aix): reject ^ until IRx can lower exponentiation

ohcnetwork/care · CARE · hospital & patient management (Django)

  • #3772 Fix availability exception overlap check for existing slots
  • #3774 Fix schedule creation rejecting today and timezone-aware dates
  • #3776 Fix 500 when listing appointments filtered by organization_ids

The-OpenROAD-Project/OpenROAD · OpenROAD · open-source RTL-to-GDS EDA

  • #11522 dbSta: check Liberty transition tables and input capacitance in check_ip
  • #11540 grt: keep the folded child's fixed layers in CUGR getSteinerTree
  • #11541 web: drop heat map bins outside a polygon die area

dora-rs/dora-hub · dora-rs · robotics dataflow nodes

  • #90 fix(dora-parquet-recorder): record string values instead of their offsets
  • #91 fix(dora-pyaudio): clip float audio before casting to int16

fossasia/eventyay · FOSSASIA eventyay · event ticketing

  • #5913 fix(base): send the current usage fields from record_usage
  • #5944 fix(control): limit how many voucher codes one request can generate

OneBusAway/maglev · OneBusAway Maglev · transit REST API (Go)

  • #1495 Resolve stop route IDs in schedule-for-route
  • #1496 Allow spaces in IDs

theochem/grid · theochem/grid · numerical integration

  • #335 Fix 1D Cartesian orders in generate_orders_horton_order
  • #337 Include the last term in the Fejer quadrature weights

accordproject/concerto · Accord Project Concerto · data modelling

  • #1420 fix(build): make the ESM smoke test independent of the local timezone

ankidroid/Anki-Android · AnkiDroid · spaced-repetition Android app

  • #21383 fix(reviewer): replace AlphaAnimation with ViewPropertyanimator in AnswerFeedbackView

CCExtractor/ccextractor · CCExtractor · subtitle extraction (C)

  • #2356 [FIX] Keep per-page teletext state when extracting multiple pages

CCExtractor/sample-platform · CCExtractor sample platform (Flask)

  • #1214 [FIX] Reject malformed or unexpected webhook signatures instead of raising

CircuitVerse/cv-frontend-vue · CircuitVerse · digital logic simulator (Vue)

  • #1334 fix(vuesim): use 2 ** bitWidth for Stepper and RAM range limits

FlexMeasures/flexmeasures · FlexMeasures · energy flexibility platform

  • #2618 Answer unknown /api URLs with a JSON 404

GAA-UAM/scikit-fda · scikit-fda · functional data analysis

  • #722 Evaluate FDataIrregular samples on their own points

gambitproject/gambit · Gambit · game theory software

  • #1163 Fix missing closing parenthesis in repr() of an untitled Game

GMOD/jbrowse-components · JBrowse 2 · genome browser

  • #5632 Fix formatRelativeTime printing "60 seconds ago" / "24 hours ago" just under a unit boundary

helmholtz-analytics/heat · Heat · distributed tensors (Helmholtz)

  • #2572 Add array API compatible cumulative_prod

hermetoproject/hermeto · Hermeto · hermetic build dependency fetcher

  • #1788 fix(generic): map the java-source Maven type to a jar

holoviz/lumen · HoloViz Lumen · data dashboards

  • #2108 Annotate ViewOutputs.view so it is a required output key

JdeRobot/PerceptionMetrics · JdeRobot PerceptionMetrics · CV evaluation

  • #643 Keep dots in sample names for YOLO and COCO datasets

kiwix/kiwix-android · Kiwix · offline Wikipedia (Android)

  • #5145 Make the language filter ignore diacritics

kubeflow/kale · Kubeflow Kale · notebooks → pipelines

  • #976 fix(backend): keep and escape annotation/label values that contain ':' or quotes

mesa/mesa · Mesa · agent-based modelling (Python)

  • #3882 Don't run an EventGenerator whose first run is after schedule.end

mlflow/mlflow · MLflow · ML lifecycle platform

  • #26190 Make set_mcp_server_alias safe against concurrent delete_mcp_server_version

neuroinformatics-unit/movement · movement · animal pose-tracking analysis

  • #1122 Round frame numbers when exporting VIA tracks with time in seconds

neutralinojs/neutralinojs · Neutralinojs · lightweight desktop apps

  • #1851 Fix per-interface MAC addresses and schema in computer.getNetworkInterfaces

omegaup/omegaup · omegaUp · competitive programming platform

  • #10255 fix: escape every quote and quote line breaks in CSV cells

openfoodfacts/open-prices · Open Food Facts · Open Prices (Django)

  • #1460 fix(Prices): reset duplicate_of when an edited price no longer matches

OpenMS/pyopenms_viz · OpenMS · pyopenms_viz (mass-spec plotting)

  • #183 Let pyopenms_viz import without matplotlib or Pillow

ruxailab/RUXAILAB · RUXAILAB · usability testing platform

  • #2397 fix(dashboard): show the next upcoming session on the dashboard card

scverse/anndata · scverse anndata · annotated data matrices

  • #2667 fix: name offending elements when writing object arrays with non-strings to h5ad

SimplexLab/TorchJD · TorchJD · Jacobian descent for PyTorch

  • #787 fix(aggregation): Apply ExcessMTL exponentiation in log domain

sktime/skpro · sktime skpro · probabilistic regression

  • #1177 [DOC] add usage example to ConcordanceHarrell docstring

Submitty/Submitty · Submitty · course management & autograding

  • #13384 [Bugfix:System] Quote DB URL credentials

Contributed to

CCExtractor/ccextractor CCExtractor/sample-platform CircuitVerse/cv-frontend-vue FlexMeasures/flexmeasures GAA-UAM/scikit-fda GMOD/jbrowse-components JdeRobot/PerceptionMetrics OneBusAway/maglev OpenMS/pyopenms_viz SimplexLab/TorchJD Submitty/Submitty TeamAmaze/AmazeFileManager The-OpenROAD-Project/OpenROAD accordproject/concerto ankidroid/Anki-Android arxlang/arx dora-rs/dora-hub foss42/apidash fossasia/eventyay gambitproject/gambit helmholtz-analytics/heat hermetoproject/hermeto holoviz/lumen ioos/compliance-checker kiwix/kiwix-android kubeflow/kale mesa/mesa mlflow/mlflow neuroinformatics-unit/movement neutralinojs/neutralinojs ohcnetwork/care omegaup/omegaup openfoodfacts/open-prices openwisp/netjsonconfig ruxailab/RUXAILAB scverse/anndata sktime/skpro theochem/grid traceopt-ai/traceml

Regenerated nightly by a small script from the public PR search API.


Selected work

UPSC prep app, 150K+ Play Store installs. Founding engineer across the Flutter client and the Spring Boot backend: real-time 1v1 and multiplayer duel rooms that stay consistent across pods (Postgres advisory locks, owning-pod heartbeats, orphan sweeper), Kafka → Parquet → DuckDB analytics, in-house install attribution.

Flutter · Spring Boot · PostgreSQL · Centrifugo · Kafka · DuckDB · AWS S3

RAKSHAK 1st place, eRaksha 2026

Agentic cyber guardian for home IoT on a Raspberry Pi 5. A Dueling DQN agent chooses threat responses autonomously, while TinyLlama-1.1B-powered honeypots impersonate real IoT devices to stall and fingerprint attackers.

Python · PyTorch · TinyLlama · Flask · Scapy · nmap

Public emergency surveillance. RTSP frames go through YOLOv8 and a temporal scorer; a sustained score triggers Gemini 2.5 Flash verification to kill false alarms, then Vapi voice agents phone the fire brigade and the camera owner over Twilio, answering questions strictly from incident facts.

YOLOv8 · OpenCV · Gemini · Vapi · Twilio · ElevenLabs

Long-term memory for AI chat. Hybrid retrieval over Qdrant vectors, BM25, entity lookup and recency-aware selection; async pipeline with query analysis, token-budgeted context assembly and SSE-streamed responses.

Python · Qdrant · RAG · SSE

AI plant-care app. Clean Architecture + MVVM across five Compose modules with Koin DI; an expert-picker routes scans to 5+ specialised agents for disease detection and growth analysis; WebSocket chat, S3 uploads, Room + Flow offline layer.

Kotlin · Jetpack Compose · Koin · Retrofit · Room

College dining app serving 1,000+ students during the 10 PM – 2 AM night-canteen window. Compose + MVVM frontend, Firebase/Supabase backend, Minis payments, real-time order tracking with Realtime Database and FCM.

Kotlin · Jetpack Compose · Firebase · Supabase

all repositories →

Toolbox

languages

mobile & frontend

backend & data

ai & edge

Contact

Open to Android and backend roles, and to interesting bugs. LinkedIn · kakalijana1254@gmail.com

Pinned Loading

  1. ai_chat_bot_cli ai_chat_bot_cli Public

    Python

  2. dx_ed dx_ed Public

    TypeScript

  3. BlitzUnstake BlitzUnstake Public

    Solidity

  4. stock-market stock-market Public

  5. ai-butler-app ai-butler-app Public

    Dart