Help center

Kordvik — User Manual

Version 2.0 · June 2026 — covers the full user interface


Contents

  1. What is Kordvik?
  2. Your account & sign-in
  3. Account security & profile
  4. Workspaces: create, join & switch
  5. Dashboard
  6. Vendors
  7. Contracts
  8. Renewals
  9. Reports
  10. Savings & opportunities
  11. Activity
  12. Importing data (CSV & email)
  13. Uploading a PDF contract
  14. Settings
  15. Roles and permissions
  16. Plans and limits
  17. Platform administration (operator-only)
  18. System & error pages

1. What is Kordvik?

Kordvik is a vendor and contract tracker for small and medium businesses. It gives you one place to:

  • See every vendor you spend money with
  • Track contract terms, amounts, and renewal dates
  • Get email (and optionally Slack or Teams) reminders before renewals sneak up on you
  • Spot auto-renew risk and analyse your total spend
  • Use AI to read PDF contracts, flag risky clauses, benchmark vendors, and draft renewal negotiations

Everything you do lives inside a workspace. A workspace holds your vendors, contracts, members, and settings; you can belong to several (for example, one per client or business unit).


2. Your account & sign-in

Before you reach a workspace you sign in to a Kordvik account (an email address). This section covers everything on the sign-in screens.

Create an account

From the landing page click Sign in, then Create an account (or Start free). On the Create your account screen enter:

Field Notes
Email Your work email.
Password At least 6 characters (max 100).
Confirm password Must match.

Click Create account. Depending on how your Kordvik instance is configured:

  • Email confirmation required — you land on a confirmation screen and receive an email with a "confirm your account" link. Click it to activate the account. (On a development/test instance the link is shown on screen instead of emailed.)
  • No confirmation required — you are signed straight in.

If you didn't get the email, go to Resend email confirmation (linked from the login page), enter your address, and click Resend.

Log in

On the Welcome back screen:

  • Enter your Email and Password, optionally tick Remember me, and click Log in, or
  • Click Log in with a passkey to sign in passwordlessly with a passkey you've registered (see section 3), or
  • If your instance has external providers (e.g. Google, Microsoft) configured, use the provider buttons.

Helpful links on this page: Create an account, Forgot your password?, and Resend email confirmation.

If the email/password don't match you'll see "Invalid login attempt." After several failed attempts the account is temporarily locked out (a "Locked out" screen appears — wait and try again later). If you have two-factor authentication enabled, you'll be asked for a code next (see below).

Two-factor at login

If your account has 2FA enabled, after your password you reach Two-factor authentication:

  • Enter the 6-digit code from your authenticator app and click Log in. Tick Remember this machine to skip 2FA on this browser in future.
  • No app to hand? Click log in with a recovery code and enter one of your saved one-time recovery codes.

Forgot / reset your password

  1. On the login page click Forgot your password?, enter your email, and click Reset password. You'll always see a "check your email" confirmation (whether or not the address exists).
  2. Open the email and click the reset link. On the Reset password screen enter your email and a new password (twice) and click Reset.
  3. You'll be told the password was reset, with a link to log in. (A broken or already-used link shows an "Invalid password reset" message — start the flow again.)

3. Account security & profile

Open your account area from Profile at the bottom of the sidebar (or the Profile link). It has its own left-hand menu: Profile, Email, Password, External logins (if available), Two-factor authentication, Passkeys, Personal data, plus Back to app and Sign out.

Profile

Shows your username (read-only) and an editable Phone number. Click Save to update.

Email

