Skip to main content

Lisa Eichhöfer

I come from communication, and started building the tools myself instead of waiting for them.

Six applications run in the daily business of a food brand: complaint handling, product data with automated legal checks, marketing reporting. From the first line of code to the server they are operated on — which I set up myself.

Before that: a B.A. in Social and Business Communication at UdK Berlin, a market research study with 180 participants, paid social campaigns on Meta and TikTok. The communication side has not gone anywhere. It has simply picked up tooling.

Berlin · 15 repositories · 6 applications in production


Selected work #

Complaint Assistant — Emails arrive as free text, a language model reads and classifies them, finished tickets appear in the helpdesk. Dry-run by default; only an explicit command writes for real.

Product Database with Claim Checking — Health claims on food are strictly regulated. The model writes the copy, a verifiable rule decides whether it may be published.

Chatty — My own workspace for long AI conversations: highlights, side chats, a context gauge, and semantic search across every conversation, computed locally.

Marketing Dashboard — Newsletter, social, analytics and shop revenue in one place, with an AI analysis that explains the connections in plain language.

Influencer Matcher — Matches 100+ collaboration partners to the right product by searching years of history fuzzily. Days of spreadsheet work, now seconds.

Voice Assistant — Speak, transcribe, answer, read back — connected to Notion. One component was later carved out as its own secured endpoint for a different project.

Smaller things I have built: receipt recognition that reads a photo against a fixed schema and predicts the next refill; a survey app for a pilot study on the perceived authenticity of AI-altered advertising; a team recommendation tool in company use since May; a personal study and application dashboard with an exam module; a containerised price monitor; a habit tracker.


How I work #

The rule decides, not the model. Wherever a language model writes outwards, a verifiable rule stands in front of it. A model may phrase things; whether something may be published is decided by a check you can read.

Keys stay on the server. Model access runs through server-side intermediaries, never from the browser. Stored credentials are encrypted. Without the protection configured, an application does not start at all.

Ship first, extend after. Better something usable after three days with a file upload than the perfect API integration after six weeks. Whatever is deliberately missing in stage one gets written down, not glossed over.

What I build, I also run. My applications run on a server I set up myself — with encryption, my own DNS zone, persistent storage and an operations runbook. Including the outages I have found and fixed there.


Toolkit #

In use, not just read about.

LanguagesPython · TypeScript · JavaScript · SQL
AIClaude Agent SDK (Python and TypeScript) · OpenAI API · LiteLLM for provider-independent access · embeddings and semantic search · image recognition with structured output · speech recognition
WebFastAPI · Flask · Next.js · Express · Jinja2 · Chart.js
DataPostgreSQL · SQLite · pandas · WooCommerce API · Notion API · Klaviyo and analytics evaluation
OperationsLinux · Docker and Compose · reverse proxy with automatic certificates · DNS · Git and GitHub
MarketingMeta and TikTok Ads · KPI tracking · Google Analytics · MAXQDA · Canva · Photoshop · market research with 180 participants

Contact #

lisa.mje@gmail.com · LinkedIn · GitHub · Berlin

Code and live access to individual projects are available on request.