> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veredicta.com.ar/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Este es el manual oficial de uso de Veredicta, la plataforma de gestión legal para abogados y estudios jurídicos de Argentina. Respondé en español rioplatense, con voseo. Usá los nombres de botones y pantallas tal como aparecen en el manual, en negrita. Citá siempre la URL de docs.veredicta.com.ar de la página y de la sección (#ancla) de donde sale cada paso. Si el manual no cubre algo, decilo y sugerí escribir al equipo de Veredicta por WhatsApp al +54 9 11 2611-5660 o a ayuda@veredicta.com.ar.

# El gestor de documentos

> Conocé el gestor de documentos: las carpetas de cada expediente, tus carpetas propias, las vistas, el buscador y las acciones de cada archivo.

export const VideoTutorial = ({src, poster, title, duration, description, vertical = false}) => {
  const [local, setLocal] = useState(false);
  useEffect(() => {
    setLocal((/^(localhost|127\.0\.0\.1)$/).test(window.location.hostname));
  }, []);
  const media = p => !local && p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const dialogRef = useRef(null);
  const videoRef = useRef(null);
  const published = p => p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const [minutes, seconds] = (duration ?? '').split(':').map(Number);
  const videoData = {
    '@context': 'https://schema.org',
    '@type': 'VideoObject',
    name: title,
    description: !description || description.startsWith('Mirá el paso a paso') ? `${title}: video tutorial paso a paso de Veredicta.` : description,
    thumbnailUrl: published(poster),
    contentUrl: published(src),
    uploadDate: '2026-09-30T12:00:00-03:00',
    inLanguage: 'es-AR',
    ...Number.isFinite(minutes) && Number.isFinite(seconds) ? {
      duration: `PT${minutes}M${seconds}S`
    } : {},
    publisher: {
      '@type': 'Organization',
      name: 'Veredicta',
      url: 'https://veredicta.com.ar'
    }
  };
  const open = () => {
    dialogRef.current?.showModal();
    const v = videoRef.current;
    if (v) {
      if (!v.getAttribute('src')) {
        const url = media(src);
        v.src = url.startsWith('https://') ? `${url}?v=1440` : url;
      }
      v.currentTime = 0;
      v.play().catch(() => {});
    }
  };
  const close = () => dialogRef.current?.close();
  const onOverlayClick = e => {
    if (!e.target.closest('video, .vd-overlay-bar')) {
      close();
    }
  };
  const onClose = () => videoRef.current?.pause();
  const onKeyDown = e => {
    if (e.key === 'f') {
      fullscreen();
    }
  };
  const fullscreen = () => {
    const v = videoRef.current;
    if (!v) {
      return;
    }
    if (v.requestFullscreen) {
      v.requestFullscreen();
    } else if (v.webkitEnterFullscreen) {
      v.webkitEnterFullscreen();
    }
  };
  return <figure className={`vd-video not-prose${vertical ? 'vd-video-vertical' : ''}`}>
      <button aria-label={`Ver el video: ${title}`} className="vd-video-card" onClick={open} type="button">
        <img alt={title} decoding="async" height={vertical ? 1920 : 1080} loading="lazy" src={media(poster)} width={vertical ? 1080 : 1920} />
        <span className="vd-video-shade" />
        <span className="vd-video-badge">
          <svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 24 24" width="14">
            <path d="M8 5v14l11-7z" />
          </svg>
          Video tutorial
        </span>
        <span aria-hidden="true" className="vd-video-play">
          {}
          <svg aria-hidden="true" fill="currentColor" height="30" stroke="currentColor" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="30">
            <path d="M8.5 5.5v13l11-6.5z" />
          </svg>
        </span>
        {duration ? <span className="vd-video-duration">{duration}</span> : null}
      </button>
      <script dangerouslySetInnerHTML={{
    __html: JSON.stringify(videoData).replaceAll('<', '\\u003c')
  }} type="application/ld+json" />
      <figcaption className="vd-caption">
        {description ?? 'Mirá el paso a paso y seguilo en Veredicta.'}
      </figcaption>

      {}
      <dialog aria-label={title} className="vd-overlay vd-overlay-video" onClick={onOverlayClick} onClose={onClose} onKeyDown={onKeyDown} ref={dialogRef}>
        <div className="vd-overlay-bar">
          <span className="vd-overlay-title">{title}</span>
          <div className="vd-overlay-tools">
            <button className="vd-tool-text" onClick={fullscreen} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3" />
              </svg>
              <span>Pantalla completa</span>
            </button>
            <button aria-label="Cerrar" onClick={close} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M18 6 6 18M6 6l12 12" />
              </svg>
            </button>
          </div>
        </div>
        <div className="vd-overlay-player">
          {}
          <video controls playsInline poster={media(poster)} preload="none" ref={videoRef} />
        </div>
      </dialog>
    </figure>;
};

export const GuideImage = ({src, preview, alt, title, width, height, caption, tall = false}) => {
  const [local, setLocal] = useState(false);
  useEffect(() => {
    setLocal((/^(localhost|127\.0\.0\.1)$/).test(window.location.hostname));
  }, []);
  const media = p => !local && p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const dialogRef = useRef(null);
  const scrollRef = useRef(null);
  const [zoom, setZoom] = useState(1);
  const levels = [1, 1.5, 2, 3];
  const open = () => {
    setZoom(1);
    dialogRef.current?.showModal();
  };
  const close = () => dialogRef.current?.close();
  const onOverlayClick = e => {
    if (!e.target.closest('.vd-overlay-img, .vd-overlay-bar')) {
      close();
    }
  };
  const zoomTo = next => {
    const el = scrollRef.current;
    if (!el) {
      setZoom(next);
      return;
    }
    const cx = (el.scrollLeft + el.clientWidth / 2) / el.scrollWidth;
    const cy = (el.scrollTop + el.clientHeight / 2) / el.scrollHeight;
    setZoom(next);
    requestAnimationFrame(() => {
      el.scrollLeft = cx * el.scrollWidth - el.clientWidth / 2;
      el.scrollTop = cy * el.scrollHeight - el.clientHeight / 2;
    });
  };
  const zoomIn = () => zoomTo(levels.find(l => l > zoom) ?? levels.at(-1));
  const zoomOut = () => zoomTo([...levels].reverse().find(l => l < zoom) ?? 1);
  useEffect(() => {
    const el = scrollRef.current;
    if (!el) {
      return;
    }
    const onWheel = e => {
      if (!(e.ctrlKey || e.metaKey)) {
        return;
      }
      e.preventDefault();
      if (e.deltaY < 0) {
        zoomIn();
      } else {
        zoomOut();
      }
    };
    el.addEventListener('wheel', onWheel, {
      passive: false
    });
    return () => el.removeEventListener('wheel', onWheel);
  });
  const onKeyDown = e => {
    if (e.key === '+' || e.key === '=') {
      zoomIn();
    } else if (e.key === '-') {
      zoomOut();
    } else if (e.key === '0') {
      zoomTo(1);
    }
  };
  const magnifier = <svg aria-hidden="true" fill="none" height="16" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="16">
      <circle cx="11" cy="11" r="7" />
      <path d="m20 20-3.5-3.5M11 8v6M8 11h6" />
    </svg>;
  return <figure className={tall ? 'vd-guide not-prose' : `vd-shot not-prose${height > width ? 'vd-shot-portrait' : ''}`}>
      {tall ? <button aria-label={`Ampliar la guía: ${title}`} className="vd-guide-preview" onClick={open} type="button">
          <img alt={alt} decoding="async" height={height} loading="lazy" src={media(preview ?? src)} width={width} />
          <span className="vd-guide-fade" />
          <span className="vd-guide-cta">
            {magnifier}
            Ver la guía completa
          </span>
        </button> : <button aria-label={`Ampliar: ${title}`} className="vd-shot-button" onClick={open} type="button">
          <img alt={alt} decoding="async" height={height} loading="lazy" src={media(preview ?? src)} width={width} />
          <span aria-hidden="true" className="vd-shot-zoom">
            {magnifier}
            Ampliar
          </span>
        </button>}
      {tall || caption ? <figcaption className="vd-caption">
          {caption ?? 'Guía paso a paso · hacé clic para ampliarla y acercarte a cada paso.'}
        </figcaption> : null}

      {}
      <dialog aria-label={title} className="vd-overlay" onClick={onOverlayClick} onKeyDown={onKeyDown} ref={dialogRef}>
        <div className="vd-overlay-bar">
          <span className="vd-overlay-title">{title}</span>
          <div className="vd-overlay-tools">
            <button aria-label="Alejar" disabled={zoom <= 1} onClick={zoomOut} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M5 12h14" />
              </svg>
            </button>
            <button aria-label="Ajustar al ancho" className="vd-zoom-value" onClick={() => zoomTo(1)} type="button">
              {Math.round(zoom * 100)}%
            </button>
            <button aria-label="Acercar" disabled={zoom >= levels.at(-1)} onClick={zoomIn} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M5 12h14M12 5v14" />
              </svg>
            </button>
            {tall ? <a className="vd-tool-link" download href={media(src)}>
                <span className="vd-sr-only">Descargar la guía</span>
                <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                  <path d="M12 15V3M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5" />
                </svg>
              </a> : null}
            <button aria-label="Cerrar" onClick={close} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M18 6 6 18M6 6l12 12" />
              </svg>
            </button>
          </div>
        </div>
        <div className="vd-overlay-scroll" ref={scrollRef}>
          <img alt={alt} className="vd-overlay-img" decoding="async" height={height} loading="lazy" src={media(src)} style={{
    width: tall ? `calc(min(100%, 74rem) * ${zoom})` : `calc(min(100%, 90rem, (100dvh - 7rem) * ${width / height}) * ${zoom})`
  }} width={width} />
        </div>
      </dialog>
    </figure>;
};

Documentos guarda los archivos de todo el estudio en un solo lugar. Todos los miembros del estudio ven los mismos archivos y los organizan juntos.

## Mirá cómo se hace

<VideoTutorial src="/media/documentos-gestor/video.mp4" poster="/media/documentos-gestor/poster.webp" title="Cómo usar el gestor de documentos" duration="0:54" description="Mirá el recorrido por Documentos y seguilo en Veredicta." />

Resumen del video «Cómo usar el gestor de documentos» (0:54), con el expediente «Gómez, María c/ Transportes del Sur S.A. s/ Daños y perjuicios» como ejemplo:

1. Abrí Documentos: en el menú, hacé clic en «Documentos»; ves tus expedientes, tus carpetas y tus archivos.
2. Entrá a un expediente: cada expediente es una carpeta; al hacer clic ves los mismos archivos que en su pestaña «Documentos».
3. Abrí un archivo: hacé clic en el archivo para abrirlo; con Cmd o Ctrl + clic se abre en otra pestaña.
4. Usá el menú de cada archivo: en ⋮ o con clic derecho, descargalo, duplicalo, renombralo, movelo o eliminalo.
5. Cambiá la vista: elegí la «Vista por lista» o la «Vista de cuadrícula»; en la lista, ordená por columna.
6. Buscá un archivo: escribí en el buscador y encontrás archivos y carpetas de todo el expediente, con su ubicación.

El video cierra con «Ya sabés usar el gestor de documentos», un resumen de los seis pasos y cómo pedir ayuda: WhatsApp +54 9 11 2611-5660 o [ayuda@veredicta.com.ar](mailto:ayuda@veredicta.com.ar). Más guías en docs.veredicta.com.ar.

## Dónde está en la app

* En el menú de la izquierda, **Documentos**. [Abrir en Veredicta](https://app.veredicta.com.ar/documentos)
* Dentro de un expediente, la pestaña **Documentos**: muestra la misma carpeta que ese expediente tiene en **Documentos**.

## Paso a paso

<Steps titleSize="h3">
  <Step title="Abrí Documentos" id="paso-1">
    <GuideImage src="/media/documentos-gestor/paso-1.webp" width={1200} height={796} title="Paso 1: Abrí Documentos" alt="Inicio de Veredicta, con Documentos marcado en el menú de la izquierda." />

    En el menú de la izquierda, hacé clic en **Documentos**.

    Arriba aparecen tus expedientes, cada uno como una carpeta. Debajo, las carpetas y los archivos del estudio que no pertenecen a ningún expediente.
  </Step>

  <Step title="Entrá a un expediente" id="paso-2">
    <GuideImage src="/media/documentos-gestor/paso-2.webp" width={1200} height={796} title="Paso 2: Entrá a un expediente" alt="Documentos, con la carpeta del expediente «Gómez, María c/ Transportes del Sur S.A.» marcada." />

    Hacé clic en la carpeta del expediente. Adentro ves lo mismo que en su pestaña **Documentos**: lo que subís en un lugar aparece en el otro.

    La ruta de arriba (**Documentos** > el expediente > la carpeta) te lleva de vuelta a cualquier nivel con un clic.
  </Step>

  <Step title="Abrí un archivo" id="paso-3">
    <GuideImage src="/media/documentos-gestor/paso-3.webp" width={1200} height={796} title="Paso 3: Abrí un archivo" alt="La carpeta del expediente, con el archivo «Promueve demanda.pdf» marcado." />

    Hacé clic en el archivo. Los PDF se abren en el visor de Veredicta y los documentos creados en Veredicta, en el editor. Los demás formatos se abren en otra pestaña del navegador.

    <Tip>
      Con <kbd>Cmd</kbd> + clic (Mac) o <kbd>Ctrl</kbd> + clic (Windows), el archivo se abre en una pestaña nueva y seguís en la misma carpeta. El clic con la rueda del mouse hace lo mismo.
    </Tip>
  </Step>

  <Step title="Usá el menú de cada archivo" id="paso-4">
    <GuideImage src="/media/documentos-gestor/paso-4.webp" width={1200} height={796} title="Paso 4: Usá el menú de cada archivo" alt="El menú de un archivo, con Abrir en nueva pestaña, Descargar, Duplicar, Renombrar, Mover, Información, Preguntar al Asistente y Eliminar." />

    Pasá el mouse sobre el archivo y hacé clic en **⋮**, arriba a la derecha. En la vista por lista, **⋮** está en la columna **Acciones**. También podés hacer clic derecho sobre el archivo.

    El menú reúne todo lo que podés hacer con ese archivo. Cada acción está en [Acciones de un archivo](#acciones-de-un-archivo).
  </Step>

  <Step title="Cambiá la vista" id="paso-5">
    <GuideImage src="/media/documentos-gestor/paso-5.webp" width={1200} height={796} title="Paso 5: Cambiá la vista" alt="La carpeta del expediente en la vista por lista, con los botones de vista marcados." />

    Arriba a la derecha, elegí **Vista por lista** o **Vista de cuadrícula**. La lista muestra el propietario, el tamaño y la fecha de modificación de cada elemento.

    En la lista, hacé clic en **Nombre**, **Tamaño** o **Modificado** para ordenar por esa columna. Otro clic invierte el orden.
  </Step>

  <Step title="Buscá un archivo" id="paso-6">
    <GuideImage src="/media/documentos-gestor/paso-6.webp" width={1200} height={796} title="Paso 6: Buscá un archivo" alt="Los resultados de la búsqueda «oficio», con la columna Ubicación de cada archivo y carpeta." />

    Escribí en el buscador de arriba. Dentro de un expediente, Veredicta busca por nombre en todas sus carpetas.

    En la vista por lista, la columna **Ubicación** muestra en qué carpeta está cada resultado.

    <Note>
      En la pantalla principal de Documentos, el buscador encuentra los expedientes por carátula o número, y tus carpetas y archivos por nombre. Para buscar dentro de un expediente, entrá primero a su carpeta.
    </Note>
  </Step>
</Steps>

## Qué ves en Documentos

| Elemento | Qué es |
| - | - |
| Expedientes | Una carpeta por cada expediente del estudio, con el ícono de una balanza y la cantidad de elementos. Adentro están los mismos archivos que en su pestaña **Documentos**. |
| Carpetas | Las carpetas del estudio que no pertenecen a ningún expediente, por ejemplo «Administración del estudio». |
| Archivos | Los archivos del estudio que no están en ninguna carpeta. |
| Carpetas protegidas | Carpetas que administra Veredicta. Mirá [Carpetas protegidas](#carpetas-protegidas). |

## La barra

| Control | Para qué sirve |
| - | - |
| Buscador | En la pantalla principal dice «Buscar en mis documentos…»; dentro de un expediente, «Buscar archivos y carpetas…». |
| **Tutorial** | El botón con el signo de pregunta. Abre el «Tutorial de Documentos». Está en la pantalla **Documentos**, no en la pestaña del expediente. |
| **Vista por lista** y **Vista de cuadrícula** | Cambian cómo se muestran las carpetas y los archivos. |
| **Agregar** | **Nueva carpeta**, **Documento nuevo** (un documento para escribir en el editor) y **Subir archivos**. |

## Acciones de un archivo

| Acción | Qué hace |
| - | - |
| **Abrir en editor** | Solo en los documentos creados en Veredicta: los abre en el editor. |
| **Abrir en nueva pestaña** | Abre el archivo en otra pestaña del navegador. |
| **Descargar** | Lo baja a tu computadora. Los documentos creados en Veredicta se descargan en Word. |
| **Duplicar** | Crea una copia en la misma carpeta, con «(copia)» en el nombre. |
| **Renombrar** | Cambia el nombre. La extensión, por ejemplo .pdf, no cambia. |
| **Mover** | Lo lleva a otra carpeta. También podés arrastrarlo hasta la carpeta. |
| **Información** | Muestra el nombre, el tipo, el tamaño, quién lo creó y cuándo se modificó por última vez. No aparece en los documentos creados en Veredicta. |
| **Preguntar al Asistente** | Abre el [Asistente](/asistente/conoce-el-asistente) con el archivo adjunto. No aparece en los documentos creados en Veredicta. |
| **Eliminar** | Lo manda a la **Papelera**, donde podés restaurarlo. |

Las carpetas tienen **Abrir**, **Abrir en nueva pestaña**, **Renombrar**, **Mover** y **Eliminar**. Eliminar una carpeta la manda a la **Papelera** con todo lo que tiene adentro.

Las carpetas de los expedientes, en la pantalla principal, tienen **Abrir**, **Abrir en nueva pestaña**, **Ir al expediente** y **Preguntar al Asistente**. Un expediente no se renombra, no se mueve ni se elimina desde Documentos.

## Carpetas protegidas

Veredicta crea y administra algunas carpetas de cada expediente. **Documentos del sistema judicial** y **Pruebas** muestran «Carpeta protegida» y no se pueden renombrar, mover ni eliminar.

| Carpeta | Qué guarda |
| - | - |
| **Documentos del sistema judicial** | Los documentos de las actuaciones que Veredicta trae del sistema judicial. Su menú tiene **Ver actuaciones**. |
| **Pruebas** | Los archivos de las pruebas del expediente. Se administran desde la pestaña **Pruebas**, y su menú tiene **Ver pruebas**. |
| **Papelera** | Lo que eliminaste. Aparece cuando tiene algo adentro, y su menú tiene **Vaciar papelera**. Mirá [La papelera](/documentos/papelera). |

## Qué tener en cuenta

* **Abrir y seleccionar.** Un clic abre. <kbd>Shift</kbd> + clic selecciona, y arrastrar un recuadro desde un espacio vacío selecciona varios. Con varios seleccionados, el clic derecho sobre uno los mueve o los elimina a todos. Un clic en un espacio vacío quita la selección. Mirá [Organizar en carpetas](/documentos/carpetas).
* **La vista queda guardada** en ese navegador, también para la pestaña **Documentos** de los expedientes.
* **Almacenamiento.** Lo que subís ocupa el espacio del estudio. Lo ves en el menú de tu usuario: **Estudio jurídico** > **General** > «Almacenamiento». Si se llena, aparece «Llegaste al límite de almacenamiento».
* **La papelera no se vacía sola.** Lo eliminado queda en la **Papelera** hasta que lo restaurás o lo borrás de forma definitiva.
* **En el celular** no se arrastra ni se selecciona con un recuadro. Para mover un archivo, usá **Mover** en su menú.

## Guía en una imagen

Todos los pasos en una sola imagen, para tenerla a mano o compartirla con tu equipo.

<GuideImage tall src="/media/documentos-gestor/guia.webp" preview="/media/documentos-gestor/guia-preview.webp" width={1760} height={3000} title="Cómo usar el gestor de documentos" alt="Guía en seis pasos. 1. Abrí Documentos: en el menú, hacé clic en «Documentos»; ves tus expedientes, tus carpetas y tus archivos. 2. Entrá a un expediente: cada expediente es una carpeta; al hacer clic ves los mismos archivos que en su pestaña «Documentos». 3. Abrí un archivo: hacé clic en el archivo para abrirlo; con Cmd o Ctrl + clic se abre en otra pestaña. 4. Usá el menú de cada archivo: en ⋮ o con clic derecho, descargalo, duplicalo, renombralo, movelo o eliminalo. 5. Cambiá la vista: elegí la «Vista por lista» o la «Vista de cuadrícula»; en la lista, ordená por columna. 6. Buscá un archivo: escribí en el buscador y encontrás archivos y carpetas de todo el expediente, con su ubicación." caption="Todos los pasos en una sola imagen. Ampliala para acercarte a cada paso o descargala." />

## Guías relacionadas

<Columns cols={2}>
  <Card title="Subir archivos" icon="upload" href="/documentos/subir-archivos">
    Arrastrá tus archivos o subilos desde Agregar.
  </Card>

  <Card title="Organizar en carpetas" icon="folder-tree" href="/documentos/carpetas">
    Creá carpetas y mové, renombrá o seleccioná varios archivos.
  </Card>

  <Card title="Ver un documento" icon="eye" href="/documentos/ver-un-documento">
    El visor de PDF y cómo se abre cada formato.
  </Card>

  <Card title="La papelera" icon="trash-2" href="/documentos/papelera">
    Recuperá lo que eliminaste o borralo para siempre.
  </Card>
</Columns>

## ¿Necesitás ayuda?

El equipo de Veredicta te responde por WhatsApp o por correo.

<Columns cols={2}>
  <Card title="WhatsApp" icon="https://mintcdn.com/zest-labs/6i6sx-v6hNAjw3Vp/images/icons/whatsapp.svg?fit=max&auto=format&n=6i6sx-v6hNAjw3Vp&q=85&s=d2cbae11d2915e173949e4c75d2bb625" href="https://wa.me/5491126115660" width="24" height="24" data-path="images/icons/whatsapp.svg">
    +54 9 11 2611-5660
  </Card>

  <Card title="Correo" icon="mail" href="mailto:ayuda@veredicta.com.ar">
    [ayuda@veredicta.com.ar](mailto:ayuda@veredicta.com.ar)
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.