Technical Architecture

System architecture, deployment model, and integration landscape.

Solution Architecture


┌─────────────────────────────────────────────────────────────────────────────────┐
│                        AI ENABLEMENT & TAX TECHNOLOGY HUB                        │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐                │
│  │   Next.js App   │  │   Content (MD)  │  │  Search Index   │                │
│  │   (Frontend)    │  │   (13 Sections) │  │   (Fuse.js)     │                │
│  └────────┬────────┘  └────────┬────────┘  └────────┬────────┘                │
│           │                    │                    │                           │
│           └────────────────────┼────────────────────┘                           │
│                                │                                                │
│  ┌─────────────────────────────┴───────────────────────────────────┐           │
│  │                    Docker Container (Node 20)                     │           │
│  │                    Port 3000 → Nginx Reverse Proxy               │           │
│  └──────────────────────────────────────────────────────────────────┘           │
│                                                                                 │
├─────────────────────────────────────────────────────────────────────────────────┤
│                         INTEGRATION LANDSCAPE                                   │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐       │
│  │Microsoft │  │SharePoint│  │  Oracle  │  │   IDF    │  │  Custom  │       │
│  │ Copilot  │  │  Sites   │  │ R12/EPM  │  │Data Lake │  │  Agent   │       │
│  │Pro/Chat  │  │          │  │          │  │          │  │(Copilot  │       │
│  │          │  │          │  │          │  │          │  │ Studio)  │       │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘       │
│       │              │              │              │              │            │
│       └──────────────┼──────────────┼──────────────┼──────────────┘            │
│                      │              │              │                            │
│              ┌───────┴──────────────┴──────────────┴───────┐                   │
│              │         Microsoft Graph API / Connectors      │                   │
│              └──────────────────────────────────────────────┘                   │
│                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────┘
          

Custom AI Agent Architecture (Copilot Studio)


┌────────────────────────────────────────────────────────────────────────────┐
│                    CANON TAX & FINANCE AI AGENT                              │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  ┌─────────────────────────────────────────────────────────────────────┐  │
│  │                      COPILOT STUDIO AGENT                            │  │
│  │  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌───────────┐      │  │
│  │  │  Topics   │  │  Actions  │  │ Knowledge │  │  Plugins  │      │  │
│  │  │(Triggers) │  │ (Flows)   │  │  Sources  │  │(Connectors│      │  │
│  │  └───────────┘  └───────────┘  └───────────┘  └───────────┘      │  │
│  └─────────────────────────────────────────────────────────────────────┘  │
│                                    │                                       │
│  ┌─────────────────────────────────┴──────────────────────────────────┐  │
│  │                    KNOWLEDGE LAYER                                   │  │
│  ├─────────────────────────────────────────────────────────────────────┤  │
│  │                                                                     │  │
│  │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐             │  │
│  │  │  SharePoint  │  │   Dataverse  │  │  Data Lake   │             │  │
│  │  │  Documents   │  │  (Structured │  │  (IDF/       │             │  │
│  │  │  - Tax memos │  │   Knowledge) │  │   Analytics) │             │  │
│  │  │  - Policies  │  │  - Decisions │  │  - Invoices  │             │  │
│  │  │  - Guides    │  │  - Q&A pairs │  │  - Patterns  │             │  │
│  │  │  - Minutes   │  │  - Rulings   │  │  - Metrics   │             │  │
│  │  └──────────────┘  └──────────────┘  └──────────────┘             │  │
│  │                                                                     │  │
│  │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐             │  │
│  │  │   Outlook    │  │   Meeting    │  │   External   │             │  │
│  │  │   (Email     │  │ Transcripts  │  │   Sources    │             │  │
│  │  │   context)   │  │  (History)   │  │ (Legislation │             │  │
│  │  │              │  │              │  │  databases)  │             │  │
│  │  └──────────────┘  └──────────────┘  └──────────────┘             │  │
│  └─────────────────────────────────────────────────────────────────────┘  │
│                                    │                                       │
│  ┌─────────────────────────────────┴──────────────────────────────────┐  │
│  │                    OUTPUT LAYER                                      │  │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐   │  │
│  │  │Advisory │ │ Risk    │ │Research │ │Project  │ │Compliance│   │  │
│  │  │ Memos   │ │Analyses │ │Summaries│ │Updates  │ │ Checks   │   │  │
│  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘   │  │
│  └─────────────────────────────────────────────────────────────────────┘  │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘
          

Project Structure

ai-tax-hub/
├── docker-compose.yml
├── Dockerfile
├── .env.example
├── package.json
├── tsconfig.json
├── tailwind.config.ts
├── next.config.js
├── content/
│   ├── sections/
│   │   ├── copilot-pro-guide.md
│   │   ├── researcher-agent.md
│   │   ├── team-enablement.md
│   │   ├── sharepoint-intelligence.md
│   │   ├── email-intelligence.md
│   │   ├── meeting-intelligence.md
│   │   ├── vat-indirect-tax.md
│   │   ├── corporate-tax.md
│   │   ├── e-invoicing.md
│   │   ├── oracle-erp-epm.md
│   │   ├── ai-adoption-framework.md
│   │   ├── business-case-roi.md
│   │   └── future-roadmap.md
│   └── prompts/
│       └── (organized by category)
├── src/
│   ├── app/
│   │   ├── layout.tsx
│   │   ├── page.tsx
│   │   ├── globals.css
│   │   ├── sections/
│   │   │   ├── page.tsx
│   │   │   └── [slug]/page.tsx
│   │   ├── prompts/page.tsx
│   │   └── architecture/page.tsx
│   ├── components/
│   │   ├── Navigation.tsx
│   │   └── Footer.tsx
│   └── lib/
│       └── content.ts
└── public/
    └── (static assets)

Deployment Architecture

Docker Stack

  • Node.js 20 Alpine (application)
  • Nginx (reverse proxy, SSL)
  • Volume mounts for content updates
  • Health checks configured

Quick Start

git clone → docker compose up -d

Single command deployment. Add content via markdown files.

Suggested Database Structure (Future Enhancement)


-- For future: tracking usage, feedback, and custom prompts
-- SQLite or PostgreSQL

CREATE TABLE sections (
  id          TEXT PRIMARY KEY,
  title       TEXT NOT NULL,
  category    TEXT NOT NULL,
  order_num   INTEGER,
  created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE prompts (
  id          TEXT PRIMARY KEY,
  section_id  TEXT REFERENCES sections(id),
  category    TEXT NOT NULL,
  content     TEXT NOT NULL,
  usage_count INTEGER DEFAULT 0,
  rating      REAL,
  tags        TEXT[], -- JSON array
  created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE feedback (
  id          TEXT PRIMARY KEY,
  prompt_id   TEXT REFERENCES prompts(id),
  rating      INTEGER CHECK (rating BETWEEN 1 AND 5),
  comment     TEXT,
  created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE usage_log (
  id          TEXT PRIMARY KEY,
  prompt_id   TEXT REFERENCES prompts(id),
  user_role   TEXT,
  outcome     TEXT, -- 'useful', 'modified', 'not_useful'
  created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);