Projects

Selected projects

Data, machine-learning and web projects we have built. Each is described by what was needed, what we built and how the pieces fit together.

9projects shown
9sectors
4kinds of work

All projects at a glance

Every project with its sector, kind of work and main tools. Select a title to jump to its description.
ProjectSectorKindMain tools
Sales Forecasting DashboardRetailAnalytics and dashboardsPython, Prophet, ARIMA
Interactive Data Visualisation Tool SuiteBusiness intelligenceAnalytics and dashboardsApache Superset, Celery, Redis
Healthcare Data Analytics PlatformHealthcareAnalytics and dashboardsPython, Django, D3.js
RAG Chatbot on Custom Knowledge BaseKnowledge managementApplied AILangChain, OpenAI, FAISS
Multilingual Translation EngineLegal and medical documentsApplied AIHuggingFace, mBART, IndicTrans
E-commerce AI Recommendation EngineE-commerceApplied AIPython, TensorFlow, AWS
Financial Risk Assessment AIFinancial servicesApplied AIPython, Scikit-learn, Apache Kafka
Automated Crop Harvesting DetectionAgricultureComputer visionYOLOv8, PyTorch, OpenCV
Document Intelligence: Invoice and PDF ExtractionFinance operationsDocument automationPython, Tesseract, PaddleOCR

Analytics and dashboards

Turning data into numbers and views that a team can use.

Client project, anonymisedRetailMar 2026

Sales Forecasting Dashboard

The need
Leadership needed one view of revenue, category and regional performance, plus a forward-looking forecast.
What we built
A multi-panel dashboard on three years of retail data: monthly revenue trends, product-category performance, regional heatmaps and a six-month machine-learning forecast with confidence intervals.
Technical notes
  • Forecasts come from Prophet and ARIMA models, so the method can be compared on the same history.
  • Confidence intervals are shown with the forecast rather than a single line.
  • PostgreSQL holds the cleaned sales data the dashboard reads.
  • Python
  • Prophet
  • ARIMA
  • Plotly Dash
  • PostgreSQL
Sales forecasting dashboardThree years of retail sales in PostgreSQL feed two forecasting models, Prophet and ARIMA. The result is a revenue chart showing history, a six-month forecast and a confidence band, delivered in Plotly Dash alongside category and regional views. PostgreSQL 3 years of sales Forecast models Prophet ARIMA Revenue and six-month forecast Today 3 years of history Next 6 months Confidence band Category and region views Delivered in Plotly Dash Sales forecasting dashboardThree years of retail sales in PostgreSQL feed two forecasting models, Prophet and ARIMA. The result is a revenue chart showing history, a six-month forecast and a confidence band, delivered in Plotly Dash alongside category and regional views. PostgreSQL 3 years of sales Forecast models: Prophet and ARIMA Revenue and six-month forecast Today 3 years of history Next 6 months Confidence band Category and region views Delivered in Plotly Dash
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.
Client project, anonymisedBusiness intelligenceJan 2026

Interactive Data Visualisation Tool Suite

The need
Non-technical teams needed to build their own charts from existing files and databases.
What we built
A no-code, drag-and-drop dashboard builder that connects to CSV, Excel and SQL sources and generates charts, pivot tables and geo maps, with scheduled PDF reports and role-based access control.
Technical notes
  • Apache Superset provides charts, pivot tables and geo maps on CSV, Excel and SQL sources.
  • Scheduled PDF reports run through Celery and Redis.
  • Role-based access control limits who sees which dashboards; the suite is containerised with Docker.
  • Apache Superset
  • Celery
  • Redis
  • Docker
  • PostgreSQL
No-code dashboard builderCSV files, Excel files and SQL databases connect to a drag-and-drop canvas built on Apache Superset, where charts, pivot tables and maps are arranged. Reports are scheduled as PDFs with Celery and Redis, and access roles (admin, analyst and viewer) control who sees what. The suite runs in Docker. Connect CSV Excel SQL databases Builder canvas drag and drop, no code Charts Pivot tables Maps drop a chart here PDF reports sent on a schedule Celery and Redis Access roles Admin, Analyst, Viewer Runs in Docker as one deployable package. No-code dashboard builderCSV files, Excel files and SQL databases connect to a drag-and-drop canvas built on Apache Superset, where charts, pivot tables and maps are arranged. Reports are scheduled as PDFs with Celery and Redis, and access roles (admin, analyst and viewer) control who sees what. The suite runs in Docker. Connect CSV Excel SQL databases Builder canvas drag and drop, no code Charts Pivot tables Maps drop a chart here PDF reports sent on a schedule Celery and Redis Access roles Admin, Analyst, Viewer Runs in Docker as one deployable package.
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.
Client project, anonymisedHealthcareJan 2026

Healthcare Data Analytics Platform

The need
Identify treatment patterns in patient data.
What we built
An analytics platform that processes patient data to surface treatment patterns for review.
Technical notes
  • Python processing prepares the patient data before analysis.
  • D3.js views let reviewers explore treatment patterns.
  • MongoDB stores the records; services are containerised with Docker.
  • Python
  • Django
  • D3.js
  • MongoDB
  • Docker
