def poisson_pipeline(infile, outfile, depth=8):
    """Makes a dictionary describing PDAL pipeline for generating Poisson
    surface mesh.

    Parameters
    -----------
    infile : str, path to file
        input file to be converted into a mesh
    outfile : str, path to file
        output file for storing Poisson surface mesh
    depth : int
        maximum depth of octree used to organize surface points

    Returns
    --------
    pipeline : dict
        recipe for executing PDAL pipeline
    """
    pipeline = {
        "pipeline": [
            infile, {
                "type": "filters.normal"
            }, {
                "type": "filters.poisson",
                "depth": depth,
                "density": "true"
            }, {
                "type": "filters.normal"
            },
            {
                "type": "writers.ply",
                "filename": outfile,
                "storage_mode": "default",
                "faces": "true"
            }
        ]
    }

    return pipeline