Make AI codegen more reliable

Use specs to guide AI agents for better autonomy, speed and costs.
# Primary user-data ETL pipeline

Parses, validates, and normalizes raw clicks, prompts, and API usage for analytics and model training pipelines.

[@generates](./src/etl_pipeline.ts)

## Parse frontend click logs

Parses raw click events from S3 and validates against [V3 schema](./data/formats/click:v3.md). Extracts user ID, timestamp, and element identifier.

Accepts a well-formed click event with `user_id`, `timestamp`, and `element_id` [@test](./tests/process-valid-event.test.ts)
Rejects malformed events missing required fields [@test](./tests/reject-malformed-event.test.ts)
Parses ISO 8601 timestamps correctly [@test](./tests/parse-iso-8601.test.ts)
Normalizes `element_id` casing [@test](./tests/normalize-element_id.test.ts)

## Normalize prompt logs

Extracts prompt logs from the database, cleans newline padding, lowercases and trims whitespace, and filters [toxic entries](./data/guidelines/trust-and-safety.md).

Converts `"  Hello\n"` to `"hello"`[@test](./tests/basic-normalization.test.ts)
Discards empty or whitespace-only prompts [@test](./tests/empty-prompts.test.ts)
Filters out prompts containing toxic language patterns [@test](./tests/filter-toxic-
language.test.ts)
Introducing

AI Native Development

Tessl introduces a new development paradigm where specs drive everything, enabling truly autonomous AI-powered software evolution while humans focus on what matters most.
Key Benefits of Spec-centric Development

Always know what your software does

Natural language specs are the source of truth, ensuring key details aren’t buried in code.

Never break existing functionality

Specs and integrated tests provide a powerful protection against regressions when evolving your system.

Autonomous maintenance and updates

Dependencies change? OS updates? Your software adapts automatically without breaking.

Generate across languages and platforms

Specs are easily adaptable to other environments, enabling you to port code to whatever stack and language you need.

Adaptable to your environment

With specs, it’s easy to regenerate code according to your team's preferences, patterns, and constraints.

Self-optimizing performance

AI native software can be auto-optimized based on real usage data, and improve itself over time.