Independent AI engineering · Open to freelance collaborations and engineering roles · Limerick, Ireland

I bring AI solutions
to real businesses.

I build AI solutions for real business problems: assistants that answer from a company's own documents, AI tools connected to everyday systems like staff rosters, and agents with clear limits on what they can change.

HOW I WORK

  1. 01

    UNDERSTAND

    Your problem & your tools

  2. 02

    BUILD

    A small working version first

  3. 03

    TEST

    On your real data & tools

  4. 04

    HAND OVER

    Docs, handover & support

Also open to Applied AI Engineer roles, in Ireland or remote.

Selected Work

  1. 01 Independent Brand · Multi-Tenant SaaS & AI Solutions

    Lucky Cat: AI Solutions

    Problem: Independent businesses need their own ordering, operations and AI-assisted sales software on a shared multi-tenant backend without leaking tenant data.

    Brand & suite
    Independent software & AI brand (Ownly owner app, Tillr customer ordering app, PitchPilot & Synergy)
    Role
    Built solo — architecture, Postgres RLS, Edge Functions, frontend & security review
    Architecture & technical notes
    VERIFIED ARCHITECTURE · RESTAURANT MULTI-TENANT SYSTEM TILLR / OWNLY → SUPABASE (RLS PER STORE) → STRIPE CONNECT
    INPUT · CLIENT APP Tillr (Customer Ordering) INPUT · OWNER APP Ownly (Back-Office & Pass) Cloudflare Pages CONTEXT & POLICY BOUNDARY · SUPABASE MULTI-TENANT BACKEND PostgreSQL + RLS store_id on every row Tenant data isolated Edge Functions & RPC Store-scoped stock RPC Locked billing columns ACTION · PAYMENTS Stripe Connect (Live Mode) Direct charges + app fees Tested with a real card
    1. 01 INPUT · CLOUDFLARE PAGES Tillr (Customer) & Ownly (Owner) Static ordering & back-office apps
    2. 02 CONTEXT & POLICY · SUPABASE PostgreSQL + RLS & Edge Functions store_id on every row · Store-scoped stock RPC · Locked billing columns
    3. 03 ACTION · PAYMENTS Stripe Connect (Live Mode) Direct charges + app fees · Tested with a real card
    Key engineering decisions

    Key engineering decisions

    • Row-level multi-tenant isolation: Every row carries a store_id, and PostgreSQL Row-Level Security keeps each store’s data separate on a single Supabase backend.
    • Adversarial security review & same-day fixes: Audited the deployed system and fixed two serious bugs the same day: a stock function callable over the REST API against any store, and a client-writable billing column that let a store pick a cheaper plan.
    • Live Stripe Connect integration: Deployed static apps on Cloudflare Pages backed by Supabase Edge Functions and Stripe Connect in live mode, testing the card charge end to end with a real card.
  2. 02 Applied AI · White-Label Field Sales & RAG Copilot

    PitchPilot

    Problem: Field sales reps at a doorstep need instant, accurate answers to pricing and contract objections grounded strictly in their product’s documents.

    What it is
    White-label field-sales app (pitch scripts, objections, demos, lead capture) whose core is Wingman, a tenant-scoped RAG copilot
    Role
    Solo engineer — copilot-ask Edge Function, pgvector retrieval, re-indexing & app UI
    luckycat.ie/pitcher-template · Objections + Wingman PUBLIC DEMO · VOLTLINE PACK
    pitchpilot Demo $ Home Pitch Leads Money ← Pitch Kit SALES TOOLS Savings Calc Switch Kit Objections Tier Finder Search an objection… (e.g. contract, scam, too good, no time) All Price Contract Trust Effort Home All Price I’m locked into a contract No problem — most deals can be switched near the end with no exit fee, and I’ll line it up to start the day yours ends. Even with a me check your dates. I’m happy with my current provider Happy with the service or happy with the price? Most people stay out of habit and quietly pay a loyalty penalty. Same grid, same number. Switching sounds like a hassle It’s genuinely five minutes here, then we do everything with your old provider. No engineer visit for energy, no downtime, nothing Is it really cheaper? Let me put your current bill in right now and show you live. It’s typically about 18% lower for the exact same electricity and gas. Sounds too good to be true — is this a scam? Totally fair to ask. I never take a penny at the door and never touch your bank details — you set up the direct debit yourself on verify me on. I don’t have time right now No worries — the part that needs you is two minutes, and I can come back when it suits. Quick one though: shall I just leave you I rent — it’s not my bill If you pay the energy or broadband bill, you can switch it — you don’t need to own the place, the supply’s in your name. If your landlord pays it, no worries, who next door might want a lower bill? Wingman Hey! I’m your sales Wingman. Ask me about the pitch, pricing or objections and I’ll answer on the spot. How do I handle a price objection? Price objection? Flip it to the cost of staying put: a home paying €180/mo for energy + broadband saves roughly €30 every month by switching to the VoltLine Bundle. No lock-in, no exit fee — just a lower bill. See objection Open Tier Finder Explain that better Give me an example What about the other plan? Ask about sales, pricing, objections… How do I handle a price objection?
    PitchPilot live demo (“VoltLine”) · Animated re-creation of the demo: doorstep objection search alongside the Wingman widget answering “How do I handle a price objection?” with shortcut chips (See objection, Open Tier Finder). In the public demo, Wingman's answers are pre-written client-side; in the signed-in rep app, they come from the RAG pipeline below.
    pitcher-template · Lead flow DEMO
    New Lead Who are you talking to? LEAD DETAILS Household Bloomfield Court 2B Contact Priya · +44 7700 900512 DEMO AUTOFILL NEXT Pick a Plan What are they switching to? VoltLine Bundle Energy + Broadband €249 signup + €89/mo MONTHLY VOLUME €180 NEXT Review & Close Confirm the deal DEAL SUMMARY Household Bloomfield Court 2B Contact Priya · +44 7700 900512 Plan VoltLine Bundle (Energy + Broadband) Plan €249 signup + €89/mo Monthly volume €180 Files 0 Audio Notes 0 YOUR COMMISSION €100 €100 +€10 ON SIGNUP PER ACTIVE ACCOUNT, EVERY MONTH For as long as the account stays active. It is a flat rate — it does not depend on how much they use. CLOSE DEAL NOW ✓ DEAL CLOSED Demo $ HOME PITCH LEADS MONEY
    Mobile lead flow · Animated re-creation: demo autofill → plan → review & close, with fictional sample data.
    Architecture & technical notes
    VERIFIED RAG PIPELINE · SUPABASE EDGE FUNCTION copilot-ask QUESTION → EMBED → PGVECTOR TOP-6 (THIS PRODUCT ONLY) → GROUNDED ANSWER · SOURCES LOGGED
    SERVER-SIDE BOUNDARY · SUPABASE EDGE FUNCTION copilot-ask (MODEL KEY NEVER REACHES BROWSER) 01 · QUESTION Signed-In Rep JWT (pitcher role) + Global daily cap 02 · EMBED Gemini Embeddings 768 dimensions Server-side API call 03 · PGVECTOR TOP-6 (ISOLATED) RPC match_pitcher_kb Filtered to THIS product’s KB only Exact search (fixed IVFFlat 0-recall) 04 · GROUNDED OUTPUT Gemini Flash-Lite answer Sales-scoped prompt · chunk-only Sources logged server-side
    1. 01 QUESTION · SIGNED-IN REP JWT (pitcher role) + Daily Cap Authenticated request to copilot-ask
    2. 02 EMBED · SERVER-SIDE Gemini Embeddings (768-dim) Model key never reaches browser
    3. 03 PGVECTOR TOP-6 · ISOLATED RPC match_pitcher_kb Filtered strictly to THIS product’s KB · Exact cosine scan
    4. 04 GROUNDED OUTPUT Gemini Flash-Lite answer Sales-scoped prompt · Sources logged server-side

    Note on the public demo: Because copilot-ask requires a signed-in rep JWT (pitcher role), the unauthenticated browser demo at /pitcher-template/ serves pre-seeded VoltLine answers client-side; the diagram above documents the verified server-side RAG implementation.

    Key engineering decisions

    Key engineering decisions

    • Exact search over IVFFlat on small corpora: An IVFFlat index over a small knowledge base collapsed recall to zero; I fixed the zero-recall failure by switching from IVFFlat to exact vector search in match_pitcher_kb.
    • White-label tenant isolation & hardened prompt: match_pitcher_kb returns the top 6 chunks filtered strictly to the active product’s knowledge base, and a hardened, sales-scoped prompt restricts Gemini Flash-Lite to those retrieved chunks.
    • Server-side execution & budget guards: Embedding (768-dim Gemini) and generation run inside the copilot-ask Supabase Edge Function behind a pitcher-role JWT and a global daily cap, so model keys never reach the browser.
  3. 03 Agent Action Layer · Contracts, Permissions & Safety Lint

    Synergy

    Problem: Letting AI channels trigger real application actions without permitting unconfirmed financial transactions, non-idempotent charges or anonymous writes.

    What it is
    Action layer between an application and agent channels, demonstrated on a sample café app
    Role
    Solo designer & engineer — contract specification, safety lint & derived channel glue
    luckycat.ie/synergy#demo PUBLIC PAGE · CONCEPTUAL FLOW
    Siri ON IPHONE Gemini ON ANDROID ChatGPT ON THE WEB Siri ON IPHONE Gemini ON ANDROID ChatGPT ON THE WEB SIRI GEMINI CHATGPT Order #284 is out for delivery, 12 min away. “Where is my order?” Synergy finds that customer’s order in tillr tillrby Lucky Cat Order #284 Status Out for delivery Arrives 12 min away ✓ On its way ↺ The update goes back to the customer.
    Synergy request flow · Animated re-creation of the public page’s illustrated demo on Lucky Cat’s sample ordering app (assistant screens are conceptual illustrations, not claimed as operational integrations).
    Architecture & technical notes
    APP CONTRACT · SAMPLE CAFÉ APP APP CONTRACT → STATIC SAFETY LINT → DERIVED CHANNEL GLUE
    1. 01 · APP CONTRACT 5 required sections

      The app contract defines identity, shape, failure, safety and implementation binding.

    2. 02 · STATIC SAFETY LINT 3 hard refusal rules

      Refuses contracts where money moves without confirmation, a financial write has no idempotency key, or a write runs anonymously.

    3. 03 · DERIVED CHANNEL GLUE Safety annotations

      Channel glue (such as MCP tool annotations) is derived automatically from the contract’s safety fields.

    4. 04 · SAMPLE CAFÉ APP Sample café app

      The sample café app demonstrates the contract, safety fields and implementation binding.

    Key engineering decisions

    Key engineering decisions

    • One contract per app: Defines identity (name/version), JSON Schema input/output shape, failure error codes, safety rules and implementation binding in one place.
    • Derived channel annotations: Generates MCP tool annotations and channel descriptors directly from the contract’s safety fields instead of duplicating definitions.
    • Static safety lint: Rejects contracts at lint time if money moves without confirmation, a financial write lacks an idempotency key, or a write can be called anonymously.
  4. 04 Local MCP Server · Open Source (MIT) · Workforce Rosters

    Deputy-MCP

    Problem: Asking Claude “when do I work next?” and getting an answer from your live Deputy roster locally on your machine — read-only by default and working with a regular employee account.

    Install (CLI)
    claude mcp add deputy … -- uvx --from git+https://github.com/augbastos/Deputy-MCP deputy-mcp
    Role
    Sole author — Python MCP server, OAuth / API token / calendar sign-in, OS keychain, CI & security scanning
    local stdio · deputy-mcp ILLUSTRATIVE EXAMPLE · FAKE SAMPLE SHIFT
    New chat deputy-mcp · local · read-only When do I work next? Checking Deputy deputy_next_shift Read your roster deputy_next_shift · read-only Your next shift is Thursday 22 Oct, 09:00–17:30 at Sample Store — Front Counter. Sample data · read from your roster, nothing was changed. Can you swap my Saturday shift? Checking what I can do Read-only mode · no write tools loaded I can’t swap shifts from here: Deputy-MCP runs read-only by default. Changes like shift swaps only exist when DEPUTY_ALLOW_WRITES=true is set. Ask anything When do I work next? Can you swap my Saturday shift?
    Illustrative example — animated chat with an obviously fake sample roster: deputy_next_shift answers “When do I work next?”, and the read-only default declines a shift swap. Not affiliated with Deputy.
    Architecture & technical notes
    VERIFIED ARCHITECTURE · READ / WRITE BOUNDARY AGENT → MCP SERVER (LOCAL) → DEPUTY API
    AGENT Claude Client Local stdio LOCAL MCP SERVER BOUNDARY READ-ONLY DEFAULT (11 tools) OS Keychain · Scrubbed errors WRITE GATE (opt-in only) DEPUTY_ALLOW_WRITES=true DEPUTY API *.deputy.com Tokens only to *.deputy.com
    1. 01 AGENT · LOCAL STDIO Claude Client Calls local MCP server
    2. 02 LOCAL MCP BOUNDARY Read-Only Default vs. Write Gate 11 read tools default · Write tools require DEPUTY_ALLOW_WRITES=true
    3. 03 DEPUTY API · TOKENS ONLY TO *.deputy.com *.deputy.com OS keychain tokens · Scrubbed errors

    What anyone can ask (read-only): “When do I work next?”, “Show my roster”, “How many hours did I work?”, “Who am I working with?”, “Send me my calendar link”.

    deputy_next_shift deputy_get_my_roster deputy_get_my_timesheets deputy_get_my_colleagues deputy_get_my_calendar_url deputy_whoami deputy_get_areas

    What managers can also ask (read-only): “Who’s working right now?”, “Show the team’s roster”, “Find Friday’s shifts”, “Look up an employee”.

    deputy_who_is_working deputy_get_team_roster deputy_search_shifts deputy_get_employee_info

    Anything that changes your roster is switched off until you turn it on (DEPUTY_ALLOW_WRITES=true): clocking in or out, marking yourself unavailable, asking to swap a shift, or picking up an open shift, which asks you to confirm first.

    Key engineering decisions

    Key engineering decisions

    • Read-only by default; writes are opt-in and claiming a shift asks you to confirm first: Action tools do not exist unless DEPUTY_ALLOW_WRITES=true is set.
    • No guessing on ambiguous names: If a name query matches several people, the server returns the candidate list instead of guessing.
    • Keychain isolation & secret scrubbing: Supports API tokens (admins), OAuth (any employee) or calendar feeds (read-only); tokens stay in the OS keychain, tokens are sent only to *.deputy.com, and errors are scrubbed of secrets.