Shows your current email with a ✓ Confirmed badge (or a Send verification email button if it's unconfirmed). To change it, type a new address under New email and click Change email — a confirmation link is sent to the new address; the change completes when you click it.

Password

  • Change password — enter your old password and a new one (twice), then Update password.
  • If you signed up only via an external provider you'll see Set password instead, to add a local password so you can log in without the provider.

Two-factor authentication (2FA)

The Two-factor authentication screen is the hub:

  • Add authenticator app / Set up authenticator app — opens Configure authenticator app: scan the QR code (or type the shown key) into Microsoft/Google Authenticator, enter the 6-digit Verification Code, and click Verify. On first setup you're shown 10 recovery codes — save them somewhere safe.
  • Reset recovery codes / generate a new set — produces a fresh set of 10 codes (the old ones stop working). The page warns you when you're running low.
  • Reset authenticator app — issues a new key (your app must be reconfigured); 2FA is off until you re-verify.
  • Disable 2FA — turns off the second factor (keys are kept unless you also reset them).
  • Forget this browser — clears a "remembered" device so it will prompt for 2FA again.

Passkeys

The Passkeys screen lists your registered passkeys. Click:

  • Add a new passkey — your browser/device prompts you to create one; you're then taken to name it.
  • Rename — change a passkey's name (helps you tell devices apart).
  • Delete — remove a passkey.

Registered passkeys power the Log in with a passkey button on the login screen. (Up to 100 passkeys per account.)

External logins

If external providers are enabled, Manage your external logins lists the providers linked to your account, lets you Remove one (when it's safe to do so), and offers buttons to add another service.

Personal data

The Personal data screen lets you:

  • Download a copy of the personal data Kordvik holds for you.
  • Delete your account. On Delete personal data you confirm with your password and click Delete data and close my account. This permanently removes your account and signs you out. You can't delete your account while you're the only admin of a shared workspace that still has other members — transfer the admin role or delete those workspaces first.

4. Workspaces: create, join & switch

Create a workspace

When you sign in without a workspace you're taken to Create your workspace:

Field Notes
Workspace name Required. 2–200 characters. Can be changed later.
Currency Default display currency for spend figures (EUR, USD, GBP, SEK).
Timezone Used when scheduling reminder emails.

Click Create workspace — you land on the Dashboard. (The workspace's URL "slug" is derived from the name and is permanent.)

The onboarding checklist

A brand-new workspace shows a Getting started card with a progress bar and four steps:

  1. Create workspace — done automatically.
  2. Add your first vendor — Add vendor.
  3. Add a contract — Add contract.
  4. Set up alerts — Configure (notifications).

Each step ticks off as you complete it; the card disappears once you're set up. (View-only members don't see the action buttons.)

Switch between workspaces

If you belong to more than one workspace:

  • The workspace name at the top of the sidebar becomes a drop-down — click it to jump to another workspace or Create new workspace.
  • Visiting the site root also shows a Pick a workspace screen listing all your workspaces. (If you belong to exactly one, you're taken straight into it.)

Join a workspace by invitation

When an admin invites you, you receive a link to /invites/…. Opening it (while signed in) shows Join workspace with the role you've been offered; click Accept invite. Then:

  • Success — a "You're in" screen with an Open workspace button.
  • Wrong account — if the invite was sent to a different email, you'll be told which address to sign in with.
  • Invalid / revoked — an "Invite not found" message; ask the admin to re-send.

If a workspace is suspended

If a platform administrator has suspended your workspace, opening it shows a Workspace suspended page explaining it's temporarily unavailable, with a link back to your other workspaces.


5. Dashboard

The Dashboard is your at-a-glance view. It refreshes every time you open it.

Metric cards

Card What it shows
Renewals (30d) Active contracts that renew — or whose cancel-by date falls — within 30 days
Renewals (60d) The same, within 60 days
Auto-renew risk Auto-renewing contracts among those 60 days — these roll over without action
Annual spend Total annualised spend across all active contracts

If your contracts use more than one currency, the Annual spend card converts everything to the workspace base currency using ECB reference rates (the conversion date is shown beneath the figure). If live rates are temporarily unavailable, a small "rates unavailable — not converted" note appears and amounts are shown per currency instead. This matches how the Reports page totals spend.

Upcoming renewals table

Shows the next 8 active contracts you need to act on (within 90 days), sorted by their action deadline. A contract's action deadline is its cancel-by date when it has a notice period (see Notice period and cancel-by date), otherwise its renewal date. Rows with a notice period show "Cancel by …" under the renewal date. Each row carries a colour-coded urgency badge counting down to the action deadline:

Badge Meaning
Red — danger Deadline in 30 days or fewer (or already overdue)
Yellow — warn Deadline in 31–60 days
Blue — info Deadline more than 60 days away
Red — "notice passed" The cancel-by date has passed but the contract hasn't renewed yet — it is too late to give notice

Days are counted in the workspace's timezone (Settings → Workspace), so "in 1d" doesn't flip a day early or late around midnight.

Click Open on any row to go directly to that contract's detail page. Click View all to see the full contract list.

Quick actions

Three buttons let you add data without leaving the Dashboard:

  • Add vendor — opens the Add vendor form
  • Add contract — opens the Add contract form
  • Import CSV — goes to the CSV import page

6. Vendors

Sidebar → Vendors

Vendor list

Every vendor you track appears here as a table row showing name, category, number of active contracts, annual spend (active contracts only), and next renewal date. Click any row to open the vendor detail page.

Archived vendors are hidden. Tick Show archived above the table to list them too (they carry an Archived badge).

Add a vendor

Click Add vendor (top right). A modal opens with three fields:

Field Required Notes
Name Yes 1–200 characters
Category Yes software, services, infrastructure, utilities, legal, insurance, finance, other
Website No e.g. https://vendor.com — shown as a link on the detail page

Click Save to create the vendor.

Vendor detail page

Click a vendor row to open its detail page. From here you can:

Edit the vendor

Click Edit (top right) to change the name, category, or website.

Archive a vendor

When you stop working with a vendor, click Archive (Editors and Admins). An archived vendor is hidden from the Vendors list and isn't offered when you add a new contract; everything else — its contracts, contacts and notes — stays exactly as it is. If the vendor still has active contracts, Kordvik asks you to confirm first: archiving does not cancel those contracts or their reminders (mark them cancelled on each contract page if they have ended). Click Unarchive to bring the vendor back. Both actions appear in the Activity log.

Contracts

A table lists every contract linked to this vendor — name, renewal date, amount, frequency, and auto-renew status. Cancelled and expired contracts are listed last with a status badge. Click Open to go to a contract, or click Add contract to create a new one pre-linked to this vendor.

Benchmark

Click Run AI benchmark for a quick AI read on whether this vendor's spend and terms look competitive for its category. Kordvik shows a verdict badge (Competitive, Fair, Watch, or Overpriced), a short summary, observations, and suggested negotiation levers. This needs at least one contract on the vendor.

The benchmark is an estimate from the model's general knowledge — not live market pricing — and is stamped with the time it ran. If you edit the vendor or its contracts afterwards, a "changed since the benchmark ran — re-run" hint appears; click Re-run for a current read.

Contacts

Keep track of the people at this vendor (account managers, legal contacts, etc.).

Click + Add to open the contact form:

Field Required
Name Yes
Role No
Email No
Phone No

Click Remove on a contact row to delete it.

Notes

Free-text notes attached to the vendor (meeting notes, negotiation context, etc.).

Type in the textarea and click Add note to save. Each note shows its creation date. Click Remove to delete a note.


7. Contracts

Sidebar → Contracts

Contract list

Every contract in the workspace is shown here — vendor, name, renewal date, amount, frequency, and auto-renew status. A small icon shows the contract type (⚙️ Service, 🌐 Domain, 🔒 SSL Certificate, 📦 Software License). Click Open to go to a contract's detail page.

Use the type filter chips above the table (All, ⚙️ Service, 🌐 Domain, 🔒 SSL, 📦 License, Other) to narrow the list. If no contracts match the chosen type, the page says "No contracts of this type" with a Show all button.

The status chips below them choose between Active (the default), Ended (cancelled or expired contracts) and All statuses. Ended contracts carry a Cancelled or Expired badge. Contracts with a notice period show their cancel-by date under the renewal date.

If you have reached your plan's contract limit, a banner appears at the top of the page and the Add manually button is disabled. Upgrade your plan to add more.

Add a contract manually

Click Add manually. Fill in the form:

Field Required Notes
Vendor Yes Select from existing vendors
Type No Service, Domain, SSL Certificate, Software License, or Other
Contract name Yes 1–200 characters
Amount No Numeric value
Currency No EUR, USD, GBP, SEK (defaults to workspace currency)
Frequency No Annual, Monthly, One-off (defaults to Annual)
Auto-renew No Tick if the contract rolls over automatically
Start date No Defaults to today
Renewal date No Defaults to 1 year from today
Notice period (days) No How many days before the renewal date notice must be given to cancel (0–730). The computed Cancel by date is shown under the field. Leave empty if the contract has no notice period
Reminders No Tick which advance notices to create: 90 / 60 / 30 days before the renewal date — or before the cancel-by date when a notice period is set (60d and 30d are ticked by default)

Choosing a Type of Domain or SSL Certificate sets sensible defaults (Annual, auto-renew on, a 1-year term); a Software License defaults to Annual with auto-renew off. These only fill fields you haven't already changed yourself.

Click Save. The contract appears in the list immediately.

Upload a PDF contract

Click Upload PDF to let Kordvik read a PDF and extract the contract details automatically — including a best guess at the contract Type. See section 13 for the full walkthrough.

Contract detail page

Click Open on any contract row.

Edit contract details

All fields from the Add form are editable here. Change any value and click Save changes. A "Saved." confirmation appears briefly.

If you change the Renewal date or the Notice period, Kordvik automatically moves any pending reminders to match. A 30-day reminder stays 30 days before the new date (or the new cancel-by date), and so on.

Notice period and cancel-by date

Many contracts can only be cancelled if you give notice a set time before they renew — "terminate with 30 days' written notice before the end of the term". Enter that as the Notice period (days) and Kordvik works out the cancel-by date: the renewal date minus the notice period. For example, a contract renewing on 14 Aug 2026 with a 30-day notice period must be cancelled by 15 Jul 2026.

When a notice period is set:

  • Reminders count back from the cancel-by date, not the renewal date, so a 30-day reminder arrives 30 days before you must give notice. Reminder emails and Slack/Teams messages show the cancel-by date.
  • Urgency badges on the Dashboard and Renewals page count down to the cancel-by date, and the Renewals windows include contracts whose cancel-by date falls inside them.
  • Risk analysis flags a contract High when the cancel-by date has passed, the contract auto-renews and no renewal decision was recorded ("Notice deadline passed — this contract will auto-renew"), and Medium when the cancel-by date is 14 days or less away with no decision.
  • Each auto-renewal keeps the same number of notice days, so the cancel-by date moves with the renewal date.

When you upload a PDF, the AI reads the notice period from the contract (months are converted to days on the calendar, counting back from the renewal date) and shows it on the review form so you can check it before saving.

End or reactivate a contract

A contract is Active until it ends. Editors and Admins can click Mark cancelled at the top of the contract page when a contract has been cancelled. Kordvik also ends contracts automatically once a day:

  • An auto-renewing contract whose renewal you Declined becomes Cancelled as soon as its renewal date passes (instead of being rolled over).
  • A contract that doesn't auto-renew (or is one-off) becomes Expired 30 days after its renewal/end date, unless you move the renewal date forward first.

An ended contract keeps all its details but its pending reminders are cancelled (shown as Skipped), and it no longer counts in renewals, the calendar, the Dashboard, spend reports or savings. Click Reactivate to make it active again; Kordvik restores its reminders for the current cycle where their dates are still in the future. Ending and reactivating are recorded in the Activity log. Use Delete only if you want the contract gone for good.

Renewal & ownership

Assign an Owner (any active member) so it's clear who looks after the contract.

Record a Renewal decision for the upcoming renewal: click Approve or Decline, or Reset back to undecided. Until you decide, the badge reads Decision needed. A declined auto-renew contract will not be rolled over automatically by Kordvik — once its renewal date passes it is marked Cancelled.

Negotiation assistant

Click Draft negotiation to have the local AI model write a ready-to-edit vendor email, plus talking points and a short prep checklist, using this contract's details (and any benchmark and risk findings). It can take a moment.

Once a draft appears you can:

  • Copy email — copies the subject and body to your clipboard.
  • Open in email — opens a new message in your email app, pre-addressed to the vendor's first contact (if one has an email on file) with the subject and body filled in.

Click Re-draft to generate a fresh version. The draft is AI-generated — review and edit it before sending.

AI risk review

Below the automatic risk analysis, click Run AI risk review to have the local model read the uploaded PDF and flag clause-level risks (auto-renewal, termination, price increases, liability, and so on). Each finding shows a severity badge, a short explanation, and the relevant quote from the contract. This is only available once a PDF has been uploaded for the contract.

The review result is cached and stamped with the time it ran. If you edit the contract after a review, Kordvik shows a "this contract changed since the review ran — re-run to refresh" hint; click Re-run to refresh the findings.

Documents

The Documents section lists every file stored for the contract — the original, amendments, and anything else — with its type, size and upload date. Click a file name to open it.

  • Add a document (Editor or Admin): pick the type (Original, Amendment or Other) and choose a PDF of up to 25 MB. Only PDFs can be attached for now.
  • The document marked Primary is the one View PDF opens and the AI risk review reads. A contract added by hand or by CSV import has no document at first; the first PDF you add becomes its primary document.
  • Delete a document and confirm to remove it permanently. If you delete the primary document, the remaining original (or else the newest PDF) becomes primary.

Reminders

The Reminders table shows each reminder configured for this contract:

Column Meaning
Offset How many days before the renewal date (or before the cancel-by date, when the contract has a notice period)
Scheduled date Calendar date the reminder email will be sent
Status Pending (not yet sent), Sent, Failed, Skipped
Sent Actual send timestamp (once sent)
Remove Deletes a pending reminder (Sent reminders cannot be removed)

Add a reminder: Type a number of days (1–365) into the input at the bottom of the table and click Add. You cannot add a duplicate offset if one is already pending.

Delete a contract

Click the red Delete button at the top of the page. Deletion is immediate and permanent — all reminders and documents attached to the contract are also deleted.


8. Renewals

Sidebar → Renewals

The Renewals page gives you two ways to see upcoming renewals: a list grouped by month, or a calendar grid.

List view

Use the time-window buttons to filter by horizon: 30 days, 60 days, 90 days, 180 days, 365 days. The default is 90 days.

Only active contracts are listed. The window counts to each contract's action deadline — its cancel-by date when it has a notice period, otherwise its renewal date — and contracts are grouped by the month that deadline falls in. Each row shows the renewal date (with "Cancel by …" underneath when there is a notice period), vendor, contract name, annualised amount, auto-renew status, an urgency badge (see badge meanings in section 5), and a Decision badge — Decision needed, Approved, or Declined. Auto-renew contracts always show a decision badge; for non-auto-renew contracts the badge appears once a decision has been recorded.

Click Open to go directly to that contract.

Calendar view

Click Calendar to switch to a 3-month calendar grid (always starting from the current month). Days with renewals of active contracts show coloured dots — red for imminent, orange for soon, blue for later (based on the cancel-by date when a notice period is set).

  • One contract on a day — clicking the day navigates directly to that contract's detail page.
  • Multiple contracts on a day — clicking the day opens a small popover listing all the contracts. Click Open → next to any one to navigate to it.

9. Reports

Sidebar → Reports

Summary metrics

Three cards give a quick financial picture:

Card What it shows
Total annual spend Sum of all contracts annualised to a yearly figure
Auto-renew exposure Annual spend on auto-renewing contracts, and how many that is
Average contract Total spend divided by number of contracts

Spend trend

A 12-month line chart shows how your annualised spend has moved over the past year. Hover over the chart to see the spend figure for each month.

Spend by category and top vendors

Two tables sit side by side:

  • By category — each category, its total annual spend, and percentage of total.
  • Top vendors — the 10 largest vendors by annual spend, with their contract count.

All figures are shown in the workspace's base currency. When contracts use more than one currency, Kordvik converts them to the base currency using ECB reference rates (a banner at the top shows the rate date). If live rates are temporarily unavailable, a banner says so and amounts are left unconverted — where several currencies are present, the breakdowns will mix them.

Export for accounting

Export your data as CSV files that import into Xero, QuickBooks, Fortnox, and most accounting tools:

  • Contracts CSV — one row per contract. Alongside each contract's own amount it includes base-currency columns (annualised amount converted to the workspace base currency, and the base currency code) so a mixed-currency book totals correctly.
  • Vendors CSV — one row per vendor.

Both files are written so accented and non-Latin names render correctly in Excel. Exporting requires the Editor or Admin role — Viewers can read the data in the app but cannot bulk-export it (see section 15).


10. Savings & opportunities

Sidebar → Savings

The Savings page is where Kordvik surfaces ways you might cut cost or tighten up tracking. It scans your vendors and contracts and lists opportunities such as:

  • A monthly contract that could likely move to annual billing for a discount.
  • An auto-renewing contract with no reminder set (these are flagged more urgently when already overdue).
  • More than one tool in the same category — possible overlap to consolidate.
  • A contract with no cost recorded, so it isn't counted in your spend.
  • Vendors an AI benchmark flagged as Overpriced (run a benchmark on a vendor to add these).

Each opportunity shows a short explanation and, where it can be quantified, an estimated yearly saving. A card at the top totals the estimated potential savings per year.

These figures are conservative estimates, not quotes. They use cautious heuristics (for example, only a fraction of spend for an overpriced vendor) and exclude one-off setup fees, so treat them as a starting point for review rather than a guarantee. Where contracts span multiple currencies the total is converted to the workspace base currency at ECB rates; if live rates are unavailable, the total is shown per currency instead.

Click Open on any row to jump straight to the contract or vendor it refers to. If nothing needs attention, the page says so — opportunities surface automatically as you add data.


11. Activity

Sidebar → Activity

The Activity page is an audit log of what's happened in the workspace — useful for teams sharing a workspace. It lists the most recent actions (up to the latest 100), newest first, with:

  • When the action happened (in UTC).
  • Who did it.
  • Action — a friendly, colour-coded label (e.g. Vendor created, Contract updated, Contract deleted, Contract uploaded, Renewal decision, Owner changed, Contract cancelled, Contract expired, Contract reactivated, Vendor archived, CSV import). Contracts that Kordvik ends automatically are shown as done by Kordvik.
  • Item — which record it affected, with a short detail.

Actions are recorded automatically as you and your teammates work — for example creating or editing vendors and contracts, recording a renewal decision, or generating a negotiation draft. There's nothing to configure.


12. Importing data (CSV & email)

Sidebar → Import CSV

This page has two ways to bring contracts in without entering them by hand: a CSV import and a private email-in address.

CSV import

Use CSV import to add many contracts at once from a spreadsheet.

Download the template — click Download template CSV to get a pre-formatted file with the correct headers. Open it in Excel, Numbers, or Google Sheets and fill in your data.

Columns

Only vendor_name, contract_name and renewal_date are required; the rest are optional. Header names are matched case- and space-insensitively, and the column names of Kordvik's own Contracts CSV export (Vendor, Contract, RenewalDate, …) are accepted too — so an export can be imported again as-is.

Column Required Format Example
vendor_name Yes Text (max 200 characters) Figma
contract_name Yes Text (max 200 characters) Figma Pro
renewal_date Yes YYYY-MM-DD 2026-01-01
category No Text (blank = other) software
amount No Number (blank = 0; 4 900,00 and $4,900.00 also work) 1200
currency No 3-letter ISO code (blank = workspace currency) EUR
frequency No monthly / annual / oneoff (blank = annual) annual
start_date No YYYY-MM-DD (blank = today; must not be after renewal_date) 2025-01-01
auto_renew No true / false / yes / no (blank = false) false
notice_period_days No Whole number of days, 0–730 30

Maximum file size: 5 MB; at most 5,000 rows per import.

Import flow

  1. Click the file input and select your CSV file.
  2. A Preview appears. Every row is checked before anything is saved: the summary shows how many rows are valid and how many have problems, and each problem row lists all of its problems (e.g. "amount 'lots' is not a valid number; renewal_date is required"). Rows whose vendor + contract name already exist in the workspace, or repeat an earlier row of the file, are flagged as duplicates.
  3. If the import would go over your plan's contract limit, the preview says so up front — how many contracts will be imported and how many valid rows will be skipped.
  4. Click Import N contracts (or Import N valid contracts · skip M when some rows will be skipped) — only valid rows are imported. Cancel starts over.
  5. A summary appears: how many were imported, and every skipped row with its reason.

Upgrade to Team or Business to remove the contract limit.

Email a contract

Forwarding contract PDFs to a private address is shown as Coming soon until inbound email is switched on for your Kordvik installation. When it is available, the Email a contract card gives you a private address to forward contract PDFs to — each PDF attachment is turned into a contract automatically (you then review the extracted fields; low-confidence imports are flagged on the contract's risk panel). Forwarding the same email twice does not create duplicate contracts.

  1. Click Enable email ingestion. Kordvik generates a private address like …@inbound.kordvik.com.
  2. Forward (or set vendors to send) contract PDFs to that address.
  3. Click Regenerate address if the address is ever exposed — this invalidates the old one.

Email ingestion is managed by Editors/Admins; Viewers see a read-only note. (A separate, Admin-only option to connect a whole Outlook mailbox lives under Settings → Integrations — see section 14.)


13. Uploading a PDF contract

Sidebar → Contracts → Upload PDF

Kordvik can read a PDF contract and fill in the form for you using a local AI model. The file is processed on your own server — no third-party services are involved.

Maximum file size: 25 MB.

Steps

  1. Click the file input and select a PDF.
  2. Kordvik extracts the contract data. A loading message is shown while this runs (typically a few seconds per page).
  3. The Review screen appears with:
    • An extraction confidence badge (green ≥ 70 %, yellow 40–69 %, red < 40 %) — lower confidence means more fields may need manual correction.
    • Any warnings the extractor flagged (e.g., "renewal date unclear").
    • A pre-filled form with the extracted values, including a best guess at the contract Type.
  4. Review and correct any fields, then click Save contract.

If extraction fails entirely, an empty form is shown with a message explaining that you can fill it in manually.

Form fields on review

All fields match those in the manual add form (vendor, contract name, type, amount, currency, frequency, auto-renew, start date, renewal date, notice period, reminders). The Notice period (days) is pre-filled when the AI found one in the contract — check the computed cancel-by date before saving. The Type is pre-selected from the AI's inference — change it if needed before saving. If Kordvik recognised a vendor name that already exists in your workspace it is pre-selected; otherwise the extracted name is placed in the New vendor name field and a new vendor is created when you save.


14. Settings

Sidebar → Settings

Settings are organised into six tabs. Most settings require the Admin role.

Workspace

Change the workspace name, currency, and timezone. The workspace slug (used in URLs) is permanent and cannot be changed. Click Save to apply changes.

Export all data (Admins only) — downloads one ZIP file with everything in the workspace, for your own records or to move to another tool (GDPR data portability):

File in the ZIP Contents
workspace.json Workspace settings, notification settings, plan, connected storage/mailbox accounts
vendors.json Every vendor, with tags and cached benchmark results
contracts.json Every contract, including your manual edits, renewal decision and owner, its reminders, and a list of its documents
contacts.json, notes.json Vendor contacts and notes
members.json Members and pending invites: email, role, status, email preferences
activity.json The full activity log
files/<contract id>/…pdf Every stored contract document
manifest.json When the export ran, and any documents that couldn't be read from storage

Passwords, sign-in data and connection credentials (Slack/Teams/Drive/mailbox tokens) are never included. Each export is recorded in the activity log, and you can run a few exports every 15 minutes.

Members

Member list — everyone with access is listed with their email, role, and status (Active or Pending invite). Admins can change an active member's role using the dropdown in the Role column.

Invite a member — click Invite member, enter the person's email, select a role (Admin, Editor, or Viewer), and click Send invite. Kordvik sends an invitation email with a link; if email isn't configured, the link is shown on screen to share manually. To cancel a pending invite, click Revoke in that row. (See the invitee's side in section 4.)

Plan limits restrict how many members a workspace can have (see section 16).

Notifications

My notifications (every member, any role) — your own email preferences for this workspace:

  • Email me renewal reminders — switch off to stop getting reminder emails from this workspace.
  • Email me the weekly briefing (Admins) — switch off to stop getting the weekly briefing.

Every reminder and briefing email also has an Unsubscribe link at the bottom. It opens a page that asks you to confirm, then switches that kind of email off for you. Switch it back on here at any time.

Email reminders (Admins)

  • Send renewal reminders by email — reminder emails go out on each contract's scheduled reminder dates, to every Admin of the workspace.
  • Also notify contract owners — the member set as a contract's Owner gets its reminders too, whatever their role. On by default.
  • Send a weekly briefing — Admins receive a Monday morning email covering upcoming renewals, decisions, risks, benchmark flags, and savings. Click Send me a preview now to queue one immediately.

Anyone who has switched an email off under My notifications (or unsubscribed) doesn't get it.

Slack — connect a Slack workspace to post reminders to a channel: click Connect via OAuth (if configured) or paste a bot token, pick the channel, Save channel, and Send test message to verify. Disconnect removes it. Requires the Business plan.

Microsoft Teams — paste an Incoming Webhook URL from a Teams channel, click Save, and test with Send test message. Requires the Business plan.

Integrations

Connect cloud storage so any PDF dropped there is automatically ingested as a contract. Three services are supported — Google Drive, OneDrive, and SharePoint — all on the Business plan.

  1. Click Connect Google Drive (or OneDrive / SharePoint).
  2. For Google Drive / OneDrive: complete the OAuth flow, then Pick folder.
  3. For SharePoint: load sites → pick a site → load libraries → pick a library → pick a folder.

A sync runs automatically every hour. Use Sync now for one connection, or Sync all connections (top right) for all of them. Disconnect removes a connection.

Outlook mailbox — you can also connect an Outlook / Microsoft 365 mailbox so any email with a PDF attachment is auto-ingested. Connecting and disconnecting both require the Admin role. Click Connect Outlook mailbox, complete the Microsoft sign-in, and the card shows the account and whether its subscription is active; Disconnect removes it.

Billing

Shows your current plan, its status, and your invoice history.

Switch plans

Plan Users Contracts Slack & Teams Drive sync
Free 1 25 No No
Team 5 100 Yes No
Business Unlimited Unlimited Yes Yes

Click Switch to [Plan] to change. Downgrades take effect immediately; upgrades redirect to Stripe checkout for payment.

Invoices — past invoices show date, description, amount, and status. Click Manage payment method to update your card in the Stripe portal.

Danger zone

An Admin can permanently delete the workspace and everything in it (vendors, contracts, contacts, notes, reminders, invoices):

  1. Click Delete workspace.
  2. Type the workspace name exactly as shown to confirm.
  3. Click Delete forever.

This cannot be undone. To keep a copy of your data, use Export all data on the Workspace tab first.


15. Roles and permissions

Every member of a workspace has one of three roles.

Action Admin Editor Viewer
View vendors, contracts, renewals, reports, savings, activity Yes Yes Yes
Add / edit / delete vendors Yes Yes No
Add / edit / delete contracts Yes Yes No
Mark contracts cancelled / reactivate them Yes Yes No
Archive / unarchive vendors Yes Yes No
Add / remove contacts and notes Yes Yes No
Add / remove reminders Yes Yes No
Record a renewal decision Yes Yes No
Run AI risk review / benchmark / draft negotiation Yes Yes No
Import CSV / enable email-in Yes Yes No
Upload PDF Yes Yes No
Add / delete contract documents Yes Yes No
Open contract documents Yes Yes Yes
Export accounting CSVs Yes Yes No
Export all workspace data (ZIP) Yes No No
Manage your own email notifications Yes Yes Yes
Invite / revoke members Yes No No
Change member roles Yes No No
Change workspace settings Yes No No
Configure notifications and integrations Yes No No
Connect / disconnect an Outlook mailbox Yes No No
Switch billing plan Yes No No
Delete workspace Yes No No

The first person to create a workspace is automatically an Admin. Subsequent members receive the role chosen at invite time and can be promoted or demoted by any Admin at any time.


16. Plans and limits

Free Team Business
Members 1 5 Unlimited
Contracts 25 100 Unlimited
Email reminders Yes Yes Yes
Slack + Teams No Yes Yes
Drive sync No No Yes

When a limit is reached:

  • Contracts — the Add manually button and the Upload PDF flow are disabled. The Import CSV preview warns before importing when rows would exceed the limit; those rows are skipped and listed.
  • Members — the Invite member button is disabled and the invite modal explains the limit.

To increase limits, go to Settings → Billing and switch to a higher plan.


17. Platform administration (operator-only)

This section is for the platform operator who runs the Kordvik instance (the Platform admin role), not for ordinary workspace members. If you don't have the role, you won't see these screens — and an attempt to open /admin shows an "Access denied" page.

Platform admins get a separate admin area with its own sidebar (Overview, Users, Background jobs, plus Back to app and Sign out).

Overview (/admin)

  • Top cards: total Workspaces, Users, and Contracts across the whole instance.
  • A workspaces table (name/slug, plan, members, contracts, created date, status). For each workspace you can:
    • Change the plan via the dropdown.
    • Suspend / Unsuspend it (a suspended workspace is frozen — members see the suspended page and its background jobs are skipped).
    • Delete it: click Delete, type the exact workspace name, then Confirm delete.
  • Manage users → opens the Users screen.

Users (/admin/users)

A table of every account (email, confirmed, workspace count, platform-admin status, active/deactivated). For each user you can Make admin / Revoke admin and Deactivate / Reactivate. You can't revoke your own platform-admin or deactivate yourself. Deactivating a user ends their existing sessions shortly afterwards.

Background jobs (/hangfire)

The Background jobs link opens the Hangfire dashboard, where recurring jobs (reminders, weekly briefing, drive sync, invoice generation, FX refresh) can be inspected. It's restricted to admins.


18. System & error pages

You may occasionally land on one of these built-in pages:

  • Not found — the workspace or page doesn't exist, or you're not a member of it. Use Back to home.
  • Workspace suspended — your workspace is temporarily suspended by a platform admin (see section 4).
  • Access denied — you're signed in but lack permission for that resource (for example, a non-admin opening /admin).
  • Error — something went wrong processing the request; use Reload. (In development, extra diagnostic detail and a request ID are shown.)
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.