Certificat AgentReady.md vérifié
Émis le sig: cedb95c8d8d97966 Vérifier →

URL analysée

https://zentract.io

Analyser une autre URL

Score AI-Ready

89 / B

Bon

sur 100

Économie de tokens

Tokens HTML 30.615
Tokens Markdown 1083
Économie 96%

Détail du score

HTML sémantique 83/100
Efficacité du contenu 93/100
Visibilité IA 77/100
Données structurées 100/100
Accessibilité 100/100

Protocoles émergents

1 sur 3 détectés

Endpoints well-known recherchés par les agents IA. Détecté signifie qu’un agent peut découvrir et se connecter automatiquement à votre service.

  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
    • issuer: https://zentract.io
    • token_endpoint: https://zentract.io/api/oauth2/token
    • 2 grant type(s)
  • MCP Server Card Anthropic
    /.well-known/mcp.json
  • A2A Agent Card Google
    /.well-known/agent.json

Votre site ne supporte pas Markdown for Agents. Ce standard Cloudflare permet aux agents IA de demander du contenu en format markdown, réduisant l'utilisation de tokens de ~80%.

Comment implémenter

Implémentez un ou plusieurs : (1) Répondre à Accept: text/markdown avec du contenu markdown. (2) Servir des URLs .md (ex : /page.md). (3) Ajouter des balises <link rel="alternate" type="text/markdown">. (4) Ajouter des en-têtes HTTP Link pour la découverte markdown.

{\n res.setHeader('Vary', 'Accept');\n res.setHeader('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n res.type('text/markdown; charset=utf-8');\n return res.send(renderMarkdown('page'));\n }\n res.render('page');\n});"},{"id":"fastify","label":"Fastify","language":"javascript","filename":"server.js","code":"// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n reply.header('Vary', 'Accept');\n reply.header('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n }\n return reply.view('/page.ejs');\n});"},{"id":"nextjs","label":"Next.js","language":"typescript","filename":"app/page/route.ts","code":"// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n const accept = req.headers.get('accept') || '';\n if (accept.includes('text/markdown')) {\n return new Response(await renderMarkdown('page'), {\n headers: {\n 'Content-Type': 'text/markdown; charset=utf-8',\n 'Vary': 'Accept',\n },\n });\n }\n // Fall through to the page component\n return new Response(null, { status: 404 });\n}"},{"id":"wordpress","label":"WordPress","language":"php","filename":"functions.php","code":"post_content));\n exit;\n});"},{"id":"static","label":"Hugo / Jekyll / Astro","language":"txt","filename":"static/page.md","code":"# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in :\n# "}] }'>

Votre page repose fortement sur les éléments <div>. Les éléments sémantiques comme <section>, <nav>, <header>, <footer> et <aside> fournissent une structure significative pour les AI agents.

Comment implémenter

Remplacez les conteneurs <div> génériques par les éléments sémantiques appropriés. Utilisez <section> pour les groupes thématiques, <nav> pour la navigation, <header>/<footer> pour les en-têtes et pieds de page ou de section.

De nombreux éléments ont des attributs de style en ligne. Ils ajoutent du bruit pour les AI agents lors de l’extraction du contenu.

Comment implémenter

Déplacez tous les styles en ligne vers des classes CSS dans votre feuille de style. Utilisez des frameworks CSS utilitaires comme Tailwind si vous avez besoin de nombreux styles uniques.

Tokens Markdown: 1083
For agencies that bill time

# Stop losing revenue
to time you already
worked.

Zentract connects tasks, time, and billing in one place. Catch missed hours and overages before they become write-offs.

Join the waitlist

