Skip to content
View nisamaasoglu's full-sized avatar

Block or report nisamaasoglu

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.

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
nisamaasoglu/README.md
Nisa Maaşoğlu

LinkedIn Email Live Open to work

>_ SYSTEM.INIT

nisa = {
    "role":     "Software Engineer",
    "based":    "Türkiye 🇹🇷",
    "tracks":   ["retrieval-grounded AI", "production web systems"],

    "flagships": {
        "Anamnesis": "hospital assistant that answers only from what it retrieved",
        "Titulus":   "law practice portal — live, 2,468 articles, run by the client",
    },

    "stack": {
        "ai":       ["RAG", "tool-calling agents", "LLM APIs", "vector search"],
        "backend":  ["Python", "FastAPI", "PHP", ".NET", "SQLite"],
        "frontend": ["JavaScript", "React", "TypeScript", "PyQt6"],
        "signals":  ["OpenCV", "librosa", "Arduino", "ESP32", "C++"],
    },

    "rule":     lambda claim: claim if measurable(claim) else labelled(claim),
    "shipping": "systems that still run after I stop touching them",
}

>_ EVIDENCE.LOG

Every number here is checkable in the repositories below. That is the point of the section.

>_ SYSTEMS.DEPLOYED

STATUS SYSTEM WHAT IT DOES STACK
🟢 LIVE Titulus Law practice portal in daily use. 2,468-article legislation library, daily Official Gazette feed, database-free admin panel the client runs himself. PHP JS JSON Apache
🧪 CI ✅ Anamnesis Hospital assistant that can only answer from what it retrieved. Clinical questions refused before the agent runs. No write path exists — a test proves it. RAG agents FastAPI NumPy
🧪 CI ✅ LetheFS Autonomous forgetting file system. Recall decays along the Ebbinghaus curve into a reversible quarantine. Nothing is deleted silently. FastAPI WebSocket JS
🧪 CI ✅ Aurora Live audio → pitch, timbre, loudness → a volumetric raymarching shader. Every session is a one-time piece. librosa GLSL p5.js
🧪 CI ✅ Unicorn Solar search-and-rescue rover. Raises its own Wi-Fi, serves a command centre from flash, reports position as a disc with a growing radius — because it has no encoders. ESP32 C++ Python
🧪 CI ✅ Helixir AES-256-GCM file encryption with a DNA representation layer. The A/C/G/T layer is representation — the cipher is AES. PyQt6 scrypt AES-GCM
🧪 CI ✅ BOZGUN Colour-tracking turret. Pixel position → pan/tilt servo angles over serial. Simulated hit, no projectile. OpenCV Arduino serial
🧪 CI ✅ Orchidia Orchid identification and care. Classifier reads the species, then checks readings against that species' range. Flask transfer learning
🔧 BUILD Cardia Single-lead ECG. R-peaks found on-device — adaptive threshold, refractory window, interval gating — streamed to a dependency-free dashboard. Arduino AD8232 DSP

>_ RUNNING.NOW

Aurora LetheFS BOZGUN
AURORA · sound driving a shader LETHEFS · files decaying into quarantine BOZGUN · detect → track → lock on

>_ TECH.ARSENAL

🧠 AI & RETRIEVAL

RAG Agents LLM APIs Vector Search Qdrant Guardrails

GROUNDED_ANSWERS // CITATION_TRACKING // SEMANTIC_CHUNKING // OFFLINE_FALLBACK // REFUSAL_LAYERS

🐍 BACKEND

Python FastAPI Flask PHP .NET SQLite

🎨 FRONTEND

JavaScript TypeScript React PyQt6 GLSL

📡 SIGNALS & EMBEDDED

OpenCV librosa C++ Arduino ESP32

R_PEAK_DETECTION // COLOUR_TRACKING // DEAD_RECKONING // FFT // ADAPTIVE_THRESHOLDING

🏗️ TOOLING

Docker GitHub Actions pytest Linux Git

>_ POSTMORTEM.LOG

Portfolios only show finished things, which makes everything look equally easy. These are real defects I found in my own work, and the change each one forced.

