Internative Logo
On-prem CRM and work management

One flow from sales to delivery, on your own server.

The CRM that writes the quote, sets up the project and your AI agent can use too. Companies, requests, offers and projects in one database, one audit trail.

Runs on your server: MongoDB, Redis, S3-compatible storage and SMTP are all it needs.

  1. Companies
  2. Contacts
  3. Requests
  4. Offers
  5. Projects

Companies, contacts, requests, offers and projects: one database, one interface, one audit trail.

Portal CRM by the numbers

69

MCP tools for Claude, Cursor and Codex

20

Public REST endpoints

7

Quote document block types

4

Currencies, TL value at the TCMB rate

0

Passwords: email code or Google sign-in

1

Server: single-machine install

What happens in a day

From first contact to backup, a day in eight steps.

Every step is real product behaviour. A lead from the web form is a project by the evening and backed up overnight.

  1. 09:0001

    A request from the web form

    The lead is matched to an existing company and contact by email or domain and opened as a request. The owner gets an email; a 3-business-day deadline that skips public holidays is set.

  2. 10:0002

    Progress on the Kanban

    The sales rep moves the request on the shared Kanban, leaves a note on the company record and @mentions the team.

  3. 11:3003

    A branded quote in 15 minutes

    The quote builder suggests items from the catalog and generates the payment plan in one click; a branded TR/EN PDF comes out.

  4. 14:0004

    Follow-up runs itself

    Setting "Quote sent" suggests a reminder. If there is no reply in 7 days, the system emails a follow-up every morning at 09:00.

  5. 16:0005

    Approval and a frozen rate

    The winning document is chosen for approval. The TL value is frozen at that day's TCMB rate; the company becomes an "Active customer".

  6. 17:0006

    Request to project in one click

    The quote's scope is written into the project description. Delivery starts with tasks, subtasks, dependencies and time tracking.

  7. 18:3007

    Management sees it in one filter

    Pipeline, win rate, revenue calendar and the team's logged time under a single date filter.

  8. 00:0008

    Backup and report

    The database backup runs; admins get a report email in the morning.

Quote document builder

The CRM that writes the quote.

A block-based builder, live preview and a branded A4 PDF rendered on the server. It learns from every saved document; type an item name and the unit and price fill in.

  1. 1

    Sections and items

    Catalog-suggested item name, unit, unit price, quantity; compound units such as expert × day.

  2. 2

    Summary

    Subtotal, discount (amount or percent), VAT and total; placed wherever you need it.

  3. 3

    Payment plan

    Installments from a count and a date range, aligned to the nearest Monday.

  4. 4

    Timeline

    Project schedule and milestones as description and date rows.

  5. 5

    Table

    1-12 columns; text, date, number, currency and checkbox types.

  6. 6

    Technical support

    Duration, monthly fee and an upfront-payment discount; monthly periods aligned to weekdays.

  7. 7

    Note blocks

    Multi-line notes that learn from earlier documents.

DOC2026-0007REV2
PreviewA4 PDF · TR/EN

Analysis and design

Process analysisCatalog suggestion: unit and price filled inexpert × day2 × 5150.000 ₺
Interface designday896.000 ₺
Project managementmonth390.000 ₺
Subtotal
336.000 ₺
VAT 20%
67.200 ₺
Total
403.200 ₺

Type the item, get the price

Six catalogs are learned from every saved document; unit and price suggestions come from your own past quotes. Memory, not a model.

No more REV confusion

The DOC code stays fixed and the version suffix appears only from the second version. In-place edits and deliberate revisions are separate; a cancelled document leaves the totals and can be restored.

The preview is the PDF

Preview and PDF come from the same HTML template. Logo, letterhead, tax details, foreword, watermark and page numbers on the cover.

The agent writes the quote

With 13 MCP tools, Claude or Cursor writes and edits the quote document. If the offer is "Ready", the tool opens a new revision on its own and says so.

AI agent

Your agent does not summarise the CRM. It uses it.

The built-in MCP server exposes 69 tools. Claude, Cursor and Codex open requests, write quote documents, set up projects and log time. Every action lands in the audit trail.

Connect Claude.ai in three steps

  1. 1.Add the connector

    In Claude.ai go to Settings → Connectors → "Add custom connector" and paste the portal's MCP address.

  2. 2.Discovery over OAuth 2.1

    Claude discovers the portal by itself; there is no token to copy.

  3. 3.Grant access

    Sign in to the portal and choose "Allow". One connector reaches every workspace you belong to.

For Cursor, Claude Code and Codex: a ready JSON config to copy and paste.

What you can tell the agent

Prepare a quote for the Acme request that came in from the website.

search_companies → create_request → list_units → create_offer → add_offer_document → update_offer_status → create_reminder

