TaskGenius is a task management platform built around one strict rule:
๐ง The AI component is structurally incapable of mutating user data.
Instead of trying to make an LLM โsafe enoughโ to act, TaskGenius removes that capability entirely.
The AI generates suggestions only. All real state changes are executed exclusively through validated backend APIs under explicit authentication, authorization, and ownership checks.
This project explores how hard trust boundaries, capability separation, and container-level isolation can make AI-assisted systems safer without relying on prompt discipline or model behavior.
Most AI-integrated applications eventually let models do one or more of the following:
- ๐ call tools
- โ๏ธ execute commands
- ๐๏ธ modify databases directly
- โฑ trigger automations or workflows
That often creates fragile systems where safety depends on:
- ๐งฉ prompt correctness
- ๐ค model alignment
- ๐ hoping the AI behaves as intended
TaskGenius explores a different approach:
๐ Instead of making AI safe enough to act, remove its ability to act entirely.
The AI may recommend tasks, summarize tasks, or generate weekly insights โ but it cannot persist, mutate, schedule, or notify on its own.
TaskGenius is not just a task app with an LLM attached to it.
It is designed around a stricter security model:
- ๐ง the AI is inference-only
- โ๏ธ all writes go through a single mutation boundary
- ๐ authentication and authorization are centralized
- ๐ณ trust boundaries are enforced at the container and network level
- ๐ค human approval is required before persistence
This means safety comes from architecture, not from asking the model nicely.
Inference, mutation, and automation are separated at the architectural level.
- ๐ง AI performs inference only โ task suggestions and summaries
- ๐งพ APIs perform mutations and scheduling โ validated task CRUD and automation triggers
- ๐ณ Infrastructure enforces isolation โ services have minimal privileges and constrained network access
Each responsibility is isolated in its own service with a deliberately narrow capability surface.
- ๐ป Client โ React + TypeScript (Vite)
- ๐ core-api โ the only public backend ingress
- ๐ค chatbot-service โ internal AI suggestion service
- โฑ๏ธ scheduler / automation layer โ internal reminder and summary workflows
- ๐๏ธ MongoDB โ internal data store, reachable only by
core-api
- JWT authentication and authorization
- all task CRUD operations
- validation and ownership enforcement
- orchestration of AI and automation APIs
- single CORS enforcement boundary
- generates task suggestions only
- stateless by design
- no database access
- no exposed public ports
- no mutation capabilities
- time-based task reminders
- weekly summaries or AI-generated insights
- Telegram notification orchestration through explicit backend paths
- accessible only by
core-api - never directly exposed to AI or automation services
All services communicate over a private Docker network, but only one service is exposed externally.
TaskGenius enforces safety through architecture, not through AI behavior, prompt wording, or runtime optimism.
Although the system is composed of multiple containers, all external traffic enters through one controlled gateway:
- only
core-apiexposes a public port - the frontend communicates exclusively with
core-api - AI, scheduler, and database services are not reachable from outside
- CORS is enforced at one boundary
This guarantees:
- ๐ one authentication surface
- ๐ one authorization surface
- ๐ one CORS policy
- โ๏ธ one mutation entry point
Externally, the system behaves as a single logical backend, even though it is internally modular.
The AI service is not โtrusted to behave.โ
It is structurally incapable of acting.
It has:
- โ no database credentials
- โ no access to mutation APIs
- โ no ability to trigger schedulers or automations
- โ no exposed public ports
- โ no role in authentication or authorization
Even if the AI returns malicious output or is fully compromised, there is no direct execution path from AI output to persistent mutation.
All state changes flow through exactly one service:
core-api is the only service allowed to:
- create tasks
- update tasks
- delete tasks
- trigger scheduled jobs
- send Telegram notifications
Every mutation is:
- ๐ authenticated via JWT
- ๐ authorized through ownership checks
- โ validated through schema enforcement
There are no hidden write paths, side channels, or background shortcuts.
A typical end-to-end flow looks like this:
- ๐ค The user describes a goal in natural language
- ๐
core-apirequests suggestions fromchatbot-service - ๐ค The AI returns structured task suggestions only
- ๐ค The user explicitly selects which suggested tasks to create
- ๐
core-apivalidates, authorizes, and persists the selected tasks - โฑ๏ธ The scheduler later triggers reminders or summaries
- ๐ฌ Telegram notifications are sent through a dedicated backend automation path
The AI is never part of the mutation path.
It may influence what is suggested, but never what is executed.
Docker is not used only for deployment convenience.
In TaskGenius, it acts as an architectural control boundary.
It enforces:
- ๐ only
core-apiexposes a public port - ๐ internal services expose no public ports
- ๐งฑ minimal privilege per container
- ๐ network-level trust boundaries between services
This makes isolation enforceable at runtime rather than merely documented at the code level.
TaskGenius is interesting because it treats trust boundaries as a product feature and architecture as a safety mechanism.
It combines several strong system-design ideas in one project:
- ๐ง inference-only AI integration
- โ๏ธ single validated mutation boundary
- ๐ณ container-enforced trust isolation
- ๐ค human-in-the-loop persistence
- ๐ centralized auth, authz, and validation
- โฑ separated automation layer with no AI write authority
This makes it a stronger example of safe AI-assisted systems design than a typical task app with an LLM wrapper.
- โ AI service is structurally incapable of mutating state
- โ
core-apiis the sole write authority - โ container/network layout enforces service trust boundaries
- โ authentication, authorization, and ownership checks are centralized
- โ automation is separated from AI inference capabilities
- โ deterministic backend behavior remains intact even with AI suggestions in the loop
- โ human approval is required before persistence
TaskGenius demonstrates:
- ๐๏ธ security by architecture, not by prompt engineering
- ๐งฉ strict separation between inference, mutation, and automation
- ๐ safe AI integration patterns for real applications
- ๐ณ container-level trust enforcement
- ๐ predictable backend behavior under explicit write controls
- ๐ค human-in-the-loop execution in AI-assisted workflows
TaskGenius intentionally gives up some convenience in exchange for stronger safety guarantees.
- ๐ค more user involvement โ the AI does not act autonomously
- ๐ซ no AI-triggered mutations or scheduling
- ๐งพ more backend mediation between suggestion and persistence
- โ๏ธ less convenience than fully agentic systems
They deliberately favor:
- ๐ safety
- ๐ predictability
- ๐ debuggability
- ๐งฑ trust-boundary clarity
over maximum automation.
- ๐งโ๐ผ role-based suggestion policies
- ๐ค multi-agent suggestion ensembles that remain inference-only
- ๐งพ event sourcing for task mutations
- ๐ distributed scheduling via message brokers
- ๐ policy-driven notification routing
- ๐ก richer trust-boundary observability and audit trails
- ๐ณ Docker and Docker Compose
- Node.js 20+ (for local client development)
- Python 3.11+ (for local backend development)
git clone https://github.com/your-username/TaskGenius.git
cd TaskGeniusdocker compose up --buildcurl http://localhost:8000/healthcd packages/client
npm install
npm run devAccess the application at:
http://localhost:5173
Create a .env file in the project root for optional integrations.
If not set, the system can fall back to template-based behavior.
USE_LLM=true
OPENAI_API_KEY=sk-...TELEGRAM_BOT_TOKEN=your-bot-tokenThis project is intended as:
- ๐ผ a portfolio showcase of architectural decision-making
- ๐ a reference design for safe AI-assisted systems
- ๐ค a discussion artifact for backend, platform, and R&D interviews
The safest AI system is one that is incapable of acting by design.
TaskGenius shows that enforcing strict architectural constraints โ from APIs down to container boundaries โ can eliminate entire classes of failure and security risk.
Designed and implemented by Shaked Arazi.
TaskGenius was built with a strong emphasis on trust boundaries, backend mediation, and architecture-enforced AI safety.