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

Block or report aminmiral

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

Backend developer in Ahmedabad, India. I spent 2025–2026 writing Python against the Odoo ORM for client ERP deployments — computed fields, onchange logic, approval workflows, scheduled jobs, and the PostgreSQL queries that stop being fast once a client's data gets large.

I come at the same systems from the other side as well. An ERP is a machine for producing records, and records can be wrong on purpose.

What I'm building

erp-anomaly-bench — a labeled event-log benchmark for ERP fraud detection. Rather than simulate a process, I drove a real Odoo instance (Docker, plus a custom audit addon) through procure-to-pay flows and injected seven fraud typologies into them: duplicate invoices, three-way-match violations, split purchases, subtle overbilling. Every trace and every event comes out carrying a ground-truth label.

Eleven detectors benchmarked against it under a leakage-safe temporal protocol, from audit rules and Isolation Forest up to two deep sequence models (a denoising autoencoder and a BINet-style model). Four typologies are easy — one document is visibly wrong. The other three are invisible to any method that looks at a single trace at a time, deep models included: they score at or near random.

The finding is what closes that gap. Widening the feature scope — time-of-day features and a ±14-day requester×vendor context window — takes a plain Isolation Forest from 0.099 to 0.970 AUPRC on threshold-dodging split purchases, and 0.536 to 0.947 overall, finishing roughly 0.5 AUPRC ahead of both deep models. Same estimator; only what it was allowed to see changed. One typology — a 1–3% skim hiding inside legitimate billing variation — resists every method, and ships as the benchmark's open challenge.

signspeak — two-way Indian Sign Language translation. Webcam signs are read as MediaPipe hand landmarks and spoken through a tiered TTS stack, with Vosk handling speech-to-text for the hearing side's reply. The pipeline is landmark-only by design; no video is ever stored. The dynamic word-sign tier runs MediaPipe Holistic into an LSTM over 30-frame sequences.

Built to a production standard rather than a demo one: 8.6 ms p50 inference on CPU, a 62-test headless suite, GitHub Actions CI, and an evaluation protocol reporting per-sign F1 and cross-signer (leave-one-signer-out) accuracy.

Working with

Python · Odoo ORM · PostgreSQL · Django · scikit-learn · OpenCV · MediaPipe · Pandas · NumPy · Docker · pytest · GitHub Actions · Linux

Elsewhere

B.Tech in Computer Engineering, L.J. University, 2022–2026. Ahmedabad, India. Reachable at aminmiral0007@gmail.com.

Pinned Loading

  1. signspeak signspeak Public

    Real-time Indian Sign Language → text → speech translator. MediaPipe hand landmarks and scikit-learn, ~25 fps on a laptop CPU with no GPU. Landmark-only pipeline — no video is ever stored. Headless…

    Python 1

  2. kuntardivyang/assetflow kuntardivyang/assetflow Public

    TypeScript 1

  3. erp-anomaly-bench erp-anomaly-bench Public

    Labeled event-log dataset + benchmark for anomaly/fraud detection in ERP business processes, generated from a real Odoo instance

    Python 1