Software Portfolio
I'm a licensed clinical psychologist who designs and builds software for clinical practice and small businesses — practice-management systems, workflow automation, integrations between existing tools, and AI-assisted clinical tools. This page is a portfolio, not a storefront: the systems below exist and do real work. If one of them sounds like a problem you share, you are welcome to get in touch.
Background
Two careers, one set of habits
I came to clinical psychology by way of a 16-year information-technology career: between 1997 and 2013 I ran Unix systems and Internet services in academic, ISP, and enterprise settings — from university IT operations to systems-management engineering for a large national company.
That career was about making systems dependable — automation, configuration management, careful integration between tools, and teaching other administrators to do the same.
I apply the same approach to software for clinicians: understand the real workflow first, automate what is repetitive, keep data honest, and build tools that will still make sense a year later.
Say hi
Questions about this work?
Inquiries are welcome — informally, about anything here or anything you think I might be able to help with. The most useful first message is friction you already have: reporting you do by hand, data that lives in two places, a step you wish could just run itself. Get in touch.
What I build
From bottleneck to working system
My own tools and anyone else's get built the same way: software that fits the way people actually work, instead of people reshaping themselves around generic software.
- Custom clinical software: practice-management systems — scheduling, documentation, billing reconciliation, analytics, and workflow tracking for day-to-day clinical operations
- Integrations: the tools you already use — billing platforms, calendars, EHRs, and reporting — wired together cleanly
- Workflow automation: deadline tracking, import/export pipelines, and validation/audit passes that remove repetitive admin
- AI-assisted tools, done carefully: structured multi-stage prompts, grounding in curated knowledge bases, retrieval over reference corpora (Qdrant; hybrid dense + sparse + reranking), and cloud LLM layers (Vertex AI / Gemini)
- Privacy-first backends: authenticated users, encrypted data storage, audit logging, rate limiting, and deliberately careful handling of clinical data
- One system, many surfaces: web apps (FastAPI + React/TypeScript), terminal interfaces (Python/Textual), AI-agent-facing APIs, and the deployment pipelines that publish them (Cloudflare Pages/Workers, GitHub Actions)
- Systems that verify themselves: tested compute engines, decision ledgers that record why choices were made, and build checks that run before anything ships
Selected work
Clinical systems
A selection, not an inventory — the systems below are the ones a look at is worth your while; there is more under the hood than appears here.
Clinical Practice Manager
A full-stack practice-management platform in daily use: sessions with billing detail from first entry to paid or disputed, an assessment pipeline that tracks every stage from intake interview to final report deadline, and pay reconciliation against expected revenue — “money on the table” surfaces income shortfalls automatically.
- Therapy-session management: scheduling, billing information, and documentation tracking
- Assessment workflow engine: multi-stage tracking (interviews, prep, report deadlines) per assessment, with stage-by-stage statuses on the dashboard
- Pay reconciliation: expected vs. received and unpaid balances per pay date, with drill-down to the contributing sessions
- Financial, location, and workflow-efficiency analytics, including average time-in-stage reporting
- Two interfaces: a modern web app and a keyboard-driven terminal UI, both backed by one API — plus an API reference written so AI agents can operate the system safely
Built with: FastAPI, SQLAlchemy, SQLite · React, TypeScript, Tailwind · Python (Textual) terminal UI
Open source
Read it yourself
The exam kit ships as a public repository: the curated legal corpus, every generated question, and the exam engine are all inspectable — and usable — by anyone preparing for the Georgia licensure exam.
Georgia Jurisprudence Exam Kit → source
An open-source study kit and examination simulator for the Georgia psychology jurisprudence examination: a curated statutory and administrative-rule corpus (O.C.G.A. statutes and Board rules), domain-weighted mock exams, active-recall flash cards, and a full-screen terminal exam simulator that mirrors real testing conditions — timed sections, question flagging, a jump grid for review, and granular diagnostic score reports after each attempt.
- Audited legal corpus: official statutes and Board rules, structured and cross-checked against the exam blueprint
- Domain-weighted practice exams matching the published exam weighting
- Terminal exam simulator: timer, flagging, jump grid, and diagnostic score reports
- All study materials independently generated — no official or leaked examination content
Built with: Python · Textual + Rich terminal UI
Prototypes
In the lab
Maturing systems, deliberately labeled as such — one proof of concept, one work in progress — rather than presented as finished.
proof of concept
Supervision Prep
A proof-of-concept supervision-preparation tool for clinicians: session audio is transcribed locally (nothing leaves the machine), a dual-pass de-identification system removes identifying information, structured clinical features are extracted from the session, and the tool drafts a reflective supervision narrative informed by established supervision frameworks.
- Local transcription: faster-whisper runs on the clinician's own machine
- Dual-pass de-identification targeting the HIPAA Safe Harbor identifier set: deterministic rules plus model validation
- Structured extraction: talk ratios, interventions and techniques, clinical measures, and stuck points per session
- Narrative generation is retrieval-grounded: the retrieval mechanism is implemented, while the reference corpus is still a placeholder — part of why this remains a proof of concept
- Encrypted caseload storage with longitudinal session history, in a dashboard interface
Built with: Python · faster-whisper · FAISS retrieval · Streamlit dashboard
work in progress
Continuing-Education Tracker
Log a continuing-education activity once; the tracker maps it against every held license's requirements and renewal cycle at once, computing exactly how far an activity applies across jurisdictions and licenses — and giving a clear completion verdict per license heading into renewal.
- Per-license renewal dashboards with categories, deadlines, and completion verdicts
- Cross-jurisdiction credit allocation: one activity, evaluated against multiple license rules simultaneously
- Arithmetic engine with a test suite covering clip/overlap and category edge cases
- Command-line workflow with interactive entry and a growing web interface
Built with: Python CLI · tested compute engine · web interface (new)
Building blocks
Modules underneath the systems
ReferenceDB — local hybrid RAG database
A standalone, offline retrieval-augmented-generation database: dense vector search (Qdrant + Ollama embeddings) combined with sparse lexical vectors (SPLADE) and cross-encoder reranking. Multi-collection management, structured-Markdown ingestion for filtered retrieval, and a CLI — the privacy-preserving retrieval backend beneath the AI-assisted clinical tooling.
GreyCloud — resilient Vertex AI client → source
An open-source Python client layer over Google Vertex AI / Gemini: unified authentication (OAuth, service-account impersonation), automatic retry with re-authentication-aware recovery, context caching for cost efficiency, token counting, Vertex AI Search grounding, and batch pipelines. The API layer the clinical tools above run their model traffic through.
The meta level
Even this page is a built thing
This website and the materials that list it both come from single-source systems with automated checks of their own.
Website build system
The page you're reading is itself generated software: every fact lives in one YAML file, templated into static pages with automated SEO metadata, sitemap, JSON-LD schema, link checking, and a decision ledger that records why each choice was made — built and deployed by a pipeline.
CV build system
A single-source-of-truth LaTeX publishing system for academic and career documents: one canonical data set generates the master CV and multiple targeted resumes, with automated verification gates that check rendered output against the source.