An offer linked to the request, in "Ready" state, with a follow-up reminder set for three days later.

Draft a quote like last year's e-commerce one.

semantic_search → get_offer_document → copy_offer_document → update_offer_document

The similar document is found, copied and repriced. If the offer is "Ready", a new revision is opened.

Collect what I need to follow up today and leave a note on each.

list_follow_up_requests → list_overdue_requests → get_request → add_note → create_reminder

Overdue and follow-up requests are annotated and reminders are set.

69 tools in 12 groups

  • Workspace and schema4
  • Companies4
  • Contacts3
  • Requests8
  • Offers6
  • Quote documents7
  • Reminders6
  • Notes and comments2
  • Files3
  • Finance and search3
  • Projects9
  • Tasks14

Three permission scopes: Read (25 tools), Write (36), Quote generation (8). A tool the token cannot see is not even listed.

Business rules hold, even against the agent

  • An approved offer never changes silently

    For an approved offer or a winning document the tool opens a new revision and says so in its reply.

  • A blocked task cannot be "Done"

    A task with an open blocker stays open; the agent receives the blocker list and the user decides.

  • Live schema

    A request status you add today is available to the agent immediately.

  • Every action in the audit trail

    Every agent write passes the same validation as the UI and appears in the trail as "MCP: token name" or "Claude (OAuth)".

AI chat

Talk to your data, start the action.

The in-product chat panel uses the same 69 tools. Every answer rests on real records; every action you start is written to the audit trail.

The chat panel does not make text up: it calls a tool, reads the record and shows the result.

Talk through agent scenarios
Portal CRM AI
Which requests went past their deadline this week?
Three: R2026-0038 Acme, R2026-0041 Delta, R2026-0044 Mega. TL values at the TCMB rate are in the list. Shall I set follow-up reminders?
Set reminders for the first two, tomorrow 09:00.
Two reminders set; the owners will be notified. Both are in the audit trail.
Ask something or start an action

Request management

Winning takes a document.

Every lead opens with an automatic number and a 3-business-day deadline and moves along a shared Kanban. The rate is frozen at close; follow-up runs on its own.

  1. New

    R2026-0041

    ERP integration

    3 business days · USD

  2. In discussion

    R2026-0038

    Maintenance contract

    Owner: Deniz · TRY

  3. Quote sent

    R2026-0033

    Mobile app

    DOC2026-0007 · EUR

  4. Awaiting result

    R2026-0029

    Training package

    Follow-up: tomorrow 09:00

  5. Approved

    R2026-0022

    E-commerce project

    Rate frozen · TRY

A winning document is required

To set "Approved" you pick the winning quote document. Every won deal's amount is tied to a real document; 13 win reasons, 8 loss reasons.

The rate is frozen at close

The TCMB rate and the TL value are written onto the request. Past reports do not move with today's rate.

A status triggers a business rule

Approval makes the company an "Active customer"; a lost close cancels open reminders; "Awaiting revision" sends linked offers back to draft.

Follow-up runs itself

Hourly alerts for overdue requests; a follow-up email every morning once a quote has been out for 7 days; "Quote sent" becomes "Awaiting result" after 24 hours.

15 statuses
12 sources
3 scheduled automations

Projects and tasks

What sales promised is page one of delivery.

A won request becomes a project in one click; the winning quote's scope is written into the project description. Dependencies, subtasks and time tracking live in the same place.

Request to project in one click

Company, contact and description carry over; the winning document's sections and items are written to the project as "Quote scope".

Dependency protection that actually works

A task with an open blocker will not drop into "Done", not even by drag; circular dependencies are rejected; when the blocker clears, the owner is notified.

Three views, one logic

Grouped list, WIP-limited Kanban and monthly calendar show the same tasks; template projects are copied with their task tree.

Time tracking feeds the reports

Minutes logged on a task, spent-versus-estimate, a per-day chart on the project, time by project on the dashboard. No separate timesheet tool.

Grouped listKanbanCalendar

Interface

It works like an operating system.

Several records and forms open at once; minimise to the dock; every open record is a shareable link; a ⌘K command palette.

  • A stack of drawers

    Every record opens in a drawer sliding in from the right; several details stack, several forms stay open independently.

  • Minimising loses nothing

    Open windows become chips in the bottom bar. Unsaved form text is kept; the chips come back after a page reload.

  • Every open record is a link

    Whoever clicks the link in an email lands on exactly that record stack after signing in.

  • ⌘K and semantic search

    Pages and every record from one palette; the "Related (semantic)" group finds 9 record types by intent. Without a key it simply switches itself off.

overdue e-commerce quoteK

Records

Related (semantic)

Request · R2026-0041
Deniz is editing

ERP integration · Quote sent