! ANAMNESIS · the offline vectoriser collided
- a question about currency hedging retrieved a triage document, score 0.11
+ lexical gate added: a passage must share a real term before it counts as evidence
+ two tests — one asserts off-topic queries return nothing, one asserts that
+ WITHOUT the gate they would not, so the guard cannot be removed silently

! CARDIA · the dashboard showed a blood-pressure figure
- an AD8232 cannot measure blood pressure
+ removed; modelled values are now labelled as modelled

! UNICORN · position reported as a bare coordinate
- no wheel encoders, so dead reckoning drifts and a coordinate hides that
+ position is a disc with an uncertainty radius, different constants when uncalibrated
- two motor pins sat on ESP32 strapping pins; a blocking pulseIn stalled the loop
+ repinned and replaced — both caught by moving mission logic off the board

! HELIXIR · the README framed the DNA layer as encryption
- encoding is not encryption
+ reframed: AES-256-GCM does the work, A/C/G/T is representation

! ORCHIDIA · the UI said "live conditions" over simulated readings
+ says simulated now, in the interface and in the docs

The pattern is the same every time. The bug was never the algorithm — it was a claim the system was not entitled to make.

>_ VERIFY.ME

# 1 · a grounded answer, and the evidence behind it
git clone https://github.com/nisamaasoglu/anamnesis && cd anamnesis
pip install -r requirements.txt && python run.py
#   ask  "What are the visiting hours in the intensive care unit?"
#   →    the answer names the document and section it used
#   ask  "Do I have cancer?"
#   →    refused before any tool runs, with the route to a human

# 2 · the tests that hold it together
pip install -r requirements-dev.txt && python -m pytest -q      # 45 passed

# 3 · firmware logic, verified with no hardware attached
git clone https://github.com/nisamaasoglu/Unicorn && cd Unicorn
./tools/run_tests.sh

Anamnesis 45 · Helixir 25 · Aurora 16 · Orchidia 13 — plus Unicorn's host-compiled C++ suite. CI runs ruff and pytest on Python 3.10 / 3.11 / 3.12 on every push.

>_ OPERATING.PRINCIPLES

[01]  TEST THE DECISION, NOT THE DEVICE
      The logic that decides — is this a heartbeat, is this a survivor, has this
      file been forgotten, is this passage evidence — is separated from the
      hardware or model feeding it. Testable on a laptop with nothing attached.

[02]  STATE THE UNCERTAINTY
      An estimate that reports its own error is worth more than a confident
      number that quietly lies.

[03]  DECLARE THE MODE
      Anamnesis reports generative:false when no model is running. Cardia prints
      "--" with no electrode. Orchidia labels simulated readings as simulated.
      A system that hides which mode it is in is lying politely.

[04]  DOCUMENT WHAT EXISTS
      No roadmaps. No planned features. No claim I could not defend in a
      technical interview.

>_ AWAITING.CONNECTION

LinkedIn Email

Open to software engineering roles — AI systems, backend, full-stack.

Pinned Loading

  1. Cardia Cardia Public

    Single-lead ECG monitor: an AD8232 and an Arduino detect R-peaks on-device and stream heart rate over Ethernet to a dependency-free web dashboard, with a hardware-free demo mode.

    JavaScript 2

  2. Unicorn Unicorn Public

    Solar-powered search-and-rescue rover: an ESP32 raises its own Wi-Fi access point, serves a command centre from PROGMEM, listens for survivors through a peak-to-peak microphone envelope, and estima…

    C++ 2

  3. Anamnesis Anamnesis Public

    Retrieval-grounded information assistant for a hospital — RAG + tool-calling agent with clinical guardrails. FastAPI · Python. Synthetic data.

    Python 1

  4. Titulus Titulus Public

    Production website for a real-estate law practice — a 2,468-article legislation library, a live Official Gazette feed, and a database-free admin panel a non-developer runs unaided. PHP · vanilla JS…

    1

  5. Helixir Helixir Public

    Passphrase-based file encryption with a DNA representation layer — AES-256-GCM with scrypt key derivation, ciphertext rendered as an A/C/G/T sequence exportable to FASTA. PyQt6 desktop app.

    Python

  6. LetheFS LetheFS Public

    An autonomous forgetting file system modelled on human memory: each file's recall score decays along the Ebbinghaus curve until it drops into a reversible quarantine you resolve from a live dashboa…

    Python 1