MA Framework Deal Sourcing Engine

MA Framework: Deal Sourcing & Acquisition Screening Engine

A modular Python framework for identifying, screening, and prioritising acquisition targets in the Italian mid-market. Built for family offices and holding companies, it combines financial analysis, proprietary signals, and deal feasibility into a structured decision-support system with a local Streamlit dashboard.

Project type: M&A Analytics Market: Italian Mid-Market EBITDA Target: €2M - €15M Sectors: Manufacturing · Food & Agri · Distribution Tools: Python · SQLite · Streamlit · ReportLab Output: BUY · WATCH · PASS

Key Takeaways

What the framework does

  • Reads company financials from a structured Excel template and computes a full KPI set: revenue CAGR, EBITDA margin, cash conversion, PFN/EBITDA, revenue per head.
  • Runs five proprietary scoring modules, including a Succession Signal Detector and an Owner Dependency Score, that no commercial tool in this segment offers.
  • Produces a BUY / WATCH / PASS decision, a valuation range, a deal feasibility assessment, and a PDF report in under 10 seconds per target.

Why it matters

  • The Italian mid-market is one of the most information-inefficient M&A segments in Europe. Most deals are still sourced through personal networks and managed with Excel.
  • Over the next 5-10 years, more than 70,000 Italian companies with revenues above €5M will face ownership transitions driven by generational change. A systematic approach to sourcing is the only way to stay ahead of that wave.
  • The framework runs entirely locally, with no cloud dependency and no recurring cost, making it viable for small teams and individual investors.

Disclaimer: this framework is an analytical tool and does not constitute investment advice. All outputs should be verified against primary sources before any investment decision is made.

Overview: The Problem This Solves

Most M&A analytics tools are built for large-cap, liquid markets. Capital IQ covers millions of companies globally but offers thin data on Italian SMEs below €50M in revenue. Midaxo and DealCloud manage pipeline CRM at enterprise prices that start in the tens of thousands per year. Neither is calibrated to the specific dynamics of the Italian mid-market: family-owned businesses, founder dependency, informal succession processes, financial statements that require careful reading.

The MA Framework starts from the opposite direction. The core question it tries to answer is the one a family office or holding company actually asks: is this company worth spending time on, and is now the right moment to approach it? Everything in the system is built around that.

The pipeline has six layers: data ingestion, KPI calculation, scoring, valuation, feasibility assessment, and output generation. Each layer is modular and independently testable. The whole thing runs on a local machine with no external API dependencies, which keeps sensitive deal information off third-party servers and the cost of operation at zero.

Part 1: Architecture

The framework is built in Python and structured around ten modules. The entry point is a structured Excel template, one file per target company, which feeds the ingestion layer and propagates through the full pipeline.

ModuleFunctionOutput
ingestion.pyReads Excel template, validates data, computes completeness scoreStructured data dict + completeness score /100
kpi.pyCalculates financial KPIs from historical financialsRevenue CAGR, EBITDA margin, cash conversion, PFN/EBITDA, rev/head
scoring.pyMulti-dimensional scoring with configurable weightsScore /100 + BUY / WATCH / PASS decision
valuation.pyEV range from sector-calibrated EBITDA multiplesEV min/max, equity min/max, multiple range
feasibility.pyDeal structure and leverage sustainability assessmentFEASIBLE / STRETCHED / HARD + debt capacity
succession.pyDetects generational transition signals from available dataScore /10 + signal list
owner_dependency.pyEstimates founder dependency riskScore /10 + risk signals
integration_complexity.pyPreliminary integration difficulty indexScore /10 + complexity drivers
acquirer_readiness.pyScores the acquirer's own readiness across 5 dimensionsScore /100 + PRONTO / QUASI PRONTO / NON PRONTO
pdf_report.pyGenerates executive summary or full report in PDFProfessional PDF with charts and tables

All modules are independently testable. The pipeline can be run from CLI via main.py or through the Streamlit dashboard.

The data layer uses SQLite as a local database. Every target analysed can be saved to the pipeline, which enables persistent ranking, filtering, and comparison across sessions. The schema stores KPIs and scores as both flat columns for fast querying and JSON blobs for full detail retrieval.

Part 2: The KPI Layer

Financial data is entered through a three-sheet Excel template: anagrafica (company profile), three years of income statement and balance sheet data, and qualitative inputs. The KPI layer reads rows by label rather than by position, so the template can be modified without touching the code.

Core KPIs Computed

