Portfolio ↗ / Selected work / Research code / Datasets / Beyond software / Get in touch ↗
Full-stack developer and researcher in Maastricht, the Netherlands. I build software for working with complex information: court decisions, Armenian texts, and personal knowledge.
At the Brightlands Institute for Smart Society, I work on legal research infrastructure with the Maastricht research and engineering teams. Independently, I design and build language-learning tools, knowledge systems, and client websites.
Research software connecting Dutch and European case law through search and citation networks. I contribute across ingestion, data normalization, APIs, authentication, the research interface, and deployment.
Python · Airflow · PostgreSQL · SvelteKit · Docker
Inside the system — from court records to a research workspace
Rechtspraak, HUDOC, and CELLAR enter through separate ingestion paths and converge on a shared legal-data model. Source-specific records and citation relationships remain traceable. The work is part of a wider BISS and Maastricht research programme.
flowchart LR
A[Rechtspraak] --> D[Ingest & normalize]
B[HUDOC] --> D
C[CELLAR] --> D
D --> E[(PostgreSQL)]
E --> F[Search & citation APIs]
F --> G[Research workspace]
An Eastern Armenian learning platform, shaped by my own experience learning the language. A graded course, grammar, a dictionary that recognizes inflected words, reading, spaced repetition, and shared notebooks all draw on the same language data.
TypeScript · React · Neon Postgres · Liveblocks · Yjs
Inside the system — one word, across every learning surface
A word encountered in a text resolves to a stable dictionary entry. That same record supports lookup, study, and review. Shared packages hold the language and learning logic; Postgres preserves learner progress and notes.
flowchart LR
A[Word in a text] --> B[Dictionary entry]
B --> C[Reader]
B --> D[Course & grammar]
B --> E[Spaced repetition]
C --> F[(Progress & notes)]
D --> F
E --> F
A private knowledge system in active development. AI proposes changes for review and answers questions with links to their sources. Notes support collaborative editing, version history, and portable Markdown export.
Next.js · PostgreSQL / pgvector · Claude · TipTap · Yjs
Inside the system — review what enters, trace what comes back
Capture starts with a proposal. After review, the note becomes part of a Postgres archive. Keyword and semantic retrieval supply evidence for answers; version history and Markdown export keep the archive recoverable.
flowchart LR
A[Thought or source] --> B[Proposed change]
B --> C[Human review]
C --> D[(Note archive)]
D --> E[Retrieval]
E --> F[Answer with sources]
D --> G[Markdown export]
- cellar-extractor — EU case-law extraction, multilingual full text, and citation relationships from CELLAR and EUR-Lex.
- echr-extractor — European Court of Human Rights data from HUDOC, including full text, legal sections, and citation networks.
- ECtHR citation rankings — Code, data, and reproducible analyses for my research on how network centrality relates to the importance of court judgments.
The extraction libraries are developed with the Maastricht Law & Tech Lab.
Legal data I publish on Hugging Face:
| Dataset | Contents |
|---|---|
| CJEU / CELLAR | EU case-law metadata, multilingual full text, and citation links. |
| Rechtspraak OpenData | Raw Dutch court-data snapshots and pipeline export archives. |
| ECLI → BWB references | Links between Dutch court decisions and the legislation they cite. |
| ECHR · coming soon | European Court of Human Rights case law. |
More projects and architecture notes ↗
I photograph places and everyday life, study Eastern Armenian, and work on educational access for students affected by conflict. Earlier chapters include UWC Dilijan in Armenia and climate organising in Turin.
Photography · Humanitarian work · Earlier work
Have a difficult system to make usable? Let's talk ↗
Original artwork, rendered from code. Still version · How this README works