Healthcare data analytics platformPatient records held in MongoDB are processed in Python services running in Docker. Interactive D3.js views show treatment patterns as a flow from condition groups to treatments to follow-up, for people to review. Patient records MongoDB Processing Python, in Docker Treatment patterns, as an interactive view Condition groups Treatments Follow-up Interactive D3.js views, for people to review. Illustrative flow. Healthcare data analytics platformPatient records held in MongoDB are processed in Python services running in Docker. Interactive D3.js views show treatment patterns as a flow from condition groups to treatments to follow-up, for people to review. Patient records MongoDB Processing Python, in Docker Treatment patterns, as an interactive view Condition groups Treatments Follow-up Interactive D3.js views, for people to review. Illustrative flow.
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.

Applied AI

Models and retrieval built for a specific task and measured on its own data.

Client project, anonymisedKnowledge managementMar 2026

RAG Chatbot on Custom Knowledge Base

The need
Staff needed answers from product manuals, FAQs and policies without searching through documents.
What we built
A retrieval-augmented chatbot that finds the relevant passages by vector search and answers from them, citing the source document.
Technical notes
  • Answers are generated only from retrieved passages and cite the source document.
  • Documents are chunked and embedded once, then re-indexed when they change.
  • Grounding answers in retrieved passages keeps the model from answering out of memory.
  • LangChain
  • OpenAI
  • FAISS
  • FastAPI
  • Next.js
Retrieval-augmented chatbotDocuments such as manuals, FAQs and policies are split into chunks and indexed once. When someone asks a question, the most relevant passages are found in the index and the language model answers only from them, with a citation to the source document. Prepared once, updated when documents change Documents manuals, FAQs, policies Split into passages Searchable index passages stored by meaning Every question Question from a user Find the best passages looks up the index Language model answers only from the passages found Answer [1] [2] cites the source document Retrieval-augmented chatbotDocuments such as manuals, FAQs and policies are split into chunks and indexed once. When someone asks a question, the most relevant passages are found in the index and the language model answers only from them, with a citation to the source document. Prepared once, updated when documents change Documents manuals, FAQs, policies Split into passages Searchable index passages stored by meaning Every question Question from a user Find the best passages looks up the index above Language model answers only from the passages found Answer [1] [2] cites the source document
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.
Client project, anonymisedLegal and medical documentsFeb 2026

Multilingual Translation Engine

The need
Documents had to be translated into regional Indian languages with domain-specific vocabulary.
What we built
A fine-tuned transformer translation model covering 10+ Indian regional languages, with a domain vocabulary for legal and medical text, evaluated against a baseline on domain corpora.
Technical notes
  • A fine-tuned transformer (mBART, IndicTrans) covers 10+ Indian regional languages.
  • A domain vocabulary for legal and medical terms is applied to the output.
  • The model is served through a Django REST API with a React interface.
  • HuggingFace
  • mBART
  • IndicTrans
  • Django REST
  • React
Multilingual translation engineLegal and medical source documents, together with a domain glossary, go into a fine-tuned transformer model (mBART and IndicTrans). It produces translations in more than ten regional Indian languages, served through a REST API and a web interface. Source document legal or medical Fine-tuned transformer model mBART and IndicTrans Understands the source Writes the translation Legal and medical glossary 10+ regional Indian languages Served through an API and a web interface Multilingual translation engineLegal and medical source documents, together with a domain glossary, go into a fine-tuned transformer model (mBART and IndicTrans). It produces translations in more than ten regional Indian languages, served through a REST API and a web interface. Source document legal or medical Fine-tuned transformer model mBART and IndicTrans Understands the source Writes the translation Legal and medical glossary 10+ regional Indian languages Served through an API and a web interface
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.
Client project, anonymisedE-commerceFeb 2026

E-commerce AI Recommendation Engine

The need
Show shoppers relevant products and support pricing decisions.
What we built
A recommendation engine producing personalised product suggestions and dynamic-pricing inputs.
Technical notes
  • A TensorFlow model produces personalised product suggestions.
  • Dynamic-pricing inputs are produced alongside the recommendations.
  • Runs on AWS with a React front end and PostgreSQL.
  • Python
  • TensorFlow
  • AWS
  • React
  • PostgreSQL
E-commerce recommendation engineBrowsing, add-to-cart and order history are turned into features. A TensorFlow model first finds candidate products and then ranks them, and the ranked suggestions appear on the storefront. Demand signals feed pricing inputs alongside. Shopper behaviour Views Add to cart Orders Find candidates from the catalogue Rank them for this shopper Storefront Recommended for you Pricing inputs from demand signals E-commerce recommendation engineBrowsing, add-to-cart and order history are turned into features. A TensorFlow model first finds candidate products and then ranks them, and the ranked suggestions appear on the storefront. Demand signals feed pricing inputs alongside. Shopper behaviour Views Add to cart Orders Find candidates from the catalogue Rank them for this shopper Pricing inputs from demand signals Storefront: recommended for you
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.
Client project, anonymisedFinancial servicesDec 2025

