LASA Agent System
Operations Guide
19 AI agents running your business on autopilot. This guide covers how each agent works, when it runs, what it needs, and how to keep it healthy.
System Architecture
All agents are built on n8n Cloud and use Claude (Anthropic API) as the AI brain. Gmail handles all email delivery. Two data tables act as a lightweight CRM.
| Layer | Tool | Purpose |
|---|---|---|
| Orchestration | n8n Cloud | Schedules, webhooks, workflow logic |
| AI Brain | Claude claude-sonnet-4-6 (Anthropic) | Generates all emails, reports, content |
| Gmail OAuth2 | Sends all outbound emails | |
| CRM | n8n Data Tables | leads and clients tables |
| Research | Perplexity API | Company research + backlink discovery (Agents #1, #10) |
| Social | LinkedIn OAuth2 | Auto-posting (Agent #11) |
Agents are either webhook-triggered (run when something happens) or scheduled (run on a timer automatically). You only need to act when an agent emails you asking for approval or a decision.
Credentials
| Credential | Used By | Where to Add | Status |
|---|---|---|---|
| Anthropic API | All 15 Claude nodes | n8n → Credentials → "Anthropic account" | Active |
| Gmail OAuth2 | All email nodes | n8n → Credentials → "Gmail OAuth2 API" | Active |
| Perplexity API | Agent #1, #10 | n8n → Credentials → Add "Perplexity" | Missing |
| LinkedIn OAuth2 | Agent #11 | n8n → Credentials → Add "LinkedIn OAuth2" | Missing |
To update a credential: go to lasatech.app.n8n.cloud/credentials, click the credential, update the value, save.
Sales & BD — Agents 1–3
Receives a prospect's details, uses Perplexity to research their company, then writes a personalised cold outreach email. Sends the research + draft to ceo@lasa.in for review.
POST to webhook with: company, website, contact_name, contact_email, notes. Or use the Trigger button in the Console.
Review the outreach draft emailed to you. Copy the email text and send it manually to the prospect.
Perplexity API credential. Add at n8n → Credentials then activate the workflow.
Fires when someone submits the lasa.in contact form or EXI signup form. Saves the lead to the leads CRM table, generates a personalised proposal with Claude, emails it to the lead, and notifies ceo@lasa.in.
Automatic — fires when contact form is submitted at lasa.in/contact or lasa.in/exi. Can also be triggered manually from the Console.
None required. Check ceo@lasa.in for the "New Lead" notification. Follow up with a call if the lead replies to the proposal.
In n8n → Agent #2 → "Generate Proposal" node, find [CALENDLY_LINK] in the prompt and replace with your real Calendly URL.
Every morning at 9am, reads all pending leads from the leads table. Sends a personalised follow-up to anyone not contacted in 3+ days who has had fewer than 3 follow-ups. Updates the record after each send.
Day 3: warm check-in. Day 7: re-engage with value. Day 14: polite final check-in. After 3 follow-ups, the lead is left alone.
None — fully automated. To stop follow-ups for a specific lead: go to n8n → Data Tables → leads, find the row, change status to closed or lost.
If no leads are due for follow-up, the agent runs silently and sends nothing. This is correct behaviour.
Operations — Agents 4–7
Every Wednesday at 9am, reads the latest AI headlines, picks the most relevant topic, and writes a ready-to-publish LinkedIn post plus a blog post outline. It saves the post as a pending draft and emails you an Approve-and-Publish link.
Open the email, read the post, and click Approve and Publish to post it to the LinkedIn company page in one click (same publisher as the Daily Content agent). The blog outline below the buttons is a skeleton you can turn into a full article on lasa.in/blog.
In n8n → Agent #4 → "Read AI News Feed" node → update the RSS URL. Good sources: venturebeat.com/category/ai/feed/, techcrunch.com/category/artificial-intelligence/feed/
In n8n → Agent #4 → "Every Wednesday 9am" node → edit the schedule interval.
When a new client is confirmed, this agent saves them to the clients CRM table, sends a branded welcome email with next steps, and notifies ceo@lasa.in to schedule the kickoff call.
POST to the webhook with name, email, company, service. Or trigger from the Console with those fields filled in.
Schedule the kickoff call within 24 hours of the notification email. The welcome email has already been sent automatically.
In n8n → Agent #5 → "Send Welcome Email to Client" node → edit the message body to match your onboarding process.
Receives a support ticket, classifies urgency (HIGH/LOW), writes a professional auto-reply, sends it to the client, and notifies ceo@lasa.in with the urgency flag and full context.
HIGH = data loss, billing issues, complete outage. LOW = general questions, minor bugs, how-to queries.
For HIGH urgency: call the client directly. For LOW: the auto-reply handles it. You can reply to the client from ceo@lasa.in if needed.
Add a form to lasa.in/support that POSTs to the webhook with name, email, company, subject, message fields.
Every Monday at 8am, generates a plain-text CEO briefing: week summary, priorities, all 16 agent statuses, key metrics (TBD until integrations), and action items. Delivered to ceo@lasa.in.
Read it on Monday morning. The action items tell you what to focus on this week.
To show real data: connect HubSpot, Google Analytics, or your billing tool. Add HTTP Request nodes before the Claude node to fetch data, then include the data in the prompt.
In n8n → Agent #7 → "Every Monday 8am" node → edit hour/day.
SEO — Agents 8–10
Every Monday at 7am (before the CEO report), uses Claude's web search to audit 5 lasa.in pages. Reports on title tags, meta descriptions, H1s, content quality, and internal linking. Identifies top 5 issues and 3 quick wins.
lasa.in, lasa.in/exi, lasa.in/services, lasa.in/about, lasa.in/blog
Review the email on Monday. Fix the top issues each week — typically a 30-minute task.
In n8n → Agent #8 → "Audit lasa.in SEO" node → add more URLs to the prompt text.
On the first Monday of each month, researches 15 keyword opportunities for lasa.in — buyer-intent keywords, long-tail opportunities, and content gaps. Sends a ranked table to ceo@lasa.in.
Pick the top 2–3 keywords each month. Brief the Content Agent or write a blog post/landing page targeting those keywords.
Every Thursday, uses Perplexity to find 6 relevant blogs and publications that accept guest posts. Writes 3 personalised outreach emails. Sends all to ceo@lasa.in for review and manual sending.
Review the 3 outreach emails. Send the best 1–2 directly from your email. Aim to submit 2 guest posts per month.
Marketing — Agents 11–14
Receives content from Agent #4's draft email (or manual input), formats it for LinkedIn (1,300 char limit, adds hashtags), posts directly to your LinkedIn profile, and sends a confirmation to ceo@lasa.in.
After reviewing Agent #4's content draft email, trigger this agent from the Console with the approved content pasted in. Or integrate with Agent #4 to auto-post.
LinkedIn OAuth2 credential + selecting your LinkedIn profile in the "Post to LinkedIn" node after connecting.
When a project completes, generates a testimonial request email to the client and a publishable case study draft. Sends the testimonial request automatically and the full draft to ceo@lasa.in.
After a project closes, trigger from the Console with: client_name, client_email, company, project description, outcome metrics.
Wait for client testimonial reply. Once received, add the quote to the case study draft and publish at lasa.in/case-studies.
Every two weeks on Friday at 10am, reads AI headlines, writes a full newsletter (This Fortnight in AI, LASA Perspective, One Thing to Try, LASA Update) and emails the draft to ceo@lasa.in.
Review, lightly edit if needed, then copy into Beehiiv or your email platform and send to your list.
To auto-send without review: connect Beehiiv API to n8n and add a node after the Claude node to post the newsletter draft automatically.
Given a campaign goal, target audience, and platform, generates 5 Google Ad variants, 3 LinkedIn Ad variants, and 3 landing page headlines. Emails all variants to ceo@lasa.in.
Trigger from the Console with campaign_goal, target_audience, and platform fields. Takes about 15 seconds to generate.
Pick the best variants, A/B test in Google/LinkedIn Ads Manager. Run the agent again if you need fresh angles.
Retention — Agents 15–16
Every day at 11am, checks the clients table for active clients who joined 60+ days ago and haven't received an upsell yet. Sends each a personalised upsell email, then marks upsell_sent = yes.
AI Agents bundle ($499/mo), EXI Premium, Managed IT, Custom AI development — Claude picks the most relevant based on their current service.
None — fully automated. Monitor replies to upsell emails and follow up with a call if a client shows interest.
In n8n → Agent #15 → "Daily 11am" node, edit the schedule. To change the 60-day threshold, update the Filter node condition.
Every Sunday at 8am, reads all active clients. Finds any not contacted in 30+ days. For at-risk clients, generates a risk assessment and specific retention action per client. Sends one alert email to ceo@lasa.in.
If no clients are at risk, the agent runs silently and sends nothing. Only alerts when action is needed.
Read the Sunday alert. Take the recommended action for each at-risk client (usually a personal call or check-in message).
Default is 30 days. To change: In n8n → Agent #16 → "Filter At-Risk Clients" node → edit the rightValue from 30 to your preferred number.
Daily Content & Prospecting — Agents 17–18
Every day at 7am it picks a rotating theme, writes a LinkedIn post with Claude, saves it as a pending draft, and emails you an Approve-and-Publish link. Nothing posts until you click.
Open the email, read the post, click Approve and Publish (posts to the LASA.in company page) or Skip Today. Doing nothing leaves it unpublished. About 10 seconds a day.
Agent #17b "Publish Approved Post" handles the link click. It is triggered automatically by the email button, not on a schedule. Do not disable it or the Approve links stop working.
Images (OpenAI key), plus posting to X and Instagram, can be added once those credentials and developer apps are connected.
Every 2 days it uses Perplexity to find new prospects: taxi and fleet operators (for EXI) and SMBs needing IT or AI (for LASA.in), with public contact details and a personalised opening line for each.
Each run targets a different market, cycling through 18 countries across Asia, the Middle East, Africa, and Western markets (India, UAE, Nigeria, USA, UK, and more). Over about 5 weeks it covers them all, then repeats. To change the list, edit the "Build Exclusion List" node in n8n.
Every prospect is saved as a full row in the "prospects" data table: company, category, website, email, phone, market, why-they-fit, and a personalised opener. View, sort, filter, or export to CSV at n8n -> Tables -> prospects. This is your growing lead list, not just email.
It remembers every company it has already found and tells Perplexity to exclude them. So each run surfaces only fresh leads, never the same companies twice. To reset, clear the prospects table in n8n.
Review the prospect email. Pick the best fits and send personalised outreach, or feed a company into Agent #1 (Lead Research) for a deeper dossier.
B2B outreach to publicly listed business contacts only. Personalise every message and include an unsubscribe option to stay PDPA-compliant. Do not mass-blast.
Schedule Reference
| # | Agent | Schedule | Output |
|---|---|---|---|
| 7 | Weekly CEO Report | Every Monday 8am | Email to ceo@lasa.in |
| 8 | SEO Audit | Every Monday 7am | Email to ceo@lasa.in |
| 3 | Lead Follow-up | Every day 9am | Follow-up emails to leads |
| 15 | Upsell | Every day 11am | Upsell emails to eligible clients |
| 4 | Content Agent | Every Wednesday 9am | Approve-link email (post + blog outline) to ceo@lasa.in |
| 10 | Backlink Outreach | Every Thursday 9am | Email to ceo@lasa.in (needs Perplexity) |
| 13 | Newsletter | Every 2nd Friday 10am | Email draft to ceo@lasa.in |
| 16 | Churn Signal | Every Sunday 8am | Alert email to ceo@lasa.in (if at-risk clients) |
| 9 | Keyword Opportunity | 1st Monday of month 8am | Email to ceo@lasa.in |
| 17 | Daily Content Generator | Every day 7am | Approve-link email to ceo@lasa.in |
| 18 | Prospect Finder | Every 2 days 8am | Prospect list to ceo@lasa.in |
Webhook URL Reference
Content-Type: application/json. No authentication required on the webhook itself.| # | Agent | URL | Required Fields |
|---|---|---|---|
| 2 | Proposal Writer | /webhook/lead-intake | name, email, company, service, message |
| 5 | Client Onboarding | /webhook/client-onboard | name, email, company, service |
| 6 | Support Triage | /webhook/support-request | name, email, company, subject, message |
| 12 | Case Study | /webhook/case-study | client_name, client_email, company, project, outcome |
| 14 | Ad Copy | /webhook/ad-copy | campaign_goal, target_audience, platform |
| 11 | Social Media | /webhook/social-post | content, topic |
| 1 | Lead Research | /webhook/research-prospect | company, website, contact_name, contact_email, notes |
Base URL: https://lasatech.app.n8n.cloud
Data Tables (CRM)
Two n8n data tables act as a lightweight CRM. View and edit them at lasatech.app.n8n.cloud → Tables.
leads table
| Column | Type | Managed By | Values |
|---|---|---|---|
| name | string | Agent #2 | Lead's full name |
| string | Agent #2 | Lead's email (unique key) | |
| company | string | Agent #2 | Lead's company |
| service | string | Agent #2 | Service they're interested in |
| message | string | Agent #2 | Their original message |
| status | string | Manual | pending / closed / lost |
| last_contacted | date | Agent #3 | Auto-updated after each follow-up |
| followup_count | number | Agent #3 | 0–3. Agent stops at 3. |
| source | string | Agent #2 | contact_form |
clients table
| Column | Type | Managed By | Values |
|---|---|---|---|
| name, email, company, service | string | Agent #5 | Client details |
| status | string | Manual | active / paused / churned |
| start_date | date | Agent #5 | When they became a client |
| last_interaction | date | Agents #15, #6 | Auto-updated after any contact |
| upsell_sent | string | Agent #15 | no → yes after upsell sent |
closed. Agent #3 will stop following up immediately.Updating Agent Prompts
Every agent's AI behaviour is controlled by a prompt inside the Anthropic node. You can update any prompt without breaking the workflow.
Go to lasatech.app.n8n.cloud and open the workflow you want to edit.
Click the Anthropic node (the purple Claude icon) in the workflow.
Find the Messages field. Click the expression icon (
{}) to edit the prompt text.Edit the prompt. Keep
{{ $json.fieldName }}expressions intact — they pull data from previous nodes.Click Save. The change takes effect on the next execution.
[CALENDLY_LINK] with your actual URL.Adding Leads & Clients Manually
Add a lead manually
Use the Console → Agent #2 Trigger button, or POST directly to the webhook:
Add a client manually
Use the Console → Agent #5 Trigger button, or POST to the webhook:
Update a record directly
Go to n8n → Tables in the left sidebar. Click leads or clients. Find and edit any row directly. Changes take effect on the next agent run.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Agent shows error in n8n | Various | Click the red node → read the error message. Most common: expired Gmail token or wrong API key. |
| Gmail token expired | OAuth2 token needs refresh | n8n → Credentials → Gmail OAuth2 API → reconnect. |
| Claude returns empty output | maxTokens too low or model error | Check execution logs. Increase maxTokens in the Anthropic node options. |
| Email sends but content is missing | Markdown fences in Claude response | Agent prompts already include "no markdown fences" instruction. If recurring, open the Anthropic node → System message → confirm the instruction is there. |
| Follow-up agent sending to wrong leads | Status field not updated | Open n8n Tables → leads → set closed/won leads to status closed. |
| Agent #3/#15/#16 "table not found" | Tables not yet created | Run Agent #2 once (to create leads table) and Agent #5 once (to create clients table). Or create them manually in n8n → Tables. |
| Webhook not triggering | Workflow not active | In n8n, open the workflow and toggle it Active (green). Check the webhook URL is correct. |
| Agent #11 not posting to LinkedIn | LinkedIn credential missing | Add LinkedIn OAuth2 credential in n8n → Credentials, then open Agent #11 → "Post to LinkedIn" node → select your profile from the Person dropdown. |