[Sign in →](https://zentract.io/sign-in)

No credit card required.

zentract — Acme Corp / Website Redesign

Write homepage copy

Acme Corp · Copywriting

1:45

Design system audit

Acme Corp · Design · Billable

02:34:18

Handoff to dev

Acme Corp · PM

—

Live timerRecording

02:34:18

Design system audit · Acme Corp

Used byDesign agenciesDev shopsConsulting firmsFractional teamsMarketing studios

The real cost of disconnected tools

01

### Time logged late is time not invoiced.

Details fade. Entries disappear. By Friday, no one remembers Tuesday's four-hour deep-work session.

02

### Scope creeps before you can react.

You hit 80% of budget with 40% of work left. The signal came too late to have a real conversation.

03

### Billing is a monthly reconstruction.

You spend hours piecing together what happened. Then write off the hours that don't have receipts.

Time Tracking

## Every task
is a timer.

One click starts tracking. Zentract ties the entry to the task, project, and client automatically. No separate app. No retroactive guessing.

-   ✓One-click timers on any task
-   ✓Billable vs non-billable on every entry
-   ✓Log from web or iOS & Android
-   ✓Only one timer runs at a time

Active tasks1 running

Design system audit

Acme Corp · Billable

02:34:18

Write homepage copy

Acme Corp · Billable

1:45:00

Stakeholder review call

Acme Corp · Non-billable

—

02:34:18

today · Acme Corp

Budget overviewLive

Website Redesign · Acme Corp82%

Q2 Content Strategy · Bloom44%

Platform Audit · NovaTech107%

Budgeted

240h

Logged

198h

Remaining

42h

Budget Control

## See the overage
before it happens.

Budget vs actual updates in real-time as time is logged. Get a warning at 80%. Have the scope conversation while there's still something to negotiate.

-   ✓Real-time budget vs actual
-   ✓Overage alerts at your threshold
-   ✓Per-project and per-client views
-   ✓Hours or dollar-based budgets

Invoicing

## Invoice from
source, not memory.

Select a billing period. Zentract groups time entries by task and generates line items. No spreadsheet. No reconstruction. The invoice reflects what actually happened.

-   ✓Generate from tracked time entries
-   ✓Grouped by task or category
-   ✓Billable-only filter built in
-   ✓Export-ready output

Invoice previewReady to export

Acme Corp

March 1–31, 2026

INV-0024

Due Apr 14, 2026

Design system audit

14.5 hrs · $150/hr

$2,175

Homepage copy

6.25 hrs · $120/hr

$750

Project management

3.0 hrs · $120/hr

$360

Total due$3,285

Export invoice →

## How it works.

Three steps. No setup ceremony. No onboarding calls required.

STEP 01

### Set up a project.

Create a client, add a project with a budget. Add tasks for the work ahead. Takes three minutes.

STEP 02

### Track time as you work.

Open a task, hit start. Stop when you're done. Zentract logs it against the client and project, billable or not.

STEP 03

### Invoice with one click.

Select a billing period. Review grouped line items from real entries. Export. Done.

## Free to start.
Scales when you do.

Everything you need to run a small team — no credit card, no 14-day trial cliff. Upgrade when your operation grows.

Free tier

$0/ month

-   ✓3 team members
-   ✓5 clients
-   ✓10 projects
-   ✓Unlimited time tracking
-   ✓Invoice generation
-   ✓iOS & Android apps

Join the waitlist

FAQ

## Common questions

Everything you need to know before getting started with Zentract.

How does Zentract help agencies track billable hours?

How is Zentract different from Harvest or Toggl?

Can Zentract generate invoices from time tracking?

Is Zentract free to use?

What types of agencies and teams use Zentract?

Does Zentract prevent scope creep on client projects?

Does Zentract have mobile apps?

## Every hour you worked
deserves to be invoiced.

Join early access. We'll reach out when your workspace is ready. No credit card required.

Join the waitlist

No credit card · No spam · Cancel anytime

Already using Zentract? [Sign in →](https://zentract.io/sign-in)
Zentract — Agency Time Tracking & Client Billing Software

For agencies that bill time

# Stop losing revenue
to time you already
worked.

Zentract connects tasks, time, and billing in one place. Catch missed hours and overages before they become write-offs.

Join the waitlist

[Sign in →](https://zentract.io/sign-in)

No credit card required.

zentract — Acme Corp / Website Redesign

Write homepage copy

Acme Corp · Copywriting

1:45

Design system audit

Acme Corp · Design · Billable

02:34:18

Handoff to dev

Acme Corp · PM

—

Live timerRecording

02:34:18

Design system audit · Acme Corp

Used byDesign agenciesDev shopsConsulting firmsFractional teamsMarketing studios

The real cost of disconnected tools

01

### Time logged late is time not invoiced.

Details fade. Entries disappear. By Friday, no one remembers Tuesday's four-hour deep-work session.

02

### Scope creeps before you can react.

You hit 80% of budget with 40% of work left. The signal came too late to have a real conversation.

03

### Billing is a monthly reconstruction.

You spend hours piecing together what happened. Then write off the hours that don't have receipts.

Time Tracking

## Every task
is a timer.

One click starts tracking. Zentract ties the entry to the task, project, and client automatically. No separate app. No retroactive guessing.

-   ✓One-click timers on any task
-   ✓Billable vs non-billable on every entry
-   ✓Log from web or iOS & Android
-   ✓Only one timer runs at a time

Active tasks1 running

Design system audit

Acme Corp · Billable

02:34:18

Write homepage copy

Acme Corp · Billable

1:45:00

Stakeholder review call

Acme Corp · Non-billable

—

02:34:18

today · Acme Corp

Budget overviewLive

Website Redesign · Acme Corp82%

Q2 Content Strategy · Bloom44%

Platform Audit · NovaTech107%

Budgeted

240h

Logged

198h

Remaining

42h

Budget Control

## See the overage
before it happens.

Budget vs actual updates in real-time as time is logged. Get a warning at 80%. Have the scope conversation while there's still something to negotiate.

-   ✓Real-time budget vs actual
-   ✓Overage alerts at your threshold
-   ✓Per-project and per-client views
-   ✓Hours or dollar-based budgets

Invoicing

## Invoice from
source, not memory.

Select a billing period. Zentract groups time entries by task and generates line items. No spreadsheet. No reconstruction. The invoice reflects what actually happened.

-   ✓Generate from tracked time entries
-   ✓Grouped by task or category
-   ✓Billable-only filter built in
-   ✓Export-ready output

Invoice previewReady to export

Acme Corp

March 1–31, 2026

INV-0024

Due Apr 14, 2026

Design system audit

14.5 hrs · $150/hr

$2,175

Homepage copy

6.25 hrs · $120/hr

$750

Project management

3.0 hrs · $120/hr

$360

Total due$3,285

Export invoice →

## How it works.

Three steps. No setup ceremony. No onboarding calls required.

STEP 01

### Set up a project.

Create a client, add a project with a budget. Add tasks for the work ahead. Takes three minutes.

STEP 02

### Track time as you work.

Open a task, hit start. Stop when you're done. Zentract logs it against the client and project, billable or not.

STEP 03

### Invoice with one click.

Select a billing period. Review grouped line items from real entries. Export. Done.

## Free to start.
Scales when you do.

Everything you need to run a small team — no credit card, no 14-day trial cliff. Upgrade when your operation grows.

Free tier

$0/ month

-   ✓3 team members
-   ✓5 clients
-   ✓10 projects
-   ✓Unlimited time tracking
-   ✓Invoice generation
-   ✓iOS & Android apps

Join the waitlist

FAQ

## Common questions

Everything you need to know before getting started with Zentract.

How does Zentract help agencies track billable hours?

How is Zentract different from Harvest or Toggl?

Can Zentract generate invoices from time tracking?

Is Zentract free to use?

What types of agencies and teams use Zentract?

Does Zentract prevent scope creep on client projects?

Does Zentract have mobile apps?

## Every hour you worked
deserves to be invoiced.

Join early access. We'll reach out when your workspace is ready. No credit card required.

Join the waitlist

No credit card · No spam · Cancel anytime

Already using Zentract? [Sign in →](https://zentract.io/sign-in)

Téléversez ce fichier sous /index.md sur votre serveur pour que les AI agents puissent accéder à une version propre de votre page. Vous pouvez également configurer la négociation de contenu Accept: text/markdown pour le servir automatiquement.

Notre recommandation

Télécharger llms.txt
# zentract.io

> One-click time tracking, real-time budget alerts, and client invoicing in one platform. Built for agencies and consultants. Free for up to 3 team members.

## Main
- [Zentract — Agency Time Tracking & Client Billing Software](https://zentract.io): One-click time tracking, real-time budget alerts, and client invoicing in one platform. Built for agencies and consulta…
- [ZentractZENTRACT](https://zentract.io/)
- [Sign in](https://zentract.io/sign-in)

## Legal
- [Privacy](https://zentract.io/privacy)
- [Terms](https://zentract.io/terms)

## Support
- [Contact](https://zentract.io/contact)

Le llms.txt complet nécessite une analyse de tout le domaine (bientôt disponible)

Téléversez ce fichier vers https://zentract.io/llms.txt à la racine de votre domaine. Les AI agents comme ChatGPT, Claude et Perplexity consultent ce fichier pour comprendre la structure de votre site.

Ce site possède déjà un fichier llms.txt.

Format valide
# Zentract

> Zentract is a project management and time tracking platform for professional services firms. 
It helps teams manage clients, projects, tasks, time entries, billing, and reporting.

Important notes:
- Public crawling rules are defined in robots.txt; see links below.


## About Site

- [Homepage](https://zentract.io)
- [Privacy](https://zentract.io/privacy): Privacy policy
- [Terms](https://zentract.io/terms): Terms of service
- [Contact](https://zentract.io/contact): Contact us page
- [robots.txt](https://zentract.io/robots.txt): Crawler access rules and disallowed paths
- [Sitemap](https://zentract.io/sitemap.xml): Discoverable public pages

HTML sémantique

Utilise les éléments article ou main (100/100)

Has <main>

Hiérarchie de titres correcte (85/100)

1 heading level skip(s)

Utilise des éléments HTML sémantiques (32/100)

14 semantic elements, 134 divs (ratio: 9%)

Textes alternatifs descriptifs pour les images (100/100)

No images found

Faible profondeur d’imbrication des divs (100/100)

Avg div depth: 4.6, max: 8

Efficacité du contenu

Bon ratio de réduction de tokens (100/100)

96% token reduction (HTML→Markdown)

Bon ratio contenu/bruit (100/100)

Content ratio: 59.2% (60153 content chars / 101540 HTML bytes)

Styles en ligne minimaux (50/100)

21/466 elements with inline styles (4.5%)

Poids de page raisonnable (100/100)

HTML size: 99KB

Visibilité IA

Possède un fichier llms.txt (100/100)

llms.txt exists and is valid

Possède un fichier robots.txt (100/100)

robots.txt exists

robots.txt autorise les bots IA (100/100)

All major AI bots allowed

Possède un sitemap.xml (100/100)

Sitemap found

Support Markdown for Agents (40/100) Cloudflare CDN
&#10003; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header YAML frontmatter (basic)
A Content-Signal (robots.txt ou en-têtes HTTP) (60/100)
&#10003; robots.txt &#10007; HTTP header &#10007; Policy

Données structurées

Possède Schema.org / JSON-LD (100/100)

JSON-LD found: Organization, WebApplication, FAQPage

Possède des balises Open Graph (100/100)

All OG tags present

Possède une meta description (100/100)

Meta description: 154 chars

Possède une URL canonique (100/100)

Canonical URL present

Possède un attribut lang (100/100)

lang="en"

Accessibilité

Contenu disponible sans JavaScript (100/100)

Content available without JavaScript

Taille de page raisonnable (100/100)

Page size: 99KB

Le contenu apparaît tôt dans le HTML (100/100)

Main content starts at 13% of HTML

{
  "url": "https://zentract.io",
  "timestamp": 1777728201324,
  "fetch": {
    "mode": "simple",
    "timeMs": 435,
    "htmlSizeBytes": 101540,
    "supportsMarkdown": true,
    "markdownAgents": {
      "contentNegotiation": true,
      "mdUrl": {
        "found": false,
        "url": null
      },
      "linkTag": {
        "found": false,
        "url": null
      },
      "linkHeader": {
        "found": false,
        "url": null
      },
      "responseHeaders": {
        "contentSignal": null,
        "xMarkdownTokens": "820",
        "vary": "Accept"
      },
      "frontmatter": {
        "present": true,
        "fields": [
          "title",
          "path"
        ],
        "level": "basic"
      },
      "level": "cloudflare"
    },
    "statusCode": 200
  },
  "extraction": {
    "title": "Zentract — Agency Time Tracking & Client Billing Software",
    "excerpt": "((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=[\"light\",\"dark\"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c=\"class\"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d)",
    "byline": null,
    "siteName": null,
    "lang": "en",
    "contentLength": 60153,
    "metadata": {
      "description": "One-click time tracking, real-time budget alerts, and client invoicing in one platform. Built for agencies and consultants. Free for up to 3 team members.",
      "ogTitle": "Zentract — Agency Time Tracking & Client Billing Software",
      "ogDescription": "One-click time tracking, real-time budget alerts, and client invoicing in one platform. Stop losing revenue to hours you already worked.",
      "ogImage": "https://zentract.io/og-image.png",
      "ogType": "website",
      "canonical": "https://zentract.io",
      "lang": "en",
      "schemas": [
        {
          "@context": "https://schema.org",
          "@type": "Organization",
          "name": "Zentract",
          "url": "https://zentract.io",
          "logo": "https://zentract.io/logo.png",
          "description": "Agency management platform for time tracking, project billing, and client invoicing. Built for agencies, consultancies, and professional services teams.",
          "sameAs": [
            "https://twitter.com/zentractapp",
            "https://www.linkedin.com/company/vokality",
            "https://www.producthunt.com/products/zentract"
          ],
          "contactPoint": {
            "@type": "ContactPoint",
            "contactType": "customer support",
            "url": "https://zentract.io/contact"
          }
        },
        {
          "@context": "https://schema.org",
          "@type": "WebApplication",
          "name": "Zentract",
          "applicationCategory": "BusinessApplication",
          "operatingSystem": "Web, iOS, Android",
          "description": "One-click time tracking with real-time budget monitoring and client invoicing for agencies and professional services teams.",
          "url": "https://zentract.io",
          "offers": {
            "@type": "Offer",
            "price": "0",
            "priceCurrency": "USD",
            "description": "Free plan available — up to 3 team members, 5 clients, 10 projects"
          },
          "featureList": [
            "One-click billable time tracking",
            "Real-time project budget monitoring",
            "Client invoice generation from time entries",
            "Scope creep alerts",
            "iOS and Android mobile apps",
            "Team collaboration"
          ],
          "screenshot": "https://zentract.io/og-image.png"
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "How does Zentract help agencies track billable hours?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Zentract lets you start a timer with one click directly from any task. Each time entry is automatically linked to the task, project, and client, so there is no retroactive guessing. You can mark hours as billable or non-billable, and your team's time is always visible in real time."
              }
            },
            {
              "@type": "Question",
              "name": "How is Zentract different from Harvest or Toggl?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Harvest and Toggl are strong standalone time trackers, but they require manual work to connect time to projects, budgets, and invoices. Zentract integrates time tracking, project budget monitoring, and client billing in one place so teams can see budget risk early and invoice directly from tracked time."
              }
            },
            {
              "@type": "Question",
              "name": "Can Zentract generate invoices from time tracking?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Once your team logs time against a client project, you can generate a client invoice directly from those entries. Zentract pulls billable hours automatically, so billing becomes a one-click process instead of a manual reconstruction at month end."
              }
            },
            {
              "@type": "Question",
              "name": "Is Zentract free to use?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Zentract has a free tier that supports up to 3 team members, 5 clients, and 10 projects, with unlimited time tracking and invoice generation included. No credit card is required."
              }
            },
            {
              "@type": "Question",
              "name": "What types of agencies and teams use Zentract?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Zentract is built for teams that bill by the hour, including design agencies, development shops, marketing studios, consulting firms, and fractional service teams."
              }
            },
            {
              "@type": "Question",
              "name": "Does Zentract prevent scope creep on client projects?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Zentract shows real-time budget consumption per project. As teams log hours, it becomes clear what percentage of the budget has been used so project leads can have a scope conversation before the project is already over budget."
              }
            },
            {
              "@type": "Question",
              "name": "Does Zentract have mobile apps?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Zentract has iOS and Android apps so teams can log time from anywhere, whether they are in a client meeting, on-site, or working remotely."
              }
            }
          ]
        }
      ],
      "robotsMeta": "index, follow",
      "author": null,
      "generator": null,
      "markdownAlternateHref": null
    }
  },
  "markdown": "For agencies that bill time\n\n# Stop losing revenue\nto time you already\nworked.\n\nZentract connects tasks, time, and billing in one place. Catch missed hours and overages before they become write-offs.\n\nJoin the waitlist\n\n[Sign in →](https://zentract.io/sign-in)\n\nNo credit card required.\n\nzentract — Acme Corp / Website Redesign\n\nWrite homepage copy\n\nAcme Corp · Copywriting\n\n1:45\n\nDesign system audit\n\nAcme Corp · Design · Billable\n\n02:34:18\n\nHandoff to dev\n\nAcme Corp · PM\n\n—\n\nLive timerRecording\n\n02:34:18\n\nDesign system audit · Acme Corp\n\nUsed byDesign agenciesDev shopsConsulting firmsFractional teamsMarketing studios\n\nThe real cost of disconnected tools\n\n01\n\n### Time logged late is time not invoiced.\n\nDetails fade. Entries disappear. By Friday, no one remembers Tuesday's four-hour deep-work session.\n\n02\n\n### Scope creeps before you can react.\n\nYou hit 80% of budget with 40% of work left. The signal came too late to have a real conversation.\n\n03\n\n### Billing is a monthly reconstruction.\n\nYou spend hours piecing together what happened. Then write off the hours that don't have receipts.\n\nTime Tracking\n\n## Every task\nis a timer.\n\nOne click starts tracking. Zentract ties the entry to the task, project, and client automatically. No separate app. No retroactive guessing.\n\n-   ✓One-click timers on any task\n-   ✓Billable vs non-billable on every entry\n-   ✓Log from web or iOS & Android\n-   ✓Only one timer runs at a time\n\nActive tasks1 running\n\nDesign system audit\n\nAcme Corp · Billable\n\n02:34:18\n\nWrite homepage copy\n\nAcme Corp · Billable\n\n1:45:00\n\nStakeholder review call\n\nAcme Corp · Non-billable\n\n—\n\n02:34:18\n\ntoday · Acme Corp\n\nBudget overviewLive\n\nWebsite Redesign · Acme Corp82%\n\nQ2 Content Strategy · Bloom44%\n\nPlatform Audit · NovaTech107%\n\nBudgeted\n\n240h\n\nLogged\n\n198h\n\nRemaining\n\n42h\n\nBudget Control\n\n## See the overage\nbefore it happens.\n\nBudget vs actual updates in real-time as time is logged. Get a warning at 80%. Have the scope conversation while there's still something to negotiate.\n\n-   ✓Real-time budget vs actual\n-   ✓Overage alerts at your threshold\n-   ✓Per-project and per-client views\n-   ✓Hours or dollar-based budgets\n\nInvoicing\n\n## Invoice from\nsource, not memory.\n\nSelect a billing period. Zentract groups time entries by task and generates line items. No spreadsheet. No reconstruction. The invoice reflects what actually happened.\n\n-   ✓Generate from tracked time entries\n-   ✓Grouped by task or category\n-   ✓Billable-only filter built in\n-   ✓Export-ready output\n\nInvoice previewReady to export\n\nAcme Corp\n\nMarch 1–31, 2026\n\nINV-0024\n\nDue Apr 14, 2026\n\nDesign system audit\n\n14.5 hrs · $150/hr\n\n$2,175\n\nHomepage copy\n\n6.25 hrs · $120/hr\n\n$750\n\nProject management\n\n3.0 hrs · $120/hr\n\n$360\n\nTotal due$3,285\n\nExport invoice →\n\n## How it works.\n\nThree steps. No setup ceremony. No onboarding calls required.\n\nSTEP 01\n\n### Set up a project.\n\nCreate a client, add a project with a budget. Add tasks for the work ahead. Takes three minutes.\n\nSTEP 02\n\n### Track time as you work.\n\nOpen a task, hit start. Stop when you're done. Zentract logs it against the client and project, billable or not.\n\nSTEP 03\n\n### Invoice with one click.\n\nSelect a billing period. Review grouped line items from real entries. Export. Done.\n\n## Free to start.\nScales when you do.\n\nEverything you need to run a small team — no credit card, no 14-day trial cliff. Upgrade when your operation grows.\n\nFree tier\n\n$0/ month\n\n-   ✓3 team members\n-   ✓5 clients\n-   ✓10 projects\n-   ✓Unlimited time tracking\n-   ✓Invoice generation\n-   ✓iOS & Android apps\n\nJoin the waitlist\n\nFAQ\n\n## Common questions\n\nEverything you need to know before getting started with Zentract.\n\nHow does Zentract help agencies track billable hours?\n\nHow is Zentract different from Harvest or Toggl?\n\nCan Zentract generate invoices from time tracking?\n\nIs Zentract free to use?\n\nWhat types of agencies and teams use Zentract?\n\nDoes Zentract prevent scope creep on client projects?\n\nDoes Zentract have mobile apps?\n\n## Every hour you worked\ndeserves to be invoiced.\n\nJoin early access. We'll reach out when your workspace is ready. No credit card required.\n\nJoin the waitlist\n\nNo credit card · No spam · Cancel anytime\n\nAlready using Zentract? [Sign in →](https://zentract.io/sign-in)\n",
  "fullPageMarkdown": "Zentract — Agency Time Tracking & Client Billing Software\n\nFor agencies that bill time\n\n# Stop losing revenue\nto time you already\nworked.\n\nZentract connects tasks, time, and billing in one place. Catch missed hours and overages before they become write-offs.\n\nJoin the waitlist\n\n[Sign in →](https://zentract.io/sign-in)\n\nNo credit card required.\n\nzentract — Acme Corp / Website Redesign\n\nWrite homepage copy\n\nAcme Corp · Copywriting\n\n1:45\n\nDesign system audit\n\nAcme Corp · Design · Billable\n\n02:34:18\n\nHandoff to dev\n\nAcme Corp · PM\n\n—\n\nLive timerRecording\n\n02:34:18\n\nDesign system audit · Acme Corp\n\nUsed byDesign agenciesDev shopsConsulting firmsFractional teamsMarketing studios\n\nThe real cost of disconnected tools\n\n01\n\n### Time logged late is time not invoiced.\n\nDetails fade. Entries disappear. By Friday, no one remembers Tuesday's four-hour deep-work session.\n\n02\n\n### Scope creeps before you can react.\n\nYou hit 80% of budget with 40% of work left. The signal came too late to have a real conversation.\n\n03\n\n### Billing is a monthly reconstruction.\n\nYou spend hours piecing together what happened. Then write off the hours that don't have receipts.\n\nTime Tracking\n\n## Every task\nis a timer.\n\nOne click starts tracking. Zentract ties the entry to the task, project, and client automatically. No separate app. No retroactive guessing.\n\n-   ✓One-click timers on any task\n-   ✓Billable vs non-billable on every entry\n-   ✓Log from web or iOS & Android\n-   ✓Only one timer runs at a time\n\nActive tasks1 running\n\nDesign system audit\n\nAcme Corp · Billable\n\n02:34:18\n\nWrite homepage copy\n\nAcme Corp · Billable\n\n1:45:00\n\nStakeholder review call\n\nAcme Corp · Non-billable\n\n—\n\n02:34:18\n\ntoday · Acme Corp\n\nBudget overviewLive\n\nWebsite Redesign · Acme Corp82%\n\nQ2 Content Strategy · Bloom44%\n\nPlatform Audit · NovaTech107%\n\nBudgeted\n\n240h\n\nLogged\n\n198h\n\nRemaining\n\n42h\n\nBudget Control\n\n## See the overage\nbefore it happens.\n\nBudget vs actual updates in real-time as time is logged. Get a warning at 80%. Have the scope conversation while there's still something to negotiate.\n\n-   ✓Real-time budget vs actual\n-   ✓Overage alerts at your threshold\n-   ✓Per-project and per-client views\n-   ✓Hours or dollar-based budgets\n\nInvoicing\n\n## Invoice from\nsource, not memory.\n\nSelect a billing period. Zentract groups time entries by task and generates line items. No spreadsheet. No reconstruction. The invoice reflects what actually happened.\n\n-   ✓Generate from tracked time entries\n-   ✓Grouped by task or category\n-   ✓Billable-only filter built in\n-   ✓Export-ready output\n\nInvoice previewReady to export\n\nAcme Corp\n\nMarch 1–31, 2026\n\nINV-0024\n\nDue Apr 14, 2026\n\nDesign system audit\n\n14.5 hrs · $150/hr\n\n$2,175\n\nHomepage copy\n\n6.25 hrs · $120/hr\n\n$750\n\nProject management\n\n3.0 hrs · $120/hr\n\n$360\n\nTotal due$3,285\n\nExport invoice →\n\n## How it works.\n\nThree steps. No setup ceremony. No onboarding calls required.\n\nSTEP 01\n\n### Set up a project.\n\nCreate a client, add a project with a budget. Add tasks for the work ahead. Takes three minutes.\n\nSTEP 02\n\n### Track time as you work.\n\nOpen a task, hit start. Stop when you're done. Zentract logs it against the client and project, billable or not.\n\nSTEP 03\n\n### Invoice with one click.\n\nSelect a billing period. Review grouped line items from real entries. Export. Done.\n\n## Free to start.\nScales when you do.\n\nEverything you need to run a small team — no credit card, no 14-day trial cliff. Upgrade when your operation grows.\n\nFree tier\n\n$0/ month\n\n-   ✓3 team members\n-   ✓5 clients\n-   ✓10 projects\n-   ✓Unlimited time tracking\n-   ✓Invoice generation\n-   ✓iOS & Android apps\n\nJoin the waitlist\n\nFAQ\n\n## Common questions\n\nEverything you need to know before getting started with Zentract.\n\nHow does Zentract help agencies track billable hours?\n\nHow is Zentract different from Harvest or Toggl?\n\nCan Zentract generate invoices from time tracking?\n\nIs Zentract free to use?\n\nWhat types of agencies and teams use Zentract?\n\nDoes Zentract prevent scope creep on client projects?\n\nDoes Zentract have mobile apps?\n\n## Every hour you worked\ndeserves to be invoiced.\n\nJoin early access. We'll reach out when your workspace is ready. No credit card required.\n\nJoin the waitlist\n\nNo credit card · No spam · Cancel anytime\n\nAlready using Zentract? [Sign in →](https://zentract.io/sign-in)\n",
  "markdownStats": {
    "images": 0,
    "links": 8,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 14
  },
  "tokens": {
    "htmlTokens": 30615,
    "markdownTokens": 1083,
    "reduction": 29532,
    "reductionPercent": 96
  },
  "score": {
    "score": 89,
    "grade": "B",
    "dimensions": {
      "semanticHtml": {
        "score": 83,
        "weight": 20,
        "grade": "B",
        "checks": {
          "uses_article_or_main": {
            "score": 100,
            "weight": 20,
            "details": "Has <main>"
          },
          "proper_heading_hierarchy": {
            "score": 85,
            "weight": 25,
            "details": "1 heading level skip(s)"
          },
          "semantic_elements": {
            "score": 32,
            "weight": 20,
            "details": "14 semantic elements, 134 divs (ratio: 9%)"
          },
          "meaningful_alt_texts": {
            "score": 100,
            "weight": 15,
            "details": "No images found"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 20,
            "details": "Avg div depth: 4.6, max: 8"
          }
        }
      },
      "contentEfficiency": {
        "score": 93,
        "weight": 25,
        "grade": "A",
        "checks": {
          "token_reduction_ratio": {
            "score": 100,
            "weight": 40,
            "details": "96% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 100,
            "weight": 30,
            "details": "Content ratio: 59.2% (60153 content chars / 101540 HTML bytes)"
          },
          "minimal_inline_styles": {
            "score": 50,
            "weight": 15,
            "details": "21/466 elements with inline styles (4.5%)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 15,
            "details": "HTML size: 99KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 77,
        "weight": 25,
        "grade": "B",
        "checks": {
          "has_llms_txt": {
            "score": 100,
            "weight": 20,
            "details": "llms.txt exists and is valid"
          },
          "has_robots_txt": {
            "score": 100,
            "weight": 10,
            "details": "robots.txt exists"
          },
          "robots_allows_ai_bots": {
            "score": 100,
            "weight": 15,
            "details": "All major AI bots allowed"
          },
          "has_sitemap": {
            "score": 100,
            "weight": 10,
            "details": "Sitemap found"
          },
          "supports_markdown_negotiation": {
            "score": 40,
            "weight": 25,
            "details": "CDN level (Cloudflare) — Content negotiation"
          },
          "has_content_signals": {
            "score": 60,
            "weight": 20,
            "details": "robots.txt: ai-train=no, search=yes, ai-input=yes"
          }
        }
      },
      "structuredData": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "has_schema_org": {
            "score": 100,
            "weight": 30,
            "details": "JSON-LD found: Organization, WebApplication, FAQPage"
          },
          "has_open_graph": {
            "score": 100,
            "weight": 25,
            "details": "All OG tags present"
          },
          "has_meta_description": {
            "score": 100,
            "weight": 20,
            "details": "Meta description: 154 chars"
          },
          "has_canonical_url": {
            "score": 100,
            "weight": 15,
            "details": "Canonical URL present"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "details": "lang=\"en\""
          }
        }
      },
      "accessibility": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "content_without_js": {
            "score": 100,
            "weight": 40,
            "details": "Content available without JavaScript"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 30,
            "details": "Page size: 99KB"
          },
          "fast_content_position": {
            "score": 100,
            "weight": 30,
            "details": "Main content starts at 13% of HTML"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "add_markdown_negotiation",
      "priority": "high",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_markdown_negotiation.title",
      "descriptionKey": "rec.add_markdown_negotiation.description",
      "howToKey": "rec.add_markdown_negotiation.howto",
      "effort": "significant",
      "estimatedImpact": 6,
      "checkScore": 40,
      "checkDetails": "CDN level (Cloudflare) — Content negotiation"
    },
    {
      "id": "add_semantic_elements",
      "priority": "high",
      "category": "semanticHtml",
      "titleKey": "rec.add_semantic_elements.title",
      "descriptionKey": "rec.add_semantic_elements.description",
      "howToKey": "rec.add_semantic_elements.howto",
      "effort": "moderate",
      "estimatedImpact": 5,
      "checkScore": 32,
      "checkDetails": "14 semantic elements, 134 divs (ratio: 9%)"
    },
    {
      "id": "remove_inline_styles",
      "priority": "medium",
      "category": "contentEfficiency",
      "titleKey": "rec.remove_inline_styles.title",
      "descriptionKey": "rec.remove_inline_styles.description",
      "howToKey": "rec.remove_inline_styles.howto",
      "effort": "moderate",
      "estimatedImpact": 3,
      "checkScore": 50,
      "checkDetails": "21/466 elements with inline styles (4.5%)"
    }
  ],
  "llmsTxtPreview": "# zentract.io\n\n> One-click time tracking, real-time budget alerts, and client invoicing in one platform. Built for agencies and consultants. Free for up to 3 team members.\n\n## Main\n- [Zentract — Agency Time Tracking & Client Billing Software](https://zentract.io): One-click time tracking, real-time budget alerts, and client invoicing in one platform. Built for agencies and consulta…\n- [ZentractZENTRACT](https://zentract.io/)\n- [Sign in](https://zentract.io/sign-in)\n\n## Legal\n- [Privacy](https://zentract.io/privacy)\n- [Terms](https://zentract.io/terms)\n\n## Support\n- [Contact](https://zentract.io/contact)\n\n",
  "llmsTxtExisting": "# Zentract\n\n> Zentract is a project management and time tracking platform for professional services firms. \nIt helps teams manage clients, projects, tasks, time entries, billing, and reporting.\n\nImportant notes:\n- Public crawling rules are defined in robots.txt; see links below.\n\n\n## About Site\n\n- [Homepage](https://zentract.io)\n- [Privacy](https://zentract.io/privacy): Privacy policy\n- [Terms](https://zentract.io/terms): Terms of service\n- [Contact](https://zentract.io/contact): Contact us page\n- [robots.txt](https://zentract.io/robots.txt): Crawler access rules and disallowed paths\n- [Sitemap](https://zentract.io/sitemap.xml): Discoverable public pages",
  "emergingProtocols": {
    "oauthDiscovery": {
      "exists": true,
      "url": "https://zentract.io/.well-known/oauth-authorization-server",
      "issuer": "https://zentract.io",
      "authorizationEndpoint": "https://zentract.io/api/oauth2/authorize",
      "tokenEndpoint": "https://zentract.io/api/oauth2/token",
      "grantTypesSupported": [
        "authorization_code",
        "refresh_token"
      ],
      "scopesSupported": [
        "projects:read",
        "projects:write",
        "projects:delete",
        "tasks:read",
        "tasks:write",
        "tasks:delete",
        "clients:read",
        "clients:write",
        "clients:delete",
        "time-entries:read",
        "time-entries:write",
        "time-entries:delete",
        "invoices:read",
        "invoices:write",
        "invoices:delete",
        "proposals:read",
        "proposals:write",
        "proposals:delete",
        "reports:read",
        "reports:generate",
        "reports:delete",
        "teams:read",
        "teams:write",
        "users:read",
        "users:write",
        "organization:read",
        "organization:write",
        "notifications:read",
        "notifications:write",
        "attachments:read",
        "attachments:write"
      ]
    },
    "mcpServerCard": {
      "exists": false,
      "url": "https://zentract.io/.well-known/mcp.json"
    },
    "a2aAgentCard": {
      "exists": false,
      "url": "https://zentract.io/.well-known/agent.json"
    },
    "count": 1
  },
  "snippets": [
    {
      "id": "add_markdown_negotiation",
      "title": "Support Markdown for Agents",
      "description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
      "language": "html",
      "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        },
        {
          "id": "express",
          "label": "Express",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n  res.setHeader('Vary', 'Accept');\n  res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    res.type('text/markdown; charset=utf-8');\n    return res.send(renderMarkdown('page'));\n  }\n  res.render('page');\n});"
        },
        {
          "id": "fastify",
          "label": "Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n  reply.header('Vary', 'Accept');\n  reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n  }\n  return reply.view('/page.ejs');\n});"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page/route.ts",
          "code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n  const accept = req.headers.get('accept') || '';\n  if (accept.includes('text/markdown')) {\n    return new Response(await renderMarkdown('page'), {\n      headers: {\n        'Content-Type': 'text/markdown; charset=utf-8',\n        'Vary': 'Accept',\n      },\n    });\n  }\n  // Fall through to the page component\n  return new Response(null, { status: 404 });\n}"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n    if (!is_singular()) return;\n    $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n    if (strpos($accept, 'text/markdown') === false) return;\n    header('Content-Type: text/markdown; charset=utf-8');\n    header('Vary: Accept');\n    $post = get_queried_object();\n    echo \"# \" . get_the_title($post) . \"\\n\\n\";\n    echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n    exit;\n});"
        },
        {
          "id": "static",
          "label": "Hugo / Jekyll / Astro",
          "language": "txt",
          "filename": "static/page.md",
          "code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n#   <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        }
      ]
    }
  ]
}

Utilisez notre API pour obtenir ceci de manière programmatique (bientôt disponible)

Ce JSON est à usage interne — contrairement au Markdown et au llms.txt, il n’est pas destiné à être téléversé sur votre site. Conservez-le comme référence pour suivre l’évolution de votre score, partagez-le avec votre équipe de développement ou intégrez-le dans votre pipeline CI/CD.

Partagez vos résultats

Twitter LinkedIn

Intégrez votre badge

Ajoutez ce badge à votre site. Il se met à jour automatiquement lorsque votre score de préparation à l’IA change.

AgentReady.md score for zentract.io
Script Recommandé
<script src="https://agentready.md/badge.js" data-id="81c0a9b4-c03e-446e-ae6a-e76950ad7f79" data-domain="zentract.io"></script>
Markdown
[![AgentReady.md score for zentract.io](https://agentready.md/badge/zentract.io.svg)](https://agentready.md/fr/r/81c0a9b4-c03e-446e-ae6a-e76950ad7f79)

Bientôt : Analyse de domaine complet

Explorez l’ensemble de votre domaine, générez un llms.txt et surveillez votre score de préparation IA dans le temps. Rejoignez la liste d’attente pour être informé.

Vous êtes sur la liste ! Nous vous préviendrons lors du lancement.