PruvaDocs

AI assistant

Briefings and drafts from the data you can see. It never sends, approves or submits.

The assistant lives at /app/assistant. It answers a short list of questions about your fleet:

  • What should we fix first this week?
  • Explain the highest-risk vessel.
  • Which vessels will miss their CII target?
  • Summarise our position for the insurer.

In the demo, and when there is no key

Live answers run only when ANTHROPIC_API_KEY is set, and in the demo only when PRUVA_AI_LIVE=true as well. The demo makes no outside call by default. With no key, or with the demo left on its default, answers come from templates filled with the numbers you can see. Each template answer is marked as one. A question that matches nothing lists the topics the assistant can answer, and that costs no credits.

Metering still runs. A template is charged the credits of the step's default model, so the pool and the hourly limits behave as they would with a model call. A live call is charged from the tokens the model actually used.

Tool use

When the key is on, the question goes to Claude with the tools this person may use. The model may call a tool, read the JSON, and call another, up to a fixed number of rounds. Each tool reads through the same repository the pages use. It returns ids, names and a path under /app. No tool writes.

Tools are registered per module. The ones in this build cover the fleet map, predictive maintenance, noon reports, port calls, shipment files, containers, planned maintenance, certificates, crew, emissions, dashboards, insurance, port disbursements, dry dock, HSEQ, vetting and finance invoices and budget variance. Cameras, procurement, inventory, voyage and chartering have no read tool yet. A tool is hidden when you do not have view on its module, so the model is never offered it.

It only uses what you can see

An answer draws only on modules where you have at least view. The repository already returns no rows for a module at none, and toolsFor drops that module's tools as well. If a template question needs a module you cannot see, the assistant says so and stops. The underwriter asking for this week's priorities is told that the question needs predictive maintenance.

Proposals a person approves

The only way the assistant suggests a change is the propose_action tool. The model sends a full action, a short label and a reason. Nothing is stored and nothing is applied. The page shows a card. Approve runs that action as the person who clicked, through the same access check as the button. If they lack the level, the card says so and the button stays disabled.

Not every action can be proposed. Anything marked noAgent (publish, approve, sign, submit) is refused. Anything marked outbound is refused. An action with no description card is refused, so a new module's actions stay out until they have one. In this build the card can describe acknowledging or resolving an alert, creating or updating a work order, drafting a report, creating a claim, completing a job, setting running hours, closing a defect, holding a container, flagging a reefer, and the port and dry-dock actions that stay inside the app. HSEQ, vetting, finance, procurement and cameras are not proposable yet.

The assistant therefore does not:

  • notify a crew,
  • accept or decline a premium adjustment,
  • submit a report,
  • share a vessel,
  • fund a disbursement account,
  • award a yard or a quote.

Those remain buttons for a person with publish. Agents such as Watchkeeper are capped below publish by the database.

Model text is shown as plain text, never as HTML.

Models: one catalog, picked by kind

The assistant does not hard-code a model. Each AI step (a fleet briefing, explaining an alert, a report narrative, transcribing a crew voice note, reading an alert aloud) names a kind of model (text, voice, transcription…) and uses the default model of that kind from MODEL_CATALOG in @pruva/pricing. Another model of the same kind can replace it; a model of the wrong kind is refused.

Model prices are estimates, not verified

The unit costs in the catalog have not been checked against the providers' live price lists. Each entry links its source and is marked verified: false.