Financial Risk Assessment AI

The need
Assess loan risk consistently using historical data.
What we built
An AI-based risk-assessment system built on predictive modelling of historical data.
Technical notes
  • A scikit-learn model estimates risk from historical data.
  • Kafka carries the event stream and Redis serves features quickly.
  • A Vue.js interface presents the result.
  • Python
  • Scikit-learn
  • Apache Kafka
  • Redis
  • Vue.js
Financial risk assessmentHistorical loan data and a live Kafka event stream are turned into features, with Redis serving them quickly. A scikit-learn model estimates risk, and a Vue.js review screen shows a risk band, low, medium or high, along with the factors behind it. Data in History loan outcomes Live events Kafka stream Features ratios, trends, history Risk model scikit-learn predictive Redis fast lookup Review screen built with Vue.js Low Medium High Risk band Why this band Financial risk assessmentHistorical loan data and a live Kafka event stream are turned into features, with Redis serving them quickly. A scikit-learn model estimates risk, and a Vue.js review screen shows a risk band, low, medium or high, along with the factors behind it. Data in History loan outcomes Live events Kafka stream Features ratios, trends, history; fast lookup in Redis Risk model scikit-learn, predictive Review screen built with Vue.js Low Medium High Risk band Why this band
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.

Computer vision

Reading images to support a decision.

Client project, anonymisedAgricultureFeb 2026

Automated Crop Harvesting Detection

The need
Identify which parts of a field are ready to harvest from drone imagery.
What we built
A YOLOv8 vision model trained on drone imagery that flags harvest-ready zones and overlays bounding boxes with ripeness confidence scores.
Technical notes
  • A YOLOv8 detector (PyTorch) is trained on labelled drone imagery.
  • Each detected zone carries a confidence score so each detection can be judged.
  • OpenCV draws the bounding boxes; Streamlit presents the result.
  • YOLOv8
  • PyTorch
  • OpenCV
  • Streamlit
  • AWS S3
Automated crop harvest detectionDrone images of a field are prepared and passed to a YOLOv8 detector built on PyTorch. The detector marks zones that are ready for harvest and zones that are not, each with a confidence score, and OpenCV draws the results onto the original image for review in Streamlit. Drone images of the field What the detector marks ready ready YOLOv8 detector Zone ready, or not Confidence score each Solid box: ready for harvest Dashed: not ready Automated crop harvest detectionDrone images of a field are prepared and passed to a YOLOv8 detector built on PyTorch. The detector marks zones that are ready for harvest and zones that are not, each with a confidence score, and OpenCV draws the results onto the original image for review in Streamlit. Drone images of the field What the detector marks ready ready Solid box: ready for harvest Dashed: not ready YOLOv8 detector Marks each zone as ready or not, with a confidence score Results are drawn onto the original image for review.
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.

Document automation

Replacing manual data entry with validated extraction.

Client project, anonymisedFinance operations

Document Intelligence: Invoice and PDF Extraction

The need
Finance teams were keying data by hand from hundreds of supplier invoices and PDFs every month.
What we built
An OCR pipeline that extracts structured fields from PDFs and scans, validates them against business rules and passes clean data to the ERP, with an audit trail for each document.
Technical notes
  • OCR (Tesseract, PaddleOCR) turns scans and PDFs into text and fields.
  • Business-rule validation checks fields before anything is imported.
  • Every document keeps an audit trail; the service runs on FastAPI with PostgreSQL.
  • Python
  • Tesseract
  • PaddleOCR
  • FastAPI
  • PostgreSQL
Invoice and PDF data extractionA scanned invoice or PDF is read with OCR (Tesseract and PaddleOCR). The fields are extracted and checked against business rules. Clean records are imported into the ERP, while a mismatch goes to a review queue. Every document keeps an audit trail. The service runs on FastAPI with PostgreSQL. INVOICE Supplier Invoice no. Date Total PDF or scanned invoice OCR reads text Extracted fields Supplier Invoice no. Date Total Checked against rules passes ERP import clean records mismatch Review queue a person decides Every document keeps an audit trail. Runs on FastAPI and PostgreSQL. Invoice and PDF data extractionA scanned invoice or PDF is read with OCR (Tesseract and PaddleOCR). The fields are extracted and checked against business rules. Clean records are imported into the ERP, while a mismatch goes to a review queue. Every document keeps an audit trail. The service runs on FastAPI with PostgreSQL. INVOICE Supplier Invoice no. Date Total PDF or scanned invoice OCR reads the text Extracted fields Supplier Invoice no. Date Total Checked against rules passes mismatch ERP import clean records Review queue a person decides Every document keeps an audit trail. Runs on FastAPI and PostgreSQL.
Solution overviewHow the components fit together. A schematic with placeholder values, not a screenshot of the delivered system.

Want to see something interactive?

The public demo dashboard has working filters and charts. Every figure on it is sample data, and it says so on the page.

Open the demo dashboard

Have a similar problem?

Tell us what you are trying to fix. We will say honestly whether we have done something comparable.

Discuss your projectExplore services