You have a Laravel product that works, and you want AI features your customers and staff will actually use, not a chatbot bolted onto the corner of the screen. The short answer: start with features that remove repetitive work from a workflow you already have, such as pulling data out of documents, routing incoming requests, searching your own content by meaning, drafting replies for a person to approve, and summarizing long records. Since Laravel 13, all of these can be built inside your existing app with Laravel's first-party AI SDK, so you don't need a separate AI platform or a rewrite.
This guide covers six practical features, what each does for the business, how it is built in Laravel, what to watch for with your data, and what your app needs before you start.
What does Laravel now give you for adding AI?
Laravel 13, released on March 17, 2026, introduced two things that matter here:
- The Laravel AI SDK (
laravel/ai): one API for text generation, agents that can call tools, structured output, embeddings, images, audio, transcription, reranking and classification. It works with many providers, including OpenAI, Anthropic, Gemini, Azure, Bedrock, Mistral and Ollama, according to the AI SDK documentation. Version 1.0 was released in September 2026 and 1.3.0 in October (release notes). - Native vector search: a
vectorcolumn type and awhereVectorSimilarToquery method, so "find records that mean the same thing" becomes an ordinary database query. It runs on PostgreSQL with the pgvector extension, or on MariaDB 11.7 or later.
Why this matters to a business owner: the AI code lives in your app, next to your models, permissions, queues and tests. The provider sits behind one interface, so switching it later is a configuration change rather than a rebuild.
Which AI features are worth adding first?
Pick features where the input already exists in your system and a person currently spends time reading, copying or sorting it. Here are six that fit most Laravel products.
1. How can AI extract data from documents into your database?
What it does for the business: invoices, purchase orders, delivery notes, CVs or application forms arrive as PDFs and images, and someone types the fields into your system. AI can read the document and return the fields as structured data, ready for a person to check and save.
How it's built: an agent with structured output. You describe the fields you want as a schema, attach the document, and get back data you can access like an array, not free text you have to parse. Adapted from the structured output and attachments docs:
<?php
namespace App\Ai\Agents;
use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\HasStructuredOutput;
use Laravel\Ai\Promptable;
use Stringable;
class InvoiceExtractor implements Agent, HasStructuredOutput
{
use Promptable;
public function instructions(): Stringable|string
{
return 'Extract the invoice fields from the attached document. Never guess: leave a field empty if it is not in the document.';
}
public function schema(JsonSchema $schema): array
{
return [
'supplier' => $schema->string()->required(),
'invoice_number' => $schema->string()->required(),
'invoice_date' => $schema->string()->required(),
'total' => $schema->number()->required(),
'currency' => $schema->string()->required(),
];
}
}
use App\Ai\Agents\InvoiceExtractor;
use Laravel\Ai\Files;
$response = (new InvoiceExtractor)->prompt(
'Extract the fields from this invoice.',
attachments: [Files\Document::fromStorage($upload->path)],
);
$upload->update([
'supplier' => $response['supplier'],
'total' => $response['total'],
'status' => 'needs_review',
]);
Run it on a queue (agents have a queue() method) so uploads stay fast, and save the result as "needs review" rather than final.
Data and privacy: the document is sent to your AI provider. Check the provider's data retention and training terms, and whether the documents contain personal data your contracts or regulations restrict.
What it takes: a clear list of fields, a set of real sample documents to test against, and a review screen where staff confirm or correct the result.
2. Can AI classify and route support tickets and emails?
What it does for the business: incoming tickets, emails or form submissions are sorted by team, urgency and topic before anyone reads them, so the right person sees urgent requests first.
How it's built: the SDK has a classification API that answers fixed questions with a probability instead of free text, which makes thresholds and tests straightforward. Adapted from the docs:
use App\Models\Department;
$department = Department::all()->decide(
'Which department should handle this request?',
$ticket->body,
by: 'name',
describe: 'description',
);
For several questions at once (urgent? which team? how frustrated?), Classification::of($text)->questions([...])->classify() returns a typed answer per question. Note that the docs mark classification as experimental, and it is supported by fewer providers than text generation, so pin your package version and test after upgrades. A structured-output agent (feature 1) is a stable alternative.
Data and privacy: tickets often contain names, emails and account details. Send only the text needed to decide.
What it takes: your existing categories written down with a one-line description each, and a fallback queue for low-confidence results.
3. How does semantic search work in a Laravel app?
What it does for the business: customers and staff find the right help article, product, contract clause or past ticket even when they don't use the exact words in it. "Can't log in after changing phone" finds the article titled "Resetting two-factor authentication".
How it's built: you turn each record into an embedding (a list of numbers that represents its meaning) and store it in a vector column. The search query becomes an embedding too, and the database returns the closest matches. From the embeddings docs:
$table->vector('embedding', dimensions: 1536)->index();
$documents = Document::query()
->whereVectorSimilarTo('embedding', 'best wineries in Napa Valley')
->limit(10)
->get();
Embeddings can be cached so identical text isn't sent twice, and a SimilaritySearch tool lets an agent search the same table when answering questions.
Data and privacy: keep your existing access rules. A semantic search must filter by tenant, team and permissions exactly like your current search does, or it will surface records the user should never see.
What it takes: PostgreSQL with pgvector or MariaDB 11.7+. If your app runs on MySQL, plan for a database change or a separate search store. You also need a background job to embed existing records and keep embeddings updated when records change.
4. Can AI draft support replies without sending anything on its own?
What it does for the business: agents on your support team get a suggested reply based on the ticket, the customer's history and your help content. They edit and send it. Response quality becomes more consistent, and new staff get up to speed faster.
How it's built: an agent with instructions in your tone of voice, tools that read the customer's orders or account (through your own models and policies), and semantic search over your help content. The SDK can store conversation history (RemembersConversations), and tools that change data can require human approval: a tool that implements Approvable pauses the agent until a person approves or rejects the call.
Data and privacy: tools should only read what the signed-in staff member is allowed to see. Log which tools ran and what they returned.
What it takes: good help content (AI can't answer from knowledge you don't have written down), a place in your admin to show the draft, and a rule that nothing reaches a customer without a person pressing send.
5. How can AI summarize records and write reports?
What it does for the business: long ticket threads, call transcripts, project notes or weekly activity become a short summary at the top of the record or in a morning email. Managers read three sentences instead of thirty messages.
How it's built: for simple cases, Str::of($thread)->summarize(sentences: 4) uses the configured provider's cheapest text model by default. For structured reports (risks, decisions, next steps), use an agent with a schema like feature 1. Audio can be turned into text first with the SDK's transcription API. Run summaries on a queue or the scheduler, not during a page load.
Data and privacy: summaries are new data. Store them with the same access rules as the source, and make it clear in the interface that they are AI generated.
What it takes: a decision on where the summary appears and when it is refreshed, and a link back to the source so people can check it.
6. Should AI agents be able to use your app directly?
What it does for the business: your customers increasingly use assistants like ChatGPT and Claude. If your app exposes the right actions to them, a customer can check an order or file a request from their assistant, inside the limits you set.
How it's built: Laravel MCP (laravel/mcp) lets your app act as an MCP server with tools, resources and prompts, protected by your existing authentication. We cover the design in detail, including permissions, rate limits and audits, in How to Make Your Laravel App Ready for AI Agents. For where agent standards are heading, see Personal Agent Protocol explained.
Data and privacy: start read-only, scope every token, and require confirmation for actions that change data.
What it takes: a clean service layer and authorization policies, so agents call the same rules as your web pages.
What are the risks, and how do you control them?
| Risk | How to control it in Laravel |
|---|---|
| Wrong or invented answers | Use structured output and classification with confidence thresholds; ground answers in your own data with semantic search; show sources; keep a person in the loop for anything customer-facing or financial |
| Cost growing quietly | Every response reports token usage ($response->usage); log it per feature and per customer. Cache embeddings, queue heavy work, use smaller models for simple tasks, and cap long agent runs with the SDK's Stop middleware |
| Personal data leaving your system | Send the minimum text needed, check each provider's retention terms, and update your privacy policy and data processing agreements |
| Provider lock-in and outages | Pass a list of providers, for example provider: [Lab::OpenAI, Lab::Anthropic], and the SDK fails over on rate limits, overloads or exhausted credits. Ordinary errors don't trigger failover, so you still need error handling |
| No way to tell if it's working | Keep a test set of real inputs with expected outputs and run it when you change prompts, models or providers. In automated tests, the SDK's fakes (InvoiceExtractor::fake(), assertPrompted, preventStrayPrompts) keep your suite fast and free |
| AI acting without oversight | Draft, don't send. Use approval for tools that change data, and record who approved what |
Does your app need to be on Laravel 12 or 13?
Yes, for the first-party SDK. laravel/ai requires PHP 8.3 or later and Laravel 12 or 13 (package requirements), and Laravel 13 is the release that introduced the SDK and native vector queries. Laravel describes 13 as a relatively small upgrade from 12, but apps on Laravel 10 or 11 have several major versions to cover, and Laravel 11's security fixes ended on March 12, 2026 (support policy).
If your app is on an older version, upgrading first is usually the cleaner path: you get the AI SDK and a supported framework at the same time. Our Laravel upgrade and migration service covers that step.
How should you start?
- List the repetitive work. Ask your team where they read, copy, sort or summarize the same kind of thing every day.
- Pick one feature with existing data, a clear owner and an easy way to check the result. Document extraction and classification are usually the easiest to measure.
- Collect real examples (with personal data removed if needed) and define what "correct" looks like before writing code.
- Build it behind a review step, on a queue, with token usage logged from day one.
- Measure and expand. Compare time spent before and after, then move on to the next feature.
Being ready for AI is an architecture decision as much as a feature: our AI-ready TMS case study shows a logistics platform whose scope called for an architecture that can support future AI integration without substantial re-engineering.
Add AI to your Laravel app with CodeBrisk
CodeBrisk is a Laravel web and mobile app development company founded in 2014, with Laravel experience since 2015 and a Top Rated, 100% Job Success record on Upwork. We add AI features and automations to existing Laravel applications, connected to your real data, permissions and workflows.
See our AI integration and automation service, or launch your project and tell us which workflow you'd like AI to take off your team's hands.