KPIFormulaWhy It Matters for Italian SMEs
Revenue CAGR(Rev_n / Rev_0)^(1/n) - 1, dynamic nOrganic growth signal; distinguishes structural growth from one-off gains
EBITDA Margin (avg)Mean(EBITDA / Revenue) over periodPricing power proxy; benchmarks vary significantly across manufacturing sub-sectors
EBITDA Margin TrendLast margin - First marginExpansion or compression signal; more informative than the average in isolation
Cash Conversion(EBITDA - Capex - DCCN) / EBITDAItalian SMEs often show inflated EBITDA; cash conversion separates real from accounting earnings
PFN / EBITDA(Debt - Cash) / EBITDA_lastPrimary leverage metric; negative values indicate net cash, which affects deal structure
Revenue per HeadRevenue_last / Employees_lastOperational productivity proxy; useful for within-sector peer comparisons
KPI summary cards in the dashboard
The KPI summary row in the dashboard. The five cards give an immediate read on growth, margins, leverage, and cash quality before diving into the detail.

The completeness score runs at ingestion and ranges from 0 to 100. Missing fields are penalised proportionally, with financial data weighted more heavily than qualitative inputs. Every output in the dashboard shows the completeness score of the underlying data, so it is always clear how much to trust the result. A target with 60% completeness produces a valid score, but the decision label is flagged as provisional.

Part 3: The Scoring Model

The scoring model assigns a composite score from 0 to 100 and maps it to one of three labels: BUY, WATCH, or PASS. Thresholds and weights are configurable via a YAML settings file. The model can be recalibrated for different acquirer strategies without touching the codebase.

Scoring Dimensions

DimensionMax PointsKey Drivers
Business Quality70Revenue CAGR, EBITDA margin (avg + trend), leverage, cash conversion, revenue per head (level + trend)
Market / Qualitative20Competitive position (1-5), client concentration, export exposure
Acquisition Signal10Owner age and succession context, treated as an acquisibility signal rather than a quality penalty

Decision thresholds: BUY ≥ 72, WATCH ≥ 38, PASS < 38. Both are configurable in config/settings.yaml.

One design choice worth explaining is the treatment of founder age. In most screening tools, an older founder reduces a company's score as a risk factor. Here it works the other way: an older founder without identified successors is treated as a positive acquisibility signal, because it increases the probability the owner is open to a conversation. Business quality and ownership context are scored separately and combined transparently.

Proprietary signals: Succession Signal, Owner Dependency, Integration Complexity
The three proprietary signal modules in the dashboard. Each produces a score out of 10, a label, and a list of specific signals detected from the input data.

Part 4: The Proprietary Modules

The three proprietary modules are the most analytically distinctive part of the framework. None of them exist as structured outputs in any comparable commercial tool for this market segment.

4.1 Succession Signal Detector

The Italian mid-market over the next decade will be shaped primarily by generational transitions. According to Cerved and Unioncamere estimates, more than 70,000 companies with revenues above €5M will face ownership changes driven by founders reaching retirement age without clear successors. The Succession Signal module quantifies this opportunity systematically from inputs that are either publicly available or easily obtained.

Score inputs: founder age · family members in governance · company age · stated motivation for sale
Output: score /10 + label (ALTO / MEDIO / BASSO) + signal list
Example: founder age 68, no family in board, company founded 1988, motivation = succession → Score: 10/10, ALTO

A target with a high succession signal and a strong financial profile is the ideal entry point for a proactive approach before the company reaches the formal M&A market, where competition and pricing will both be higher.

4.2 Owner Dependency Score

Many Italian SMEs appear profitable on paper but carry hidden fragility. Commercial relationships, technical knowledge, and supplier agreements are often concentrated in a single person: the founder. Post-acquisition, this translates into revenue risk and integration complexity that the financials do not reveal. The module scores this risk from available inputs including founder age and succession context, client concentration, export exposure, and competitive positioning.

The distinction between Succession Signal and Owner Dependency is intentional. A high Succession Signal means the owner is likely ready to sell. A high Owner Dependency Score means the business may be hard to run without them. A target can score high on both, and that combination is exactly where deal structure and earnout mechanics matter most.

4.3 Integration Complexity Index

Most M&A failures do not happen at screening. They happen post-close, when operational and commercial incompatibilities surface that were visible in advance but never measured. The Integration Complexity Index produces a preliminary estimate of how difficult an integration is likely to be, based on sector, client concentration, export footprint, and competitive positioning.

It is not a due diligence substitute. It is a prioritisation tool: a target with a high financial score and a high integration complexity score deserves more scrutiny before proceeding, not less.

Part 5: Valuation and Deal Feasibility

The valuation layer applies sector-calibrated EV/EBITDA multiples to produce a preliminary enterprise value range. Multiples are defined in the settings file and updated as market conditions change. The current calibration reflects observed transaction multiples in the Italian mid-market for the three target sectors.

SectorEV/EBITDA RangeEBITDA Margin BenchmarkMax Sustainable Leverage
Manufacturing4.5x - 8.0x10%3.5x EBITDA
Food & Agri5.5x - 9.0x12%3.0x EBITDA
Distribution / Logistics4.0x - 7.5x7%4.0x EBITDA