Skills

GROUP 01 · UNDERSTAND

From business problem to AI solution

Turning a real workflow into a small first version.

  • Problem framing: mapping a workflow (ordering, field sales, staff rosters) and defining a small first version.
  • Choosing the right approach: answers from documents (RAG), AI agents with tools (MCP), or ordinary automation when AI isn't needed.
  • Clear documentation: setup guides, technical case studies and demos on labelled sample data.
GROUP 02 · CONNECT

AI wired into real tools

Making AI work inside the systems a business already has.

  • AI agents and tools: MCP servers (Deputy-MCP, Wavr) and REST APIs.
  • Document retrieval: embeddings and PostgreSQL + pgvector, with sources logged on the server (PitchPilot).
  • Platforms and automation: Supabase, Stripe Connect, Cloudflare Pages and n8n; Python, TypeScript and SQL.
GROUP 03 · VERIFY

Safe and tested

Keeping AI inside clear limits.

  • Permission limits: Deputy-MCP and Wavr are read-only by default, with write access opt-in. Synergy's safety lint rejects contracts that move money without confirmation.
  • Data isolation: PostgreSQL Row-Level Security with cross-tenant tests.
  • Testing and review: pytest, Playwright and GitHub Actions CI; an adversarial security review of Lucky Cat, followed by fixes; tests and independent review when building with Claude Code and Codex.