Company C2026-0012Offer O2026-0019Task T2026-0288
Revenue projection
TCMB buying rate · every business day at 16:15
Win rate

From the payment plans of approved offers; TL value at the TCMB rate.

Dashboard and revenue projection

Not a forecast. A payment calendar.

Dashboard, timeline and revenue projection under one date filter. The numbers are clickable, the rate is official, the projection comes from the payment plans of approved offers.

  • No dead numbers

    Every card on the dashboard either opens a filtered list or the record's drawer; 18 chart cards, a 36-month trend.

  • TL values at the TCMB rate

    USD, TRY, EUR and GBP totals kept apart; the rate is fetched every business day at 16:15 and the screen warns when it is stale.

  • The revenue projection is a calendar

    Only the installments and support periods of approved offers' winning documents; cancelled and unreachable deals do not count as losses.

Your product

Mobile in the field, code-level tailoring at the core.

Portal CRM is not bound by the "as is" limit of a packaged SaaS. Internative owns the source code; we shape it with you around your needs.

iOS and Android app

A Flutter mobile app that uses the same account and the same data as the web interface.

  • Requests, companies, contacts and tasks in the field
  • Notifications in your pocket
  • One account, one database

Code-level customisation

Fields, business rules, integrations, reports and the interface are adapted in code. We define the scope together in the discovery call.

  • Your own fields and business rules
  • Integration with the systems you already run
  • Your own reports and screens

Internative: since 2017, 100+ enterprise clients, 400+ projects.

On-prem and security

Your server, your data.

Installed on a single machine. Database, files, audit trail and email logs stay on your infrastructure; the backup restores without the product.

Requirements

  • Linux server (one machine is enough)
  • Node 24
  • MongoDB 7
  • Redis 7
  • S3-compatible storage (MinIO, R2, Wasabi, Ceph)
  • SMTP relay

Optional

With the key left empty the feature switches itself off; the product still starts in full.

  • OpenAI key + Qdrant: semantic search
  • Google Workspace: sign-in
  • Seq: central logs
  • OneSignal: web push
  • mongodb-database-tools: backup

No passwords

Sign-in with a 6-digit email code or Google Workspace; a sign-in from a new device sends an alert with device, browser and IP.

An immutable audit trail

Every change with who, when and from where (portal, API, MCP); old and new value per field.

Backup inside the product

Settings → Backup: frequency, time, 7-90 day retention, "Back up now". The archive goes to your S3 bucket and restores with mongorestore.

Data ownership

All data lives in your MongoDB and your own S3 bucket; the only thing that leaves, if you turn it on, is the embedding for semantic search.

Integration

From your website into the CRM, in one request.

A 20-endpoint public REST API and a website lead form; MCP for the offer, project and task modules. The in-app documentation gives a curl, JavaScript and C# sample for every endpoint.

  • REST API

    With x-api-key: companies, contacts, requests (status changes included), notes, financial summary, current rates and duplicate checks.

  • Website lead form

    Find or create the company, attach the contact and open the request in one call; with file attachments and duplicate detection.

  • MCP: every module

    Offers, quote documents, projects and tasks through MCP tools; REST covers companies, contacts, requests, notes and finance.

curl -X POST https://crm.example.com/api/v1/public/website-lead \
  -H "x-api-key: $PORTAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company": { "name": "Acme", "website": "https://acme.com" },
    "contact": { "firstName": "Deniz", "lastName": "Kaya", "email": "deniz@acme.com" },
    "request": { "title": "ERP integration", "source": "website" }
  }'

Website lead form: company + contact + request, one POST.

FAQ

Frequently asked questions

No. It is installed on your own server; one machine is enough. Database, files and audit trail stay on your infrastructure.

Only if you enable semantic search: record text goes to OpenAI for embedding. Off, nothing leaves. Over MCP, data goes to the agent you connected.

A publicly reachable HTTPS address for the portal's MCP endpoint. Local clients such as Cursor and Claude Code do not need one.

Scheduled under Settings → Backup; the archive is written to your S3 bucket and restores with mongorestore, without the product. The backup covers the database; the file bucket is backed up separately.

Admin and Member. Admins manage users, definitions, company details, API/MCP keys and backups.

The interface in Turkish (default) and English; quote PDFs in TR/EN; emails in the recipient's language.

USD, TRY, EUR and GBP. TL values are calculated at the TCMB buying rate and frozen at close.

Yes. Internative owns the source code; fields, business rules, integrations and the interface are adapted in code to your needs. The scope is set in the discovery call.

The first conversation is free.

We clarify the setup requirements and the customisation scope together; the demo runs on an example that resembles your data.

Internative: since 2017, 100+ enterprise clients, 400+ projects.

Request a demo

Tell us about your team and the tools you use today; we come back with a setup and customisation scope.