The feasibility module takes the EV midpoint and estimates how the transaction could be financed given the target's current leverage position. It outputs three debt capacity scenarios based on 2.5x, 3.5x, and 4.5x EBITDA, derives the corresponding equity required, and classifies the deal as FEASIBLE, STRETCHED, or HARD. One design decision worth noting: a negative PFN (net cash position) is treated as a structural positive rather than a penalty.

Valuation range and deal feasibility output
Valuation and feasibility section in the dashboard. The left card shows the EV range and implied equity value. The right card shows the feasibility classification, current leverage, and the three debt capacity scenarios.

Part 6: Acquirer Readiness Score

Most deal screening tools evaluate the target. Almost none evaluate the acquirer. This is a real gap: an attractive target approached by an unprepared acquirer produces a failed process, a broken relationship, or a deal that closes but destroys value. The Acquirer Readiness Score addresses this directly.

The module uses a separate Excel template completed by or for the acquirer and scores readiness across five dimensions.

DimensionMax PointsKey Inputs
Financial Capacity30Available equity, current leverage vs. maximum, covenant position, undrawn credit lines
Operational Capacity25Dedicated deal team size, integration experience, management bandwidth, ERP compatibility, synergy potential
M&A Track Record20Number of completed acquisitions, recency, historical outcome quality (1-5 scale)
Strategic Coherence15Sector focus definition, EBITDA target range, brand and reputation in the sector
Timing10Investment horizon, preferred deal structure flexibility

The output is a score from 0 to 100 with one of four labels: PRONTO (≥75), QUASI PRONTO (≥50), NON ANCORA PRONTO (≥30), or NON PRONTO (<30). The module also generates a list of positive signals and warnings to help identify which gaps should be addressed before approaching a target.

Used together, the target score and the acquirer readiness score produce a complete picture. Not just whether a company is worth acquiring, but whether this acquirer is actually ready to do it right now.

Part 7: Pipeline Management and Dashboard

All analysed targets can be saved to a local SQLite database and managed through the Streamlit dashboard. The dashboard has four sections: target analysis, acquirer readiness, pipeline, and shortlist.

Pipeline view with filters and ranking table
The pipeline section with interactive filters for decision label, feasibility status, minimum score, and succession signal. The ranking table shows all key metrics alongside each target so comparison is immediate.

The shortlist section has three views. Top Priority surfaces BUY + FEASIBLE targets. Succession Signal shows all targets with a succession score above 5/10, regardless of their financial rating, which is useful for proactive sourcing before companies reach the open market. The Confronto tab lets you place multiple targets side by side across all metrics.

Shortlist comparison view with multiple targets side by side
The comparison tab in the Shortlist section. Multiple targets can be selected and compared across all scoring dimensions in a single table.

The dashboard generates PDF reports in two formats. The executive summary is one page, designed for rapid review. The full report is multi-page and includes KPI tables, proprietary signal outputs, valuation ranges, feasibility assessment, and a free-text notes field. Both can be downloaded directly from the dashboard after analysis.

Part 8: Project Files and Setup

The framework runs locally on Windows, macOS, or Linux with Python 3.10+. Four libraries to install, one command to run.

File / FolderDescription
app.pyStreamlit dashboard with four sections: Analisi Target, Acquirente, Pipeline, Shortlist
main.pyCLI entry point for batch processing multiple targets
modules/Ten analytical modules: ingestion, kpi, scoring, valuation, feasibility, succession, owner_dependency, integration_complexity, acquirer_readiness, pdf_report
config/settings.yamlAll scoring weights, decision thresholds, sector multiples, and feasibility parameters, editable without touching code
data/ma_pipeline.dbLocal SQLite database, auto-created on first run, persists across sessions
company_template.xlsxInput template: Anagrafica, Financials (3 years), Qualitativo sheets
acquirer_template.xlsxAcquirer input template: Anagrafica, Capacita Finanziaria, Capacita Operativa, Storico M&A sheets
# Install dependencies
pip install streamlit pandas openpyxl pyyaml reportlab

# Launch dashboard
cd ma_framework
python -m streamlit run app.py

Part 9: Limitations and Next Steps

Data entry is still manual

The current version requires manual compilation of the Excel template. An enrichment module that scrapes public sources such as CCIAA, company websites, and XrayFinance and pre-fills the template is planned as the next development phase.

Scoring needs more calibration data

The thresholds are calibrated on sector benchmarks and a small number of real test cases. Running the framework on 30-50 real targets and comparing outputs against experienced deal judgment would produce more reliable calibration and surface any systematic biases in the current weights.

No return engine yet

The valuation layer produces an EV range but does not yet model the expected return across holding period scenarios. A Monte Carlo return engine modelling EBITDA evolution, exit multiple scenarios, and leverage paydown is the most analytically significant planned extension.

These are real constraints. They do not limit the framework's current utility for first-pass screening and pipeline management. The system produces consistent, comparable, and documented outputs across targets, which is precisely what the Italian mid-market M&A process currently lacks.

Read Also