Portrait of Matteo Gallo

Matteo GalloSoftware & AI Engineer · LausanneAvailable

I build AI products you can verify.

Complete products, from the interface to production. Every measure is published, defects included.

See the projectsWrite an e-mail

Live demo: Verity, my RAG agent, on a test contract

Service Level Agreement

This Service Level Agreement ("SLA") applies to the services provided by Acme Corporation under the Master Services Agreement.

1. Uptime Commitment

Provider commits to a monthly uptime of 99.9% for the production service. Uptime is measured per calendar month and excludes scheduled maintenance windows.

2. Service Credits

If monthly uptime falls below the commitment, the Customer is entitled to a service credit calculated as a percentage of that month's fees:

  • Uptime from 99.0% up to 99.9%: 10% credit.
  • Uptime from 95.0% up to 99.0%: 25% credit.
  • Uptime below 95.0%: 50% credit.

Service credits are the Customer's sole and exclusive remedy for availability failures and must be claimed in writing within thirty (30) days of the affected month.

3. Support Response Times

Provider responds to support requests according to severity:

  • Priority 1 (critical, service unavailable): within one (1) hour.
  • Priority 2 (high, major feature impaired): within four (4) business hours.
  • Priority 3 (normal): within one (1) business day.

4. Scheduled Maintenance

Routine maintenance is performed on Sundays between 02:00 and 06:00 UTC. Provider gives at least forty-eight (48) hours' advance notice of any scheduled maintenance, which does not count against the uptime commitment.

1 The question

What is the response time for a Priority 1 support request?

3 The answer, verified

For a standard Priority 1 (critical, service unavailable) support request, the response time is within one (1) hour. If the customer has Premium Support, the Priority 1 response time is shortened to thirty (30) minutes, available 24 hours a day, seven days a week.

Cited: SLA contract (section 3), Northwind order form (section 3)

  • Quote found word for word in the document
  • 3/3 claims supported by their quote, according to the judge
  • confidence 0.99

1 The question

What is the response time for a Priority 4 support request?

3 The answer: a refusal, verified

I don't know based on the provided documents.

Refused by the model, confidence 0.97

Closest passage: SLA contract (section 3), judged insufficient

The SLA section (document index 0) explicitly lists only Priority 1, 2, and 3; no Priority 4 tier exists in any evidence, so the answer correctly refuses to fabricate a response time.

Run sourceRun eval_969e1d5_test.json of Verity (questions q-010 and q-078), on the contract sla.md

0/31Proof: verity/scorecards/live-v1.1.0.jsonanswers with a hallucination, according to an LLM judge, among the answerable questions Verity answered

17/20Proof: verity/scorecards/live-v1.1.0.jsonunanswerable questions correctly refused

3/20Proof: verity/scorecards/live-v1.1.0.jsonunanswerable questions it answered anyway: its main defect

+ 01

Projects

No. 01

Verity

Frame 110 of Verity's live recording (agent claude-sonnet-4-6): the question "What is the response time for a Priority 1 support request?", the answer "within one (1) hour", shortened to thirty (30) minutes by the Premium Support of order form NW-2025-001, with its citations [1] and [2], and on the right the cited SLA passage highlighted among the eight retrieved sources.
A frame of the live demo recording (claude-sonnet-4-6): a citation clicked, its passage highlighted. See the recording (GIF)

A RAG agent over company documents: it answers by quoting word for word, refuses when its evidence is weak, and publishes how often it refuses rightly.

Known defect

3/20Proof: verity/scorecards/live-v1.1.0.json unanswerable questions got an answer instead of a refusal.

Python 3.12, FastAPI, Postgres + pgvector, Next.js, Claude.

No. 02

PromptLang

Last frame of the bun run demo recording: semver-check rejects an incompatible change released as 1.1.0, passes it as 2.0.0, a consumer pinned to ^1.0.0 fails cleanly, then the 3 prompt tests pass on mock responses.
Last frame of the bun run demo recording. See the recording (GIF)

A typed language for LLM prompts, compiled to TypeScript or Python, published on npm.

Known defect

12/40Proof: promptlang/evals/linter/findings-review/score.json AI linter flags judged correct in human review.

Strict TypeScript, Bun, npm.

+ 02

Method

All the rules and their incidents: how-i-build

+ 03

About

Software & AI Engineer in Lausanne, self-taught. I build AI products end to end and publish what they are worth, measures and defects.

A software and AI engineering role in French-speaking Switzerland? Write to me.

WriteLinkedInGitHub