SIDE PROJECTS
Side projects, experiments, and retained records.
Working systems and side projects I build for fun, alongside retained build records from past engineering work.
SIDE PROJECTS
Built for fun
Working side projects and systems I build for fun, exploring new ideas, tooling, and architectures in the open.
PennyAn AI agent that connects Telegram, calendar, mail, phone, markets, and publishing through one command per capability.
A group-chat agent that reads the thread, its media, and its links, then answers in context when called.
An AI certification exam simulator and benchmark with Pearson VUE timing, Kokoro speech synthesis, and cited documentation across nine tracks.
Philadelphia's open property data resolved into one layer and served three ways: crawlable reports, a browser map, and a research agent that cites its records.
Trading algorithms proven on a paper account, run live where they hold up. The research never sees a price, the code owns position sizes, and every record is immutable.
An address list goes in, house portraits on mugs and cards come out. Each address is a paid job that parks when the imagery is uncertain.
CAPABILITIES, WORKFLOWS, SYSTEMS
The architecture behind the work
The systems use the same approach: stable operations below the model, durable workflows around long-running work, and a traceable record when a system does something consequential.
commands on Penny's stable capability surface
capability domains exposed through that one command line
versioned n8n workflows around the agent surface
active systems with different interfaces and risk boundaries
Give models stable operations
One CLI makes every operation a testable command, from sending mail to generating images to restarting services.
Memory, web search, full browser control, local speech in and out, and image pipelines are each one command with the same contract.
Every caller gets the same surface: the agent inside its loop, the workflows outside it, Claude Code, OpenClaude, and me at a terminal.
Carry state past one chat turn
Versioned workflows schedule the work and expose explicit stop points.
The morning briefing, video production, publishing, and site changes each run as inspectable stages, with an approval gate on every external write.
A site change, for example, arrives as an allowlisted proposal with a stage preview and an exact diff, and promotes only on approval.
Make the boundary testable
A model can propose whatever it likes. Code, policy, and named reviewers define the decisions it is allowed to carry out.
Blind judges challenge drafts, and adversarial fixtures catch output that looks finished but is wrong, before a reader sees it.
Every run stays attributable from input to outcome. Each known failure class has its own recovery routine, and nothing retries silently.
Use the right shape for the job
The same stack ships as six different products, and each one keeps only what its job needs.
Penny is the full surface behind approval gates. LetMeCheckThatBot is a separate, cheaper loop that keeps the group chat as the interface. BlockReport feeds a normalized city record to in-browser analytics and one agent with 33 bounded tools.
Every KTrader decision has to clear deterministic risk gates, and every action leaves an immutable record. CertArena runs zero-dependency exam simulations with synchronized speech and Pearson VUE timing. ScooScoo runs as an isolated worker joining generation, payment, and delivery.
BUILD RECORDS
Earlier products, kept for the evidence
These products are retired. The records remain because the technical and operating problems are still current.
A virtual closet and outfit-planning product launched in 2009.
It read every video on an account as data and graded the whole account's strategy for its platform.
A private vision and voice system that indexed camera recordings, retrieved specific moments, and broadcast two-way audio through local hardware.
Contact-sheet reading that cut the cost of analyzing a video from eight cents to under a penny.
The hackathon build where the group-chat agent started. Nothing ran between messages.
An agent on an email address. Forward a thread, and everyone on it gets the decisions back.
A queued pipeline that took apart, OCR'd, and rebuilt large PDF sets, one retryable job per step.
Medical-legal record review: duplicate and irrelevant pages pulled before a person bills three dollars each to read them, every removal logged with its reason.
The earlier doorbell experiment that turned a camera feed into a searchable visit log.
WORK WITH ME
If one of these problems is yours, let’s talk.
Send the constraint that is blocking the work. A system boundary, a bad handoff, or a costly manual process is enough to start.