About

I'm Augusto Bastos, an Applied AI Engineer in Limerick, Ireland. I build AI to end everyday problems, make people's work easier and give them back the time they were losing.

What I work by:

  • People first. Coordinating shift teams taught me to listen before deciding and to make every role clearer.
  • Solve the real problem. A small tool that ends one daily frustration beats a big demo.
  • Give time back. A task repeated every day is a task worth automating.
  • Clear limits. AI should only read and change what it's allowed to.
  • Check the work. I test and review what I build before I call it done.
Location
Limerick, Ireland
Languages
Portuguese (Native) · English C2 (Cambridge Proficiency, CPE)
Education
Graphic Design (Universidade Veiga de Almeida, 2015–2018) · High School & IT Technician (Emmanuel Leontsinis, 2012–2014)

Operations & technical background

  1. Retail Coordinator — Chemist Warehouse 2026 – Present

    High-volume pharmacy retail: daily problem solving, shift team coordination and clear communication with customers.

  2. English Instructor — WSA Languages 2019 – 2022

    Taught English classes, explaining complex concepts clearly to learners at different levels.

  3. Receptionist & IT Technician — Unified Educational Foundation 2014 – 2018

    Technical support: troubleshooting hardware, software and user issues, plus front-desk and administrative operations.

Contact

FOR AGENCIES & BUSINESSES

Outsource AI implementation & integration

Open to implementing and integrating AI in your projects — MCP servers, grounded RAG assistants over your documents, and permission-controlled agent workflows connected to your existing tools.