Python tests and logs helped small teams trace failures
Typed data models and shared interfaces supported more than a dozen applications and pipelines.
One shared data model defines every record, and generated tests show bad data stopping at the rule it breaks.

Context
A dozen-plus Python applications and data pipelines built for scrappy teams across industries, internal tools, automations, and agent backends that needed to behave like "real" systems, not side-project scripts.
Problem
The teams I built for ran ad-hoc scripts, fragile unit tests and no observability, and now AI-generated code no one fully understood. Failures were silent.
Approach
I standardized a stack and workflow. Specs first: PRD-style requirement docs broken into task briefs. Data models next: Pydantic types as the single source of truth. APIs via FastAPI so humans and agents share the same interface. Logfire instrumentation for structured observability. Hypothesis property-based tests to explore weird inputs and edge-cases instead of brittle, hand-picked unit tests. Everything wired into CI/CD and, where useful, exposed through MCP.
Stack
- Python
- Pydantic
- FastAPI
- Hypothesis
- Logfire
- MCP/FastMCP
- CI/CD pipelines
Result
More than a dozen applications and pipelines shipped on this stack: when something broke, logs and tests pointed to the cause instead of guesswork. Junior developers and agentic coding tools could contribute safely because invariants and data contracts were explicit.
Impact
A small team gets the logs, tests and data contracts a platform team would, without the headcount. I've built on this stack by default ever since.
Lessons
Observability, property-based testing, and type-safe data models are leverage for small teams rather than enterprise-only extras.
Who this is for
For founders and technical leads who want Python-based automations and agent infrastructure they can trust long after the first demo.
Get a quoteThe method behind this result
- Agent SystemsAI agent operators need action histories they can inspect after interruption. Each attempted tool call should retain its arguments, permission check and result.
- The AI Agent Industry Has Automated the Handoff Back to YouThe agents finish their parts. The buyer still has to make the result usable.