Case study
Nesko
A serverless AI task manager on Flutter and AWS, taken from architecture to Google Play as sole technical lead.
The problem
Planning tools assume you already know how to plan. You get an empty board and a blinking cursor, and the work of turning a vague intention into scheduled, ordered tasks stays entirely with you.
Nesko takes unstructured input — a paragraph, a voice note, a dumped list — and produces a visual schedule from it, with an agent that can then act on that schedule rather than just display it.
What the agent actually does
Beyond task creation, the agent performs live search, generates Google Docs, Sheets and Slides, and scans email for commitments the user has not written down. Model calls route through OpenRouter, which keeps the app from being welded to a single provider’s availability or pricing.
The natural-language pipeline is the part that carries the product: converting free text into a structured schedule is the step that decides whether someone keeps using it after day one.
Cutting DynamoDB spend by 88.24%
The first schema was modelled the way the domain looked on paper, not the way the app actually queried it. The result was predictable in hindsight: reads that should have been single-key lookups were fanning out into scans, and cost tracked query volume almost linearly.
The fix was to redesign the table schema and indexing strategy around observed access patterns — what the app genuinely asked for, in what shape, how often — rather than around the entity model. Combined with revised AWS configuration, that reduced DynamoDB costs by 88.24%.
The transferable part is the method, not the number: the access patterns were always measurable, and the original design simply had not consulted them.
Security posture
Identity runs through Cognito. IAM roles are scoped least-privilege rather than shared. GuardDuty monitors file uploads, which is the one surface where users hand the system arbitrary bytes. On-device storage is AES encrypted.
None of that is exotic — it is the baseline a product handling someone’s calendar and email should meet before it ships, and most side projects skip it.
Infrastructure
Lambda for compute, DynamoDB for state, API Gateway at the edge, S3 and CloudFront for assets. Serverless was chosen for a specific reason: as a solo developer, the operational cost of idle infrastructure would have outweighed the cost of cold starts.