ModelProviderKindUnit costStatusUsed by default in
Claude Haiku 5.5claude-haiku-5-5Anthropictext$0.1 in / $0.5 out per 1M tokenschecked 2026-10-20sourceExplain an alert
Claude Sonnet 5.5claude-sonnet-5-5Anthropictext$2 in / $10 out per 1M tokenschecked 2026-10-20sourceFleet briefing
Claude Opus 5.5claude-opus-5-5Anthropictext$4 in / $20 out per 1M tokenschecked 2026-10-20sourceReport narrative
GPT-5.1gpt-5.1OpenAItext$1.25 in / $10 out per 1M tokensestimate, not verifiedsource—
GPT-5 minigpt-5-miniOpenAItext$0.25 in / $2 out per 1M tokensestimate, not verifiedsource—
GPT-5 nanogpt-5-nanoOpenAItext$0.05 in / $0.4 out per 1M tokensestimate, not verifiedsource—
Grok 4.7grok-4.7xAItext$2 in / $6 out per 1M tokensestimate, not verifiedsource—
Grok 4.3grok-4.3xAItext$1.25 in / $2.5 out per 1M tokensestimate, not verifiedsource—
GLM 5.2 (open weights)glm-5.2Z.aitext$1.4 in / $4.4 out per 1M tokensestimate, not verifiedsource—
Nemotron 3 Ultra (open weights)nemotron-3-ultraNVIDIAtext$0.6 in / $2.4 out per 1M tokensestimate, not verifiedsource—
Nemotron 3 Nano (open weights)nemotron-3-nanoNVIDIAtext$0.06 in / $0.24 out per 1M tokensestimate, not verifiedsource—
Nemotron 3.5 Super VL (open weights)nemotron-3.5-super-vlNVIDIAtext$0.15 in / $0.5 out per 1M tokensestimate, not verifiedsource—
Imagen 4imagen-4Googleimage$0.04 per imageestimate, not verifiedsource—
Grok Imaginegrok-imagine-imagexAIimage$0.02 per imageestimate, not verifiedsource—
Veo 3 Fastveo-3-fastGooglevideo$0.4 per second of videoestimate, not verifiedsource—
Grok Imagine Videogrok-imagine-videoxAIvideo$0.05 per second of videoestimate, not verifiedsource—
Flash v2.5 (text to speech)eleven-flash-v2-5ElevenLabsvoice$0.05 per 1,000 charactersestimate, not verifiedsourceRead an alert aloud to the bridge
Nova-3 (speech to text)deepgram-nova-3Deepgramtranscription$0.0059 per minute of audioestimate, not verifiedsourceTranscribe a crew voice note
Whisperwhisper-1OpenAItranscription$0.006 per minute of audioestimate, not verifiedsource—
StepKindDefault modelCredits per typical run
Fleet briefingtextClaude Sonnet 5.52
Explain an alerttextClaude Haiku 5.51
Report narrativetextClaude Opus 5.57
Transcribe a crew voice notetranscriptionNova-3 (speech to text)2
Read an alert aloud to the bridgevoiceFlash v2.5 (text to speech)3

Allowance: AI credits

Each workspace has one pool of AI credits per month, shared by everyone in the workspace: the package's or pack's credits per vessel × the number of vessels, plus Safety Vision's credits when it is bought. 1 credit = $0.01 of model cost. Metering charges each run the credits its model costs (rounded up, at least 1), and records the step and the model. Before a run, the assistant checks the credits left and the hourly limits per person and per workspace (see Pricing). At a limit it stops until the window or the month resets. Extra credits are not sold in this build.

PlanCredits a monthWhat they buy (≈, each kind alone)
Essentials package, per vessel300150 fleet briefings, or 300 alert explanations, or 42 report narratives, or 150 crew voice notes (2 min each), or 100 voice read-outs
Operations package, per vessel800400 fleet briefings, or 800 alert explanations, or 114 report narratives, or 400 crew voice notes (2 min each), or 266 voice read-outs
Professional package, per vessel1,400700 fleet briefings, or 1,400 alert explanations, or 200 report narratives, or 700 crew voice notes (2 min each), or 466 voice read-outs
Complete package, per vessel2,0001,000 fleet briefings, or 2,000 alert explanations, or 285 report narratives, or 1,000 crew voice notes (2 min each), or 666 voice read-outs
Safety Vision, per vessel300150 fleet briefings, or 300 alert explanations, or 42 report narratives, or 150 crew voice notes (2 min each), or 100 voice read-outs
Tanker compliance pack, per vessel1,000500 fleet briefings, or 1,000 alert explanations, or 142 report narratives, or 500 crew voice notes (2 min each), or 333 voice read-outs
Bulk & container operations pack, per vessel1,000500 fleet briefings, or 1,000 alert explanations, or 142 report narratives, or 500 crew voice notes (2 min each), or 333 voice read-outs
Marine insurers & P&I pack, per vessel1,000500 fleet briefings, or 1,000 alert explanations, or 142 report narratives, or 500 crew voice notes (2 min each), or 333 voice read-outs
Offshore & gas carriers pack, per vessel1,100550 fleet briefings, or 1,100 alert explanations, or 157 report narratives, or 550 crew voice notes (2 min each), or 366 voice read-outs
Ship manager's office pack, per vessel1,200600 fleet briefings, or 1,200 alert explanations, or 171 report narratives, or 600 crew voice notes (2 min each), or 400 voice read-outs
Commercial desk pack, per vessel1,100550 fleet briefings, or 1,100 alert explanations, or 157 report narratives, or 550 crew voice notes (2 min each), or 366 voice read-outs

Real model calls

The client speaks the Anthropic API, including tool use. It runs when the key is set and the demo gate above is open. Camera stills are a separate call, on the cameras analyse route, and only when that key is set. Without it, the still analysis is simulated. Neither path has been checked against a live key in this build. Conversations are kept in the browser, not in the database.

On this page