AI output is only trustworthy when it can be traced back to the source. Every requirement extracted by TenderCheck AI includes a clickable page citation that opens the original document text with the AI-identified fragment highlighted. Alongside this, the platform stores a complete, searchable analysis history in Turso edge SQLite — so every past tender analysis is instantly accessible across sessions without re-uploading a document.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/elecodes/TenderCheck-AI/llms.txt
Use this file to discover all available pages before exploring further.
Clickable Citations
EachRequirement object carries a source field with two citation properties:
source.pageNumber— the absolute page number in the original tender PDF (e.g.,7)source.snippet— a verbatim 1–2 sentence excerpt that the AI extracted from that page
source.pageNumber > 0. Clicking this badge opens the CitationPreview modal.
CitationPreview Modal
TheCitationPreview component displays:
- A header showing “Fuente del Documento” and the page number
- The full page text stored in
pageTexts[pageNumber - 1]— the complete prose of the original page - The AI-identified
snippethighlighted in green using a regex-based split-and-mark approach, so you can see exactly which sentence triggered the requirement extraction
Escape. If no page text is stored for that page (e.g., the PDF parser returned an empty page), the modal shows a “Texto de página no disponible” placeholder instead of failing silently.
Analysis History
The History Sidebar on the left side of the dashboard lists every analysis you have ever run, ordered with the most recent at the top.What the Sidebar Shows
- Tender title — the
tenderTitleextracted by the AI (up to 500 characters), truncated for display - Creation date — formatted in
dd MMM yyyylocale format (e.g.,03 Jun 2025) - Active indicator — a green left-border bar marks the currently loaded analysis
- Item count badge — the total number of analyses in your history is shown in the sidebar header
Searching History
A search input at the top of the sidebar filters the list in real time by tender title (case-insensitive). This is useful when you have accumulated dozens of analyses and need to quickly return to a specific procurement.Loading a Previous Analysis
Click any item in the sidebar to restore that analysis to the main panel. All requirements, validation results, and page texts are loaded from the database — no re-uploading needed.History Data Model
TheTenderAnalysis entity is the central record persisted for every analysis session. The fields most relevant to history management are:
| Field | Type | Description |
|---|---|---|
id | string | UUID primary key — used in all API routes |
userId | string | The authenticated user who created the analysis |
tenderTitle | string | AI-generated title (up to 500 chars) |
status | AnalysisStatus | PENDING, PROCESSING, COMPLETED, or FAILED |
createdAt | Date | Timestamp when the analysis record was first saved |
updatedAt | Date | Timestamp of the last update (e.g., after proposal validation) |
requirements | Requirement[] | All extracted requirements with source citations |
results | ValidationResult[] | All validation verdicts (populated after proposal validation) |
pageTexts | string[] | Full text of every page — powers citation previews |
metadata | object | Optional: page count, processing time, model version |
Managing Analyses
Browsing
The History Sidebar is always visible on the left of the dashboard. Analyses are listed as they were created; the active one is highlighted with a green left border. Keyboard navigation is supported: pressEnter or Space to select an item.
Deleting an Analysis
Hover over any history item to reveal the trash icon button. Clicking it triggers a browser confirmation dialog. On confirmation, the frontend calls:Session Persistence
All analyses are stored in Turso (distributed edge SQLite). Your history persists across browser sessions, devices, and deploys — you can close the browser, return the next day, and all previous analyses will still be listed in the sidebar.pageTexts Storage
When a tender PDF is parsed, TenderCheck AI stores the full plain-text content of every page in thepageTexts array on the TenderAnalysis record. This is a deliberate design decision:
- The original PDF is not retained after analysis. Only the extracted text is stored.
- When you click a citation badge days or weeks after the original upload, the CitationPreview modal reads from
pageTexts[pageNumber - 1]in the database — so the source text is always available. - For large PDFs processed via chunking, all pages are merged into a single
pageTextsarray before saving.
pageTexts stores raw plain text, not the original PDF binary. If your PDF had complex formatting, tables, or multi-column layouts, the extracted text may appear linearised. The highlighted snippet will still correctly identify the